%version 2004-8-12 \documentclass{ltxdoc} \def\FigBib{{\rmfamily F\kern-.05em\lower-.35ex\hbox{\textsc{i\kern-.025em g}}\kern-.05em% B\kern-.05em\textsc{i\kern-.025em b}}} \title{The \FigBib\ - Package} \author{Jan Poland} \setlength{\parindent}{0mm} \setlength{\parskip}{1mm} \begin{document} \maketitle \begin{abstract} \noindent This document describes how to manage figure databases, using \BibTeX\ together with the \FigBib\ - Package. Some \FigBib\ features are: \begin{itemize} \item Store and manage figures in a \BibTeX\ database \item Include figures in your \LaTeX\ document with one short command \item Generate a List of Figures containing more/other information than the figure captions \item Control with one switch where to output the figures, either as usual float objects or in a separate part at the end of your document \end{itemize} \end{abstract} \section{Introduction and Quick Start} The \FigBib\ is designed for \LaTeX\ authors who have to organize many figures. In this case, it may not be convenient to manage all information in a ``low level" manner directly in the documents. Instead, it would be desirable to have a database which contains the images, corresponding captions and additional information in a bundled form. Then, a ``high-level" command is issued each time a figure needs to be included. \FigBib\ provides such a mechanism. If the user wants to include a figure with the label ``MyFigure:1" as a float object on the top of the page with a width of 5cm, then he writes \begin{verbatim} \fbEpsfig{MyFigure:1}{5cm}{t} \end{verbatim} The corresponding data for the figure, such as caption, name of the eps file etc., is stored in a \BibTeX\ data base. There, the entry could be for example \begin{verbatim} @fig{MyFigure:1, main = {This is the description/caption}, file = {myfigure1} } \end{verbatim} In order to process the information, the latex document must contain a \begin{verbatim} \usepackage{figbib} \end{verbatim} in the document header and a \begin{verbatim} \fbList{} \end{verbatim} at the end, which also generates a List of Figures. Then, the document is compiled with the command sequence \begin{verbatim} latex bibtex .figbib latex latex latex \end{verbatim} (The \texttt{latex} command is repeated until all cross-references have been updated correctly, for \FigBib\ this is the case after at most three runs.) \subsection{The Example File} Try the example file \texttt{figbib\_sample} provided with this package with the above command sequence. \section{Reference} \FigBib\ processes information on two levels: (1) the \emph{contents} of the figures, and (2) the \emph{float objects} containing the figures. For the latter, \FigBib\ gives the user the choice between usual float objects and a separate part at the end of the document. All commands and options for the \FigBib\ package are described in the following. \subsection{The \BibTeX\ Style} \DescribeMacro{@fig} \DescribeMacro{main} \DescribeMacro{add} \DescribeMacro{source} \DescribeMacro{caption} \DescribeMacro{file} There is only one entry type for the \FigBib-database, namely \texttt{@fig}. It has five fields: \begin{tabular}{l l l} \texttt{main} & (mandatory) & the main description/caption\\ \texttt{add} & (optional) & an additional description\\ \texttt{source} & (optional) & the source of the figure\\ \texttt{caption} & (optional) & a caption which (if it is defined) supersedes \texttt{main}\\ \texttt{file} & (mandatory) & the eps-file containing the figure \end{tabular} The user has options to control how these fields are used in the captions and the List of Figures. This is described in Section \ref{options}. An example entry for your database would be \begin{verbatim} @fig{Beatles:1968, main = {The Beatles on stage}, add = {Picture was probably taken at some performance in 1968}, source = {A nice book of mine}, file = {beatles1} } \end{verbatim} \DescribeMacro{\fbDirectory} If you store your figure files at a central place on your file system, you may set \verb+\fbDirectory+ to point there. This should be defined in the document header of your \LaTeX-document. For example, in a windows system, the command could read \begin{verbatim} \def\fbDirectory{c:/EPSpics/} \end{verbatim} \DescribeMacro{\figbibBst} You may change the default \BibTeX\ style file, which is \texttt{figbib.bst}, by redefining \verb+\figbibBst+. This should be done in the \LaTeX document header. One alternative \BibTeX\ style file, \texttt{figbib1.bst}, is already included in \FigBib. Put \begin{verbatim} \def\figbibBst{figbib1} \end{verbatim} in your document header in order to apply it. Then the fields \texttt{main1}, \texttt{add1}, \texttt{source1}, and \texttt{caption1} are used instead of \texttt{main}, \texttt{add}, \texttt{source}, and \texttt{caption}. Thus you can maintain your database in two \emph{different languages}, e.g.\ the default fields \texttt{main} etc.\ containing English and the alternative fields \texttt{main1} etc.\ containing German entries. \subsection{Including a Figure}\label{include} There are two ways to include a figure from the database to your document: (1) with a single command defining the figure and the surrounding (float) environment simultaneously, and (2) including the figure without defining the environment. The former method is clearly shorter. On the other hand, the latter allows you to have more than one figure in a float environment. \DescribeMacro{\fbEpsfig} \DescribeMacro{\fbEpsfigM} In order to include a figure and at the same time define the environment, use e.g. \begin{verbatim} \fbEpsfig{Beatles:1968}{8cm}{t!} \end{verbatim} Then the figure with the label \texttt{Beatles:1968} is included, the width of the figure is set to 8cm, and (as default) a float environment is generated and placed at the top of the current page (\texttt{t!}). The width of the caption would be the whole text width. Use \verb+\fbEpsfigM+ instead of \verb+\fbEpsfig+ to restrict the caption width to the figure width (\texttt{M} stands for \emph{minipage}). \DescribeMacro{\fbEps} \DescribeMacro{\fbEpsM} \DescribeMacro{\fbhspace} \DescribeMacro{\fbhfill} If you want to include more than one figure in an environment, you can use for example the following command sequence: \begin{verbatim} \begin{fbFloat}[b] \fbEpsM{Beatles:1968}{5cm} \fbhspace{2cm} \fbEpsM{Beatles:1969}{5cm} \end{fbFloat} \end{verbatim} There, \verb+\fbEpsM+ includes the figure and sets the caption width to the figure width -- \verb+\fbEps+ would set the caption width to the text width instead. \verb+\fbhspace+ inserts a horizontal space, you could also use \verb+\fbhfill+ (without argument) for a horizontal fill. \DescribeMacro{fbFloat} The environment is here defined by \begin{verbatim} \begin{fbFloat}[b] ... \end{fbFloat} \end{verbatim} where the positioning parameter \texttt{[b]} is optional. This \FigBib-environment is \emph{flexible}: As default, it causes the generation as a usual float object. However, if you set the option \texttt{xpart} (see Sections \ref{xpart} and \ref{options}), then the figure is generated in an extra part (usually) at the end of the document. If the usual \texttt{figure} environment is used instead of \texttt{fbFloat}, i.e. \begin{verbatim} \begin{figure} ... \end{figure} \end{verbatim} then a float object is \emph{always} created. This may be useful if you want to have usual float objects and extra figure parts simultaneously in a document. Note that \verb+\fbEpsfig+ and \verb+\fbEpsfigM+ also internally generate an \texttt{fbFloat}-environment. \DescribeMacro{\fbCaptionStyle} You may set the caption style by redefining \verb+\fbCaptionStyle+, e.g. \begin{verbatim} \def\fbCaptionStyle{\small\itshape} \end{verbatim} The default style is empty, i.e.\ the same as the text style. \subsection{Extra Figure Parts}\label{xpart} \DescribeMacro{option xpart} \DescribeMacro{\fbTheFigs} If you pass the option \texttt{xpart} to \FigBib\ (compare Sections \ref{include} and \ref{options}), then all figures in \texttt{fbFloat}-environments are moved to one or more \emph{extra figure parts}. Note that also \verb+\fbEpsfig+ and \verb+\fbEpsfigM+ implicitly generate \texttt{fbFloat} environments. An extra figure part is invoked by \begin{verbatim} \fbTheFigs \end{verbatim} and causes the output of all figures which were defined up to this command. You can give \verb+\fbTheFigs+ multiple times, creating several figure parts in your document. \DescribeMacro{\fbvspace} In the figure part, figures are created in the order they appear in the document. You may include a \verb+\fbvspace+ command before or after a figure inside the \texttt{fbFloat} environment, e.g.\ \verb+\fbvspace{1cm}+. This causes a vertical space before/after the respective figure. The command is ignored if the option \texttt{xpart} is not given. \DescribeMacro{\figbibskip} \DescribeMacro{\figbibcskip} In the figure parts, you may redefine the space \verb+\figbibskip+ between subsequent figures, e.g.\ \verb+\setlength{\figbibskip}{1cm}+. Similarly, you can redefine the space \verb+\figbibcskip+ between the figures and the corresponding captions. \DescribeMacro{option xplate} If you are using floats \emph{and} figure parts together in one document, they should not be referred to as the same type, e.g.\ both as a ``figure". In this case, you should declare the option \texttt{xplate}, causing that the figures in the extra part are referred to as ``plates" rather than ``figures". \DescribeMacro{fbMinipage} If you want to create a \emph{minipage} inside an \texttt{fbFloat} environment, you should use the \texttt{fbMinipage} environment instead of the usual \texttt{minipage}. It takes one argument, namely the width of the minipage, e.g. \begin{verbatim} \begin{fbMinipage}{\textwidth}...\end{fbMinipage} \end{verbatim} If the \texttt{xpart} option is set, then the fbMinipages are correctly moved to the figure parts. (The only use of a minipage I can think of in this context is for having two or more figures in one row, when you want to avoid the constraint that some caption width equals the figure width.) \subsection{The List of Figures} \DescribeMacro{\fbList} At any point of the document, you can output the List of Figures by giving the command \begin{verbatim} \fbList{} \end{verbatim} where \texttt{} is your figure \BibTeX-database (without the .bib extension). You \emph{must} include this command \emph{exactly once} in your document. \DescribeMacro{\figbibListHeader} Usually, \verb+\fbList+ generates a starred (i.e.\ without numbering) chapter or section ``List of Figures", depending on your document type. However, if you define \verb+\figbibListHeader+ to be empty by including \verb+\def\figbibListHeader{}+ in your document, then no chapter/section is generated (while the list is still generated). \DescribeMacro{\fbListStyle} \DescribeMacro{\figbibhang} \DescribeMacro{\figbibsep} The layout of the List of Figures can be adjusted by redefining the style, the hang, and the separation space, e.g.\ \verb+\def\fbListStyle{\footnotesize}+, \verb+\setlength{\figbibhang}{5mm}+ and \verb+\setlength{\figbibsep}{1ex}+. \subsection{References} \DescribeMacro{\fbref} \DescribeMacro{\fbpageref} Use the commands \verb+\fbref+ and \verb+\fbrefpage+ to refer to figures. They generate complete references, not only numbers. For example, \verb+\fbref{Beatles:68}+ might create ``Fig.~14", and \verb+\fbpageref{Beatles:68}+ might generate ``p.~33". \subsection{Strings and Languages}\label{strings} \DescribeMacro{\figbibListHeader} \DescribeMacro{\figbibPage} \DescribeMacro{\figbibFig} \DescribeMacro{\figbibPlate} \DescribeMacro{\figbibFrom} \FigBib\ defines the following strings. \begin{tabular}{l l l} \emph{command} & \emph{description} & \emph{default}\\ \verb+\figbibListHeader+ & Header of the L.o.F. chapter/section & List of Figures\\ \verb+\figbibPage+ & string/abbreviation for ``page" & p.\\ \verb+\figbibFig+ & string/abbreviation for ``figure" & Fig.\\ \verb+\figbibPlate+ & string/abbreviation for ``plate" & Plate\\ \verb+\figbibFrom+ & string/abbreviation for ``from" & From\\ \end{tabular} You may redefine these strings, e.g.\ by \verb+\def\figbibFig{Abb.}+. Thus \FigBib\ can be adjusted to different \emph{languages}. As already mentioned, set \verb+\figbibListHeader+ to empty in order to prevent the List of Figures chapter/section from being generated (the list is still generated). \subsection{Options}\label{options} \FigBib can be controlled with a number of options. They are given at the \verb+\usepackage{figbib}+ command, e.g.\ by \begin{verbatim} \usepackage[center,nopages,xpart]{figbib} \end{verbatim} \DescribeMacro{center} \DescribeMacro{nopics} There are options controlling the \emph{figures}: \begin{tabular}{l l} \texttt{center} & Figures and captions are centered instead of left-aligned.\\ \texttt{nopics} & Pictures are \emph{not} included. This is for faster draft viewing. \end{tabular} \DescribeMacro{nopages} \DescribeMacro{nosource} \DescribeMacro{addcaption} \DescribeMacro{nocaption} \DescribeMacro{maincaption} There are options controlling the \emph{captions} and \emph{List of Figure entries}. If no options are given, the following default is used. The caption is set to the field \texttt{caption} if defined and \texttt{main} otherwise. The List of Figures entry is set to ``Fig.~[number] (p.~[page number])", followed by \texttt{main}, followed by \texttt{add} (if defined), followed by ``From: \texttt{source}" (if defined). \begin{tabular}{l l} \texttt{nopages} & Page numbers are suppressed in the List of Figures.\\ \texttt{nosource} & Source is not given in List of Figures.\\ \texttt{addcaption} & \texttt{add} field is included to caption.\\ \texttt{nocaption} & No caption is generated at all, only figure number.\\ \texttt{maincaption} & \texttt{caption} field is not used. \end{tabular} \DescribeMacro{xpart} \DescribeMacro{xplate} There are options controlling the \emph{extra figure parts}: \begin{tabular}{l l} \texttt{xpart} & \texttt{fbFloat} environments are moved to extra figure part(s), see Sec. \ref{xpart}.\\ \texttt{xplate} & Figures in \texttt{fbFloat} environments are referred to as ``plates"\\ & instead of ``figures". \end{tabular} \DescribeMacro{german} The option \texttt{german} sets the strings defined in Section \ref{strings} to German language counterparts. Support of other languages is planned in the future. \subsection{\LaTeX-Macros in the figure database} Using \LaTeX-macros in the figure database entries (e.g.\ in the \texttt{main} field) generally causes problems. However, you can use the following macros: \begin{itemize} \item\verb+\"+, e.g.\ for German Umlaut characters \item\verb+~+ for spaces without line break \item\verb+\emph+ and \verb+\em+ for emphasized text \item\verb+\textit+ and \verb+\it+ for italics \item\verb+\textbf+ and \verb+\bf+ for bold face \item\verb+\textsc+ and \verb+\sc+ for small caps \item\verb+\texttt+ and \verb+\tt+ for typewriter font \end{itemize} If required, you can include further admissible macros by extending the definition of \verb+\figbib@noexpands+ in the \FigBib\ style file. \subsection{Extras} \DescribeMacro{fbForce} If you suppress pictures using the option \texttt{nopics}, you can still force \FigBib\ to include certain pictures. All you have to do is to surround the picture(s) by an \texttt{fbForce} environment, i.e. \begin{verbatim} \begin{fbForce} ... \fbEpsfig{...} ... \end{fbForce} \end{verbatim} \DescribeMacro{\FigBib} \verb+\FigBib+ produces the output \FigBib. \end{document}