# General considerations

In the following, "Depends", "dependency", etc. also implies "Recommends", "Suggests", or "Build-Depends", whatever applies to a particular situation.

## Buggy teTeX dependencies

Depending on tetex-base is almost always a bug. The package only provides input files, but no functionality for a user. Most packages should depend on tetex-bin instead, unless they do not need any of the "engines" (binaries, in particular `/usr/bin/latex`) and formats provided by tetex-bin. See below...

## Mapping files vs. mapping packages

Unfortunately, a simple rule like "Replace 'tetex-bin' by 'tetex-bin | texlive-latex-base'" cannot be given. The reason for this is the much finer granularity of the TeXlive packages (many teTeX bugs also request finer splitting, but this has never been implemented), and the actually buggy splitting scheme of teTeX: Things that are a required part of the LaTeX distribution ought not to be in an -extra package.

The consequence is that Depends: tetex-bin, tetex-extra might be equivalent to Depends: texlive-latex-base as well as Depends: texlive-latex-recommended, texlive-latex-extra, texlive-fonts-recommended or even more.

In order to figure out which dependencies are actually needed, one must therefore look at the (La)TeX code which is contained, generated etc. by the package, check which files are loaded, and determine the TeXlive packages which provide these files.

As near as possible to a cookbook receipe for finding the needed packages is the following procedure:

• Build the document with latex/pdflatex etc with the option `-recorder`. This will output (nearly) all files which are used.
• Take a look at the generated .fls file, and grep out the filenames in lines starting with `INPUT`.
• Call dlocate for each of these files to find the packages these files are in.
• `sort -u`

## Order of alternative dependencies: Which first?

Generally, since TeXlive is the more up-to-date TeX system, it should be preferred, and the TeXlive packages should be listed first, like this:

`Depends: texlive-latex-base | tetex-bin`
This is also true for `etch`. However, for uploads targetted at `etch`, maintainers who are unfamiliar with TeXlive and fear to introduce incomplete dependencies should consider putting teTeX first. This will ensure that the default selection when installing the package is the tested one which is known to work. We have asked the release team to not treat such bugs as release-critical, or grant an `etch-ignore` tag if the combination of dependencies listed first is correct.

# A receipe for mapping packages

## Packages that include LaTeX documents or snippets to create LaTeX documents

In the following, we are only dealing with LaTeX code. Packages that use plain TeX, ConTeXt or other formats are very rare and not covered here. In the case of packages shipping snippets of LaTeX code, the individual snippets can be treated independently.

The command to load additional files and activate their functions in a LaTeX document is

`\usepackage[<optional arguments>]{<packagename>}`
This will load the file <packagename>.sty. Documents without such directives only need ```tetex-bin | texlive-latex-base```. Otherwise, the maintainer has to figure out by which TeXlive package the loaded files are installed and add these packages as dependencies. This can be done by querying http://www.de.debian.org/distrib/packages#search_packages or grepping through a copy of http://ftp.debian.org/debian/dists/unstable/Contents-i386.gz, for example with the extended `findpkg` script available on people.debian.org.

Some styles that are in texlive-latex-base switch the document to fonts that are packaged in texive-fonts-recommended. From such documents, DVI files can be created without problems, but for PostScript or PDF output, texive-fonts-recommended is needed.

## Packages that provide additional LaTeX styles

If a package provides additional style files for LaTeX, the maintainer must check which other style files are loaded by these additional styles. Note that files cannot only be loaded in the <packagename>.sty file, but also in any files it includes - common extensions are .tex or .cfg.

In style files, \RequirePackage is used instead of \usepackage.

## Packages that provide additional formats

The file that determines format generation is usually called <formatname>.ini. The command to load other files is \input, and these input commands can be nested.

## Packages that provide TeX fonts, additional hyphenation patterns etc.

These packages do not need to depend on a TeX system. See the Debian TeX Policy for details.

# A receipe for packages using texinfo

Packages which use texinfo and want to generate PDF or PS files should Depend or Build-Depend on exactly the TeX-specific packages which are suggested by the texinfo package in unstable