Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I would like to make a LaTeX package with the following subdirs:

  • tex/latex/common (a common .tex file shared among beamer and letter)
  • tex/latex/resources (lots of pdf and eps files with graphical resources)
  • tex/latex/mybeamer (a custom beamer theme with 5 .sty files)
  • tex/latex/myletter (a .cls file for a letter template)

I would like to package these files into a single LaTeX package that users could install in an easy way. I read about the .ins and .dtx files and I can see how to pack the .sty and .cls files but what about the extra graphics - the resources folder which contains several PDF and .eps files?

share|improve this question
Welcome to TeX.sx! I am using ctanify. Here you can see my makefile: github.com/marcodaniel/mdframed/blob/master/Makefile#L222 –  Marco Daniel Apr 12 '13 at 10:44
Depends exactly what you want to do. As .eps files are ASCII, you can include them in a .dtx (I do in chemstyle, for example). –  Joseph Wright Apr 12 '13 at 10:49
If you look at the beamer core, you'll see it's subdivided within tex/latex/beamer, but that is because there are lots of files. You don't necessarily need to do that for a smaller bundle. –  Joseph Wright Apr 12 '13 at 11:26
add comment

3 Answers

up vote 20 down vote accepted

TDS structure

Assuming your LaTeX package is called foobar. Then according to TDS (A Directory Structure for TeX files) the files would go below the following Directories:

  • TDS:tex/latex/foobar/ (for TeX files: .tex, .sty, images)
  • TDS:doc/latex/foobar/ (for documentation files)
  • TDS:source/latex/foobar/ (for source files .dtx, .ins)

Further subdirectories are up to you. I would avoid them, if there are few files only. If there are many files, then further directory levels might help to organize the files.


  • TDS:doc/latex/foobar/foobar.pdf
  • TDS:source/latex/foobar/foobar.dtx
  • TDS:source/latex/foobar/foobar.ins
  • Other source files that are not provided in the .dtx file can be given in:
    TDS:source/latex/foobar/ or
  • TDS:tex/latex/foobar/foobar.cls
  • TDS:tex/latex/foobar/foobar-common.sty (The TeX file for the letter class and beamer templates)
  • TDS:tex/latex/foobar/<foobar beamer file 1>,
    TDS:tex/latex/foobar/<foobar beamer file 2>,
    TDS:tex/latex/foobar/<foobar beamer file 5>
  • TDS:tex/latex/foobar/resources/<.eps/.pdf image files>

If you additionally provide a README file, then I would use this name exactly (AFAIK CTAN convention) and put it in the doc or source subtree, depending on the contents of the file.

Distribution form

For the distribution I would put these files including the directory structure in a .zip file foobar.tds.zip (without the TDS:/temxf root). Then the installation is quite easy for the user, who can easily install by unzipping. Installation example for default home tree in Linux/TeX Live:

$ unzip foobar.tds.zip -d ~/texmf/

In case the package is installed in a system wide local texmf tree, the file name database needs to be updated (under root):

$ texhash


$ mktexlsr


A suggestion for the CTAN form, if you want to provide it there:

  • CTAN:macros/latex/foobar/foobar.dtx
  • CTAN:macros/latex/foobar/foobar.ins
  • CTAN:macros/latex/foobar/foobar.pdf (documentation)
  • (CTAN:macros/latex/foobar/README)
  • CTAN:macros/latex/foobar/resources.zip (or unzipped in directory resources/)
  • CTAN:install/macros/latex/foobar.tds.zip
share|improve this answer
add comment

In the TeX Directory Structure (TDS) the directory names under tex/latex are a global shared resource so you need to not take too many and choose names that are unique to your package. So tex/latex/resources and tex/latex/common would not be good names (and I suspect wouldn't be accepted if you were to try to get the package included into a distribution such as texlive).

beamer and letter both share the same input path for tex files so there is no need to separate your beamer and letter files.

share|improve this answer
Yes. I agree - I will fix the folder names and make them quite unique to avoid any clashes with other packages. –  remus Apr 12 '13 at 11:09
add comment

Here is the TeX Directory Structure way. Pick a name for your bundle.

  • Put TeX files that could be used in any format in tex/generic/bundlename
  • Put LaTeX files like classes and packages in tex/latex/bundlename
  • Put graphics resources in tex/generic/images/bundlename
  • Put documentation in doc/latex/bundlename
  • Put docstrip sources in source/latex/bundlename

You'll see a lot of these in use if you look inside, for instance, the pgf distribution. Then the install process is just to cp -R the directories into a texmf tree.

share|improve this answer
add comment

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.