Frequently Asked Question List for TeX


Bits of document from other directories

A common way of constructing a large document is to break it into a set of files (for example, one per chapter) and to keep everything related to each of these subsidiary files in a subdirectory.

Unfortunately, TeX doesn’t have a changeable “current directory”, so that all files you refer to have to be specified relative to the same directory as the main file. Most people find this counter-intuitive.

It may be appropriate to use the “path extension” technique used in temporary installations to deal with this problem. However, if there several files with the same name in your document, such as chapter1/fig1.eps and chapter2/fig1.eps, you’re not giving TeX any hint as to which you’re referring to when in the main chapter file you say \input{sect1}; while this is readily soluble in the case of human-prepared files (just don’t name them all the same), automatically produced files have a way of having repetitious names, and changing them is a procedure prone to error.

The import package comes to your help here: it defines an \import command that accepts a full path name and the name of a file in that directory, and arranges things to “work properly”. So, for example, if /home/friend/results.tex contains

Graph: \includegraphics{picture}

then \import{/home/friend/}{results} will include both graph and explanation as one might hope. A \subimport command does the same sort of thing for a subdirectory (a relative path rather than an absolute one), and there are corresponding \includefrom and \subincludefrom commands.

The chapterfolder package provides commands to deal with its (fixed) model of file inclusion in a document. It provides commands \cfpart, \cfchapter, \cfsection and \cfsubsection, each of which takes directory and file arguments, e.g.:

\cfpart[pt 1]{Part One}{part1}{part}

which command will issue a “normal” command \part[pt 1]{Part One} and then input the file part1/part.tex, remembering that part1/ is now the “current folder”. There are also commands of the form \cfpartstar (which corresponds to a \part* command).

Once you’re “in” a chapterfolder-included document, you may use \cfinput to input something relative to the “current folder”, or you may use \input, using \cfcurrentfolder to provide a path to the file. (There are also \cfcurrentfolderfigure for a figure/ subdirectory and \cfcurrentfolderlistings for a listings/ subdirectory.)

Documentation of chapterfolder is in French, but the README in the directory is in English.

FAQ ID: Q-docotherdir