.fd files

David Carlisle twg-tds@mail.tug.org
Wed, 13 Nov 1996 10:48:44 GMT


> 1) .fd and font .sty files
> -- do we need to say something about them?  Probably.  But what?

Probably not.
It would have been possible to install `fd' files in a tree mimicking
the tfm tree to which they relate however I see no evidence of people
wanting to do that in practice.

I think people install all the `fd' files coming with latex/base in
tex/latex/base just like any other TeX input file. If that is the case
you may as well just regard `fd' files like other LaTeX input files.

In a way this is a shame as the fd files really tell TeX
something about the fonts available on the system in a form that could
be useable to other formats, not just LaTeX, but as there is no
evidence of anyone doing this for other formats may as well just
consider them as LaTeX files.

Incidentally the new docstrip for the Christmas release will be `TDS
ready' I am not sure how much it will be used in practice (mainly
problems with TeX not being able to create directories) but in
principle a site maintainer will be able to ask that files written by
docstrip will be written straight to TDS (or other places, but TDS is
set up) instead of the current directory. The master .ins files in the
LaTeX base distribution (for instance) all specify \usedir{tex/latex/base}
This is ignored by default but a configuration file may `enable'
this support so that files are written there not to the current
directory:  (\newcommand\ds{\textsf{docstrip}} )
I've just noticed after including this segment that it claims the
makeindex directory is `makeindex' which is too long although that's
what it is in teTeX.

David

% \section{Configuring \ds}
% \subsection{Selecting output directories}
% \changes{2.3e}{1996/09/19}{Added documentation}
%    Inspired by a desire to simplify reinstallations of \LaTeXe{} and
%    to support operating systems which have an upper limit on the
%    number of files allowed in a directory, \ds\ now allows
%    installation scripts to specify output directories for files it
%    creates. We suggest using TDS (\TeX\ directory structure) names
%    of directories relative to \texttt{texmf} here. However these
%    names should be thought of as a labels rather than actual names
%    of directories. They get translated to actual system-dependent
%    pathnames according to commands contained in a configuration file
%    named \texttt{docstrip.cfg}.
%
%    The configuration file is read by \ds{} just before it starts to
%    process any batch file commands.
%
%    If this file is not present \ds{} uses some default settings which
%    ensure that files are only written to the current directory.
%    However by use of this configuration file, a site maintainer can
%    `enable' features of \ds{} that allow files to be written to
%    alternative directories.
%
% \DescribeMacro{\usedir}
%    Using this macro package author can tell where a file should be
%    installed. All |\file|s generated in the scope of that
%    declaration are written to a directory specified by its one
%    argument. For example in \LaTeXe{} installation following
%    declarations are used:
%\begin{verbatim}
%    \usedir{tex/latex/base}
%    \usedir{makeindex}
%\end{verbatim}
%    And standard packages use
%\begin{verbatim}
%    \usedir{tex/latex/tools}
%    \usedir{tex/latex/babel} 
%\end{verbatim}
%    etc.
%
% \DescribeMacro{\showdirectory}
%    Used to display directory names in messages. If some label is not
%    defined it expands to |UNDEFINED (label is ...)| otherwise to a
%    directory name. It is probably a good idea for every installation
%    script to display at startup list of all directories that would
%    be used and asking user to confirm that.
%
%    The above macros are used by package/installation script
%    author. The following macros are used in a configuration file,
%    |docstrip.cfg|, by a system administrator to
%    describe her/his local directory structure.
%
% \DescribeMacro{\BaseDirectory} This macro is administrator's way of
%    saying ``yes, I want to use that directories support of
%    yours''. \ds{} will write only to current directory unless your
%    config has a call to this macro. (This means \ds{} won't write to
%    random directories unless you tell it to, which is nice.) Using
%    this macro you can specify a base directory for \TeX-related
%    stuff. E.g., for many Unix systems that would be
%\begin{verbatim}
%    \BaseDirectory{/usr/local/lib/texmf}
%\end{verbatim}
%    and for standard em\TeX{} installation 
%\begin{verbatim}
%    \BaseDirectory{c:/emtex}
%\end{verbatim}
%
% \DescribeMacro{\DeclareDir} 
%    Having specified the base directory you should tell \ds{} how to
%    interpret labels used in |\usedir| commands. This is done with
%    |\DeclareDir| with two arguments. The first is the label and the
%    second is actual name of directory relative to base
%    directory. For example to teach \ds{} using standard em\TeX{}
%    directories one would say:
%\begin{verbatim}
%    \BaseDirectory{c:/emtex}
%    \DeclareDir{tex/latex/base}{texinput/latex2e}
%    \DeclareDir{tex/latex/tools}{texinput/tools}
%    \DeclareDir{makeindex}{idxstyle}
%\end{verbatim}
%    This will cause base latex files and font descriptions to be
%    written to directory |c:\emtex\texinput\latex2e|, files of
%    \texttt{tools} package to |c:\emtex\texinput\tools| and makeindex
%    files to |c:\emtex\idxstyle|.
%
%    Sometimes it is desirable to put some files outside of the base
%    directory. For that reason |\DeclareDir| has a star form
%    specifying absolute pathname. For example one could say
%\begin{verbatim}
%    \DeclareDir*{makeindex}{d:/tools/texindex/styles}
%\end{verbatim}
%
%    \DescribeMacro{\UseTDS}
%    Users of systems conforming to TDS may well ask here ``do I
%    really need to put a dozen of lines like
%\begin{verbatim}
%    \DeclareDir{tex/latex/base}{tex/latex/base}
%\end{verbatim}
%    in my config file''. The answer is |\UseTDS|. This macro causes
%    \ds{} to use labels themselves for any directory you haven't
%    overriden with |\DeclareDir|. The default behaviour is to raise
%    an error on undefined labels because some users may want to know
%    exactly where files go and not to allow \ds{} to write to random
%    places. However I (MW) think this is pretty cool and my
%    config says just (I'm running te\TeX{} under Linux)
%\begin{verbatim}
%    \BaseDirectory{/usr/local/teTeX/texmf}
%    \UseTDS
%\end{verbatim}
%
%    Important thing to note here is that it is impossible to create a
%    new directory from inside \TeX{}. So whatever way you configure
%    \ds{} you need to create all needed directories before running
%    installation. It is probably a good idea for authors to begin
%    every installation script by displaying a list of directories
%    that will be used and asking user if he's sure all of them
%    exist. You can see an example of this in \LaTeXe{} installation
%    routine. 
%
%    Since file name syntax is OS specific \ds{} tries to guess it
%    from the current directory syntax. It should succeed for Unix,
%    MSDOS, Macintosh and VMS. However \ds{} will only initially
%    know the current directory syntax if it is used with \LaTeX{}
%    If used with plain\TeX\ or initex it will not have this
%    information\footnote{Except when processing the main
%    \texttt{unpack.ins} batch file for the \LaTeX\ distribution, which
%    takes special measures so that initex can learn the directory
%    syntax.}.
%    If you often use \ds{} with formats other than \LaTeX\ you should
%    \emph{start} the file |docstrip.cfg| with a definition of
%    |\WriteToDir|.  E.g.,
%   |\def\WriteToDir{./}| on MSDOS/Unix,
%   |\def\WriteToDir{:}| on Macintosh,
%   |\def\WriteToDir{[]}| on VMS.
%  
%    If your system requires something
%    completely different you can define in |docstrip.cfg| macros
%    |\dirsep| and |\makepathname|. Check for their definition in the
%    implementation part. If you want some substantially different
%    scheme of translating |\usedir| labels into directory names try
%    redefining macro |\usedir|. 
%
% \subsection{Setting maximum numbers of streams}
%
% \DescribeMacro{\maxfiles}
%    In support of some of the more obscure operating systems, there's
%    a limit on the number of files a program can have open.  This can
%    be expressed to \ds\ through the |\maxfiles| macro.  If the number
%    of streams \ds\ is allowed to open is $n$, your configuration file
%    can say |\maxfiles{|$n$|}|, and \ds\ won't try to open more files
%    than this.  Note that this limit won't include files which are
%    already open.  There'll usually be two of these: the installation
%    script which you started, and the file |docstrip.tex| which it
%    included; you must bear these in mind yourself.  \ds\ assumes
%    that it can open at least four files before it hits some kind of
%    maximum: if this isn't the case, you have real problems.
%
% \DescribeMacro{\maxoutfiles}
%    Maybe instead of having a limit on the number of files \TeX\ can
%    have open, there's a limit on the number of files it can write
%    to (e.g., \TeX\ itself imposes a limit of 16~files being written
%    at a time).  This can be expressed by saying |\maxoutfiles{|$m$|}|
%    in a configuration file.  You must be able to have at least one
%    output file open at a time; otherwise \ds\ can't do anything at
%    all.
%
%    Both these options would typically be put in the |docstrip.cfg|
%    file.
%
%