% \iffalse %% Package `export' to use with LaTeX 2e %% Copyright (C) 1996, 1997, 1998, 1999 Jean-Pierre F. Drucbert, all rights reserved %% %% You may use and distribute this file freely, provided that %% you don't pretend that you wrote it. % % It may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.1 % of this license or (at your option) any later version. % The latest version of this license is in % http://www.latex-project.org/lppl.txt % and version 1.1 or later is part of all distributions of LaTeX % version 1999/06/01 or later. % %\NeedsTeXFormat{LaTeX2e}[1996/06/01] %\ProvidesPackage{export} % [2000/10/16 v1.8 Exportation of LaTeX registers (JPFD)] % %<*driver> \documentclass{ltxdoc} \GetFileInfo{export.sty} \def\filedate{2000/10/16} \def\fileversion{v1.8} \usepackage{array,multicol} \EnableCrossrefs %\DisableCrossrefs % Say \DisableCrossrefs if index is ready \RecordChanges % Gather update information \CodelineIndex % Index code by line number \title{The \pkg{export} package} \author{Jean-Pierre F. Drucbert\\\texttt{drucbert@onecert.fr}}% \date{\filedate} \def\bs{\texttt{\char'134}} \newlength{\clw}\setlength{\clw}{0.39\textwidth} \let\pkg\textsf \begin{document} \maketitle \DocInput{export.dtx} \end{document} % % \fi % % \CheckSum{271} % % \changes{v1.0}{20 Sep 96}{First officially released version.} % \changes{v1.1}{18 Jul 97}{Corrected two nasty bugs.} % \changes{v1.2}{12 Sep 97}{Added exporting of lengths \cs{topmargin} % and \cs{topskip}. % Added comment on \cs{ExportLength}.} % \changes{v1.3}{12 Sep 97, pm}{Typos corrected in documentation, index on 2 columns.} % \changes{v1.4}{17 Oct 97}{Added optionnal argument to % \cs{openexport} and \cs{Import} to specify a file extension. % Added new parameters in \cs{ExportPageLayout}.} % \changes{v1.5}{18 Oct 97}{Added \cs{ExportParameter}. % Hence improved \cs{ExportPageLayout}. Added \cs{ExportArrayParams}.} % \changes{v1.6}{03 Aug 99}{Added LPPL license. Minor corrections.} % \changes{v1.7}{03 Sep 99}{Added \cs{ExportMuskip}.} % \changes{v1.8}{16 Oct 2000}{Added \cs{ExportIf}.} % % \DoNotIndex{\@Mii,\@Miv,\@cons,\@currlist,\@dblarg,\@dbldeferlist} % \DoNotIndex{\@dblfloat,\@dottedtocline,\@eha,\@Esphack,\@float} % \DoNotIndex{\@floatpenalty,\@ifnextchar,\@ifundefined,\@latexerr} % \DoNotIndex{\@mkboth,\@namedef,\@nameuse,\@parboxrestore,\@spaces} % \DoNotIndex{\@starttoc,\@tempa,\@tempboxa,\@tempdima,\@warning} % \DoNotIndex{\addcontentsline,\addtocounter,\advance,\arabic,\bfseries} % \DoNotIndex{\bgroup,\box,\chapter,\columnwidth,\csname,\def,\dimen,\docdate} % \DoNotIndex{\edef,\egroup,\else,\endcsname,\endinput,\expandafter,\fi} % \DoNotIndex{\filedate,\fileversion,\global,\hbadness,\hbox,\hfil,\hrule} % \DoNotIndex{\hsize,\ht,\if@twocolumn,\ifdim,\iffalse,\ifnum,\iftrue,\ifvbox} % \DoNotIndex{\ifx,\ignorespaces,\intextsep,\kern,\let,\long,\moveleft,\newbox} % \DoNotIndex{\newcommand,\newcounter,\newif,\newsavebox,\noexpand,\normalsize} % \DoNotIndex{\numberline,\PackageError,\PackageWarning,\par,\parindent} % \DoNotIndex{\penalty,\prevdepth,\protect,\refstepcounter,\relax} % \DoNotIndex{\renewcommand,\rmfamily,\section,\setbox,\setcounter,\space} % \DoNotIndex{\textheight,\the,\typeout,\unvbox,\uppercase,\vadjust,\value} % \DoNotIndex{\vbox,\vrule,\vskip,\vspace,\wd,\z@} % % \begin{abstract} % This package\footnote{% % \begin{tabular}[t]{l} % Copyright \copyright\ 1996, 1997, 1998, 1999, 2000, 2001 by\\ % Jean-Pierre F. Drucbert\vphantom{bp}\\ % ONERA/Centre de Toulouse SRI\vphantom{bp}\\ % Office National d'\'Etudes et de Recherches A\'erospatiales\vphantom{bp}\\ % Centre de Toulouse\vphantom{bp}\\ % Service R\'eseaux et Informatique\vphantom{bp}\\ % Complexe Scientifique de Rangueil\vphantom{bp}\\ % \\ % 2, Avenue \'Edouard Belin\vphantom{bp}\\ % BP 4025 F-31055 TOULOUSE CEDEX\vphantom{bp}\\ % FRANCE\vphantom{bp}\\ % \vphantom{bp}\\ % Email: \texttt{drucbert@onecert.fr}\vphantom{bp}\\ % \end{tabular}} % allows you to export or import the values of various \LaTeX\ % registers like counters and lengths (rigid or rubber). This could be % useful to fabricate ``composite'' documents or to pass some data % from a document to another one. % \end{abstract} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \section{The \pkg{export} package} % This package is designed to transmit data of type \meta{counter} or % \meta{length} % from a \LaTeX\ document to another. You must be aware % that this package must be used \emph{with extreme care}. % The passing of data is done via a file. A first document % \emph{exports} the data by invoking the following sequence of commands: % \DescribeMacro{\openexport} % \DescribeMacro{\closeexport} % \DescribeMacro{\Export} % \DescribeMacro{\ExportLength} % \DescribeMacro{\PreciseExportLength} % \DescribeMacro{\ExportMuskip} % \DescribeMacro{\ExportParameter} % \DescribeMacro{\ExportIf} % \begin{multicols}{2}\small % \setlength{\columnseprule}{.4pt} % \begin{quotation}\ttfamily\noindent % \bs openexport[\meta{extension}]\{\meta{file}\}\\ % \bs Export\{\meta{counter}\}\\ % \bs Export\{\meta{counter}\}\\ % \qquad.\\ % \qquad.\\ % \qquad.\\ % \bs ExportLength\{\meta{length}\}\\ % \bs PreciseExportLength\{\meta{length}\}\\ % \bs ExportMuskip\{\meta{muskip}\}\\ % \bs ExportParameter\{\meta{parameter}\}\\ % \bs ExportIf\{\meta{ifname}\}\\ % \qquad.\\ % \qquad.\\ % \qquad.\\ % \bs closeexport\\ % \end{quotation} % \end{multicols} % \noindent % where \meta{file} is the file used to carry the data (its name will have % the \texttt{.xpt} extension by default, but you must not give it here; % an optionnal argument may be used to specify the extension), \meta{counter} % is the name of a \LaTeX\ counter % (i.e. one of the well known counters % \texttt{chapter}, \texttt{section}, \ldots, % \texttt{equation}, etc.), or a counter you have declared by |\newcounter|. % Also, % \meta{length} is the name (\emph{without the backslash}) of a % \LaTeX\ length like % \texttt{parskip} or of a length declared by % |\newlength|. In the ``importing'' document, % we will find a command |\Import{|\meta{file}|}| or % |\Import[|\meta{extension}|]{|\meta{file}|}|. % The |\ExportLength| % command exports a length expressed in \emph{points} (\texttt{pt}) % which some fractionnal digits (5 is the maximum), while % |\PreciseExportLength| exports the length expressed in % \emph{scaled points} units (\texttt{sp}, 65536~\texttt{sp} make a point), % so it avoids possible rounding errors. % David Carlisle has pointed out that using that macro with a % \emph{rubber} length as argument would lose the shrinking and % stretching parts and that |\ExportLength| does not make % any rounding error in fact. You can trust him! Always use % |\ExportLength| in case of doubt. % % |\ExportMuskip| is like |\ExportLength| but for a muskip % register. In fact, you could use |\ExportLength| for a % muskip register: the two commands are identical, except the % message written in the \texttt{.log} file. But you can not % use |\PreciseExportLength| with a muskip register: another % pretext to not use that superfluous command. % % |\ExportParameter| allows you to export parameters defined % by simple commands, like |\textfraction|. Do not try to export % complex things. It would nor work, at best, or crash, at worst. % % |\ExportIf| allows you to export the state of an ``if'' % condition, i.e. the command |\ExportIf{foo}| will export the state of % |\iffoo|, just by writing |\foofalse| or |\footrue| in the % export file. % \emph{Note that the \meta{ifname} does not contains % the letters if at the beginning, nor the backslash.} % % \DescribeMacro{\ExportPageLayout} % If you want to export \emph{all} the dimensions (lengths) describing the % page layout, just use the |\ExportPageLayout| command. In a standard way, % you should export only that into a given file, which should % be imported in the preamble % of the importing document. This method allows to have two documents with % similar page layouts. % % \DescribeMacro{\ExportArrayParams} % This macro export the dimensions and parameters related to the % layout of \texttt{array} and \texttt{tabular} environments. % % \subsection{An Example of Application} % This package is very useful when associated which the \pkg{dvipaste} % package\,\footnote{This package is now obsoleted by the nice % package \pkg{grfpaste} from David Carlisle, but the same remarks % still apply.}, which allows you to prepare rectangular page pieces % and to ``paste'' these page pieces into your document. % \textbf{Warning:} if a such pasted piece modifies an imported counter % or length, you must take account of that alteration in the document % receiving the pasted piece. % % The \pkg{dvipaste.sty} package is now available from CTAN archives, % in the same directory than the \pkg{export} package. But you % should get from CTAN the whole directory containing % \pkg{dvipaste.tex} is. Get it (and the accompagning files), % and read the documentation of \pkg{dvipaste}: % you will also need the \pkg{dvipaste.c} program. % The \pkg{grfpaste} package is also available from CTAN % archives; it needs the \pkg{dvipaste.c} program. % A simple example is described in the next pages. % \clearpage % \begin{enumerate} % \item the main document \texttt{a.tex} exports the counters % \texttt{equation} and \texttt{chapter}, via the file \texttt{x.xpt}, % toward the document \texttt{b.tex}. % Adding to that, \texttt{a.tex} imports the labels defined in \texttt{b.tex} % (using the \pkg{xr} package, from David Carlisle). % \begin{quotation}\footnotesize % \unskip\hspace*{-4\parindent}\begin{tabular}{p{\clw}c|cp{\clw}} % \null\hfill\texttt{a.tex}\hfill\null% % &\quad&\quad&\null\hfill\texttt{b.tex}\hfill\null\\\hline % \verb|\documentclass{article}%|&&&\verb|\documentclass{article}%|\\ % \verb|\usepackage%|&&&\verb|\usepackage%|\\ % \verb| {...,export,dvipaste,xr,...}|&&&\verb| {...,export,dvipaste,...}|\\ % \verb|\externaldocument{b}|&&&\\ % \verb|\begin{document}|&&&\verb|\begin{document}|\\ % \null\hfill$\vdots$\hfill$\vdots$\hfill\null% % &&&\null\hfill$\vdots$\hfill$\vdots$\hfill\null\\ % \null\hfill$\vdots$\hfill$\vdots$\hfill\null% % &&&\null\hfill$\vdots$\hfill$\vdots$\hfill\null\\ % \verb|\openexport{x}|&&&\\ % \verb|\Export{equation}|&&&\\ % \verb|\Export{chapter}|&&&\\ % \null\hfill$\vdots$\hfill$\vdots$\hfill\null% % &&&\null\hfill$\vdots$\hfill$\vdots$\hfill\null\\ % \null\hfill$\vdots$\hfill$\vdots$\hfill\null% % &&&\null\hfill$\vdots$\hfill$\vdots$\hfill\null\\ % \verb|\closeexport|&&&\\ % \end{tabular} % % \end{quotation} % % \item The document \texttt{b.tex} imports the data contained in % the file \texttt{x.xpt}, % i.e. the values of the \texttt{equation} and \texttt{chapter} counters. % \begin{quotation}\footnotesize % \unskip\hspace*{-4\parindent}\begin{tabular}{p{\clw}c|cp{\clw}} % \null\hfill\tt a.tex\hfill\null% % &\quad&\quad&\null\hfill\tt b.tex\hfill\null\\\hline % &&&\verb|\Import{x}| % \end{tabular} % % \end{quotation} % % \item the it uses this counter in preparing an equation in a logical box: % \begin{quotation}\footnotesize % \unskip\hspace*{-4\parindent}\begin{tabular}{p{\clw}c|cp{\clw}} % \null\hfill\tt a.tex\hfill\null% % &\quad&\quad&\null\hfill\tt b.tex\hfill\null\\\hline % &&&\verb|\setbox0=\hbox{%|\\ % &&&\verb| \begin{minipage}{\textwidth}|\\ % &&&\verb|\begin{equation}|\\ % &&&\verb|a=b \label{eq-a}|\\ % &&&\verb|\end{equation}|\\ % &&&\verb|\end{minipage}}|\\ % &&&\verb|\sendout{\box0}|\\ % \null\hfill$\vdots$\hfill$\vdots$\hfill\null% % &&&\null\hfill$\vdots$\hfill$\vdots$\hfill\null\\ % \null\hfill$\vdots$\hfill$\vdots$\hfill\null% % &&&\null\hfill$\vdots$\hfill$\vdots$\hfill\null\\ % &&&\verb|\end{document}|\\ % \end{tabular} % % \end{quotation} % % \item The document \texttt{a.tex} ``pastes'' the piece created by % \texttt{b.tex}, then explicitely increments the \texttt{equation} % counter, since the pasted piece contains an unaccounted equation% % \footnote{An other, more general, method would be to ``export back'' % the counter via an other file. This method is used when several % counters are involved.}: % \begin{quotation}\footnotesize % \unskip\hspace*{-4\parindent}\begin{tabular}{p{\clw}c|cp{\clw}} % \null\hfill\tt a.tex\hfill\null% % &\quad&\quad&\null\hfill\tt b.tex\hfill\null\\\hline % \null\hfill$\vdots$\hfill$\vdots$\hfill\null% % &&&\null\hfill$\vdots$\hfill$\vdots$\hfill\null\\ % \null\hfill$\vdots$\hfill$\vdots$\hfill\null% % &&&\null\hfill$\vdots$\hfill$\vdots$\hfill\null\\ % \verb|\noindent\paste{b}{1}|&&&\\ % \verb|\stepcounter{equation}|&&&\\ % \null\hfill$\vdots$\hfill$\vdots$\hfill\null% % &&&\null\hfill$\vdots$\hfill$\vdots$\hfill\null\\ % \null\hfill$\vdots$\hfill$\vdots$\hfill\null% % &&&\null\hfill$\vdots$\hfill$\vdots$\hfill\null\\ % \end{tabular} % % \end{quotation} % \end{enumerate} % % In fact, the following sequence of actions must be performed here: % \begin{quote}\sloppy % \begin{tabular}{lcp{8cm}} % \textbf{latex b}&\qquad&to create the files \texttt{b.dat}, which % contain the dimensions of the pieces to ``paste'' and % \texttt{b.dvi} contains the pieces themselves. But \texttt{b.tex} % will not be able to import anything, because \texttt{x.xpt} has % not yet been created;\\ % \textbf{latex a}&&to create \texttt{x.xpt};\\ % \textbf{latex b}&&to create again \texttt{b.dat} with the right % dimensions and \texttt{b.dvi} containing correct values for % equation numbers, since importation could be done;\\ % \textbf{latex a}&&to take into account the new dimensions in % \texttt{b.dat};\\ % \textbf{dvipaste a}&&to ``paste'' into \texttt{a.dvi} the pieces % coming from \texttt{b.dvi}. % \end{tabular} % \end{quote} % % Note that the \pkg{xr} package, from David Carlisle, allows you % to pass \meta{label} information (i.e. to use |\ref{|\meta{label}|}| % or |\pageref{|\meta{label}|}|) when the \meta{label} is % defined by |\label{|\meta{label}|}| in an other \LaTeX\ document. % % \subsection{Figures and Tables} % \DescribeMacro{\xcaptionf} % \DescribeMacro{\xcaptiont} % In the case of a figure or table which is ``pasted'' this way into % a document \emph{with} its caption, this one will not be present in % the list of figures or tables. An easy solution is to use a % |\xcaptionf{|\meta{caption}|}| (or |\xcaptiont{|\meta{caption}|}| % for a table) command. These commands will increment the figure or % table counter. % % \subsection{Inserting several pages} % Sometimes, you will need to separately typeset several pages of a % document. To accomplish that, you prepare a second document % containing only the desired pages. This second document % will need, by exemple, some packages not used in the main document % (often because they require too much resources). To get correctly % numbered pages, figures, tables, notes, etc., % in the main document and in the secondary document, you just have to % export the corresponding counters from the main document \emph{before} % the insertion, to import them at the beginning of the secondary document, % to export them again (via an other file) at the end of the secondary % document, and at least to import them (via this second file) % \emph{after} the insertion into the main document. % % \begin{quotation}\sffamily\noindent % It will certainly be necessary to transmit the page counter, % which is named ``\texttt{page}''. You must then add a % |\clearpage| command \emph{before} the exportation. % This is mandatory only if the exported value must be used to % number the page which follows the exportation. Do not export % the page counter to an auxiliary document in which you are creating % pieces to be ``pasted'' into your document (in such an auxiliary document, % the ``page counter'' is in fact counter used to number the % pieces to be pasted). % \end{quotation} % % The insertion is only logical: you will have to do it manually in % the printed paper sheets, or to use software tools manipulating % \texttt{.dvi} files (e.g. \textbf{dvidvi}, \textbf{dviselect}, % and \textbf{dviconcat}). A serious problem subsists: % if they are sectionning commands and floating elements % (like figures and tables) with captions in the secondary document, % what to do to have a correct table of contents, a correct % list of figures and tables in the main document? % A similar problem arises for the bibliography. You just need to % add, in the main document, at the insertion point, a % command: % \DescribeMacro{\AddInputInAux} % \begin{quote}\tt % \bs AddInputInAux\{\meta{secondary document}.aux\} % \end{quote} % and so the \texttt{.aux} file of the secondary document will be % considered as an auxiliary file (of first or second level) of % the main document. This method has a small drawback: % if you declare the main document as an external document % (as defined by the \pkg{xr} package) of the secondary document % in order to be able to reference labels of the main document (or % of parts of it) from the secondary one, you will have to use the % optionnal argument in the command: % \begin{quote}\ttfamily % \bs usepackage\{xr\}\\ % \bs externaldocument[\meta{optiannal arg.}]\{\meta{main document}\}\\ % \bs externaldocument[\meta{optionnal arg.}]\{\meta{part % of main document}\} % \end{quote} % else the labels in the main document (or parts of it) would be % considered as defined twice during the processing of the secondary % document. This happens not often, but if you have this problem, the % solution is simple but not trivial. % % \section{Acknowledgments} % I must thanks, once more, David Carlisle for his precious comments, % for the \pkg{grfpaste} package, and his great work on the \pkg{xr} package. % % \section{Problems} % \begin{itemize} % \item This package is certainly to be used with care; the user % must understand its mechanism. % \item I did not found a way to determine automatically the type % of a \LaTeX\ register. If it is not defined, you get an error. % But exporting a register with the wrong type (i.e. a rubber length % as a counter) may lead to confusion or loss of data. % \item The documentation is written in a very poor english. Do not % hesitate to send corrections. % \item Do not confuse this \pkg{export} package (and its \cs{Import} % command) with the \pkg{import} package (and its \cs{import} command) % from Donald Arseneau. The two packages have no relation except % similarity of names. % \end{itemize} % % \section{To Do} % \begin{itemize} % \item Other parameter sets could be exported the same way as the % page layout parameters. Ask if you have needs. % \item Export other kinds of parameters (strings, macros, etc.). % \item Improve the documentation. % \end{itemize} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % \StopEventually{\setcounter{IndexColumns}{2}\PrintIndex\PrintChanges} % % \clearpage % \section{Implementation} % % \begin{macrocode} %<*package> % \end{macrocode} % % \begin{macro}{\export} % First, we declare the |\export| write channel: % \begin{macrocode} \newwrite\export % \end{macrocode} % \end{macro} % % \begin{macro}{\openexport} % The command |\openexport| announce the beginning of a sequence % of exportations and opens the file which will be used to % carry the data: % \begin{macrocode} \newcommand{\openexport}[2][xpt]{% \PackageInfo{export}{\MessageBreak Exportations into #2.#1.\MessageBreak}% \immediate\openout\export #2.#1} % \end{macrocode} % The optionnal argument is the extension added to the name of the file. % Default: \texttt{xpt}. Using an other extension may be useful for % package writers needing more specific names. % \end{macro} % % \begin{macro}{\closeexport} % The command |\closeexport| terminates a sequence of exportations % by closing the file and announcing. Opening and closing are |\immediate|. % \begin{macrocode} \newcommand{\closeexport}{\immediate\closeout\export% \PackageInfo{export}{\MessageBreak End of exportations.\MessageBreak}} % \end{macrocode} % \end{macro} % % \begin{macro}{\ExportLength} % And now, the exporting commands. To export a length in points, % we just use |\the|\meta{length} and write it as an argument of % a |\setlength| command. This command may be used for rigid % and rubber lengths, because |\the| gives the shrinking and % stretching parts of a rubber length. % \begin{macrocode} \newcommand{\ExportLength}[1]{% \PackageInfo{export}{Exportation of length #1}% \immediate\write\export{\string\setlength{\csname#1\endcsname}% {\the\csname#1\endcsname}}} % \end{macrocode} % \end{macro} % % \begin{macro}{\PreciseExportLength} % But for rigid lengths (for rubber ones, you would lose the % skrinking and stretching parts), you could use % |\PreciseExportLength|, which export the length expressed in % scaled points. The trick is to use |\number| in place of |\the|, % and adding \texttt{sp} for units. % \begin{macrocode} \newcommand{\PreciseExportLength}[1]{% \PackageInfo{export}{Precise exportation of length #1}% \immediate\write\export{\string\setlength{\csname#1\endcsname}% {\number\csname#1\endcsname sp}}} % \end{macrocode} % \end{macro} % % \begin{macro}{\ExportMuskip} % To export a muskip in mu-s, % we just use |\the|\meta{length} and write it as an argument of % a |\setlength| command. % \begin{macrocode} \newcommand{\ExportMuskip}[1]{% \PackageInfo{export}{Exportation of muskip #1}% \immediate\write\export{\string\setlength{\csname#1\endcsname}% {\the\csname#1\endcsname}}} % \end{macrocode} % Note that |\ExportLength| works well with muskips, but % |\PreciceExportLength| does nait and gives an error: % another reason to not use that superfluous command. % \end{macro} % % \begin{macro}{\Export} % Exporting a counter is rather trivial, using |\@arabic| to get % its value from the internal name of the \LaTeX\ counter. % \begin{macrocode} \newcommand{\Export}[1]{% \PackageInfo{export}{Exportation of counter #1}% \immediate\write\export{\string\setcounter{#1}% {\@arabic\csname c@#1\endcsname}}} % \end{macrocode} % \end{macro} % % \begin{macro}{\ExportParameter} % Exporting a simple parameter is utterly complex: hence % contorsions with \cs{expandafter} and \cs{noexpand}. % The \cs{providecommand} should avoid errors. % \begin{macrocode} \newcommand{\ExportParameter}[1]{% \PackageInfo{export}{Exportation of parameter #1}% \immediate\write\export% {\string\providecommand{\expandafter\noexpand\csname#1\endcsname}% {}} \immediate\write\export% {\string\renewcommand{\expandafter\noexpand\csname#1\endcsname}% {\csname#1\endcsname}}} % \end{macrocode} % \end{macro} % % \begin{macro}{\ExportIf} % Exporting an ``if'' condition is far from trivial. % We need to protect the contition name and to % avoid some expansions. % \begin{macrocode} \newcommand{\ExportIf}[1]{% \PackageInfo{export}{Exportation of the if condition ``#1''} \expandafter\csname if#1\endcsname \immediate\write\export{\expandafter\noexpand\csname #1true\endcsname} \else \immediate\write\export{\expandafter\noexpand\csname #1false\endcsname} \fi} % \end{macrocode} % \end{macro} % % \begin{macro}{\Import} % Importing the data is easy: open the file for reading, % read it: the |\setcounter| and |\setlength| commands are % executed, then close it. % \begin{macrocode} \newcommand{\Import}[2][xpt]{% \PackageInfo{export}{\MessageBreak Importations from #2.#1\MessageBreak}% \InputIfFileExists{#2.#1}{\relax}{\relax}} % \end{macrocode} % \end{macro} % % \begin{macro}{\xcaptionf} % Now, the two caption commands. They increment the figure or table counter, % then call the internal macro |\@xcaption|. We provide |\xcaption| if you % have other classes of floats. % \begin{macrocode} \def\xcaptionf{\refstepcounter{figure} \@dblarg{\@xcaption{figure}}} % \end{macrocode} % \end{macro} % \begin{macro}{\xcaptiont} % \begin{macrocode} \def\xcaptiont{\refstepcounter{table} \@dblarg{\@xcaption{table}}} % \end{macrocode} % \end{macro} % \begin{macro}{\xcaption} % \begin{macrocode} \def\xcaption#1{\refstepcounter{#1} \@dblarg{\@xcaption{#1}}} % \end{macrocode} % \end{macro} % % \begin{macro}{\@xcaption} % \begin{macrocode} \long\def\@xcaption#1[#2]#3{\par\addcontentsline{\csname ext@#1\endcsname}{#1}{\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}}% % ^^A \begingroup % ^^A \@parboxrestore % ^^A \normalsize % ^^A \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par % ^^A \endgroup } % \end{macrocode} % \end{macro} % % \begin{macro}{\iprotected@write} % We need these two internal macros for |\AddInputInAux|. They are % slighty modified copies of similar macros in the \LaTeX\ kernel. % \begin{macrocode} \def\iprotected@write#1#2#3{% \begingroup \let\thepage\relax #2% \let\protect\@unexpandable@protect \edef\reserved@a{\immediate\write#1{#3}}% \reserved@a \endgroup \if@nobreak\ifvmode\nobreak\fi\fi } % \end{macrocode} % \end{macro} % % \begin{macro}{\@inputx} % \begin{macrocode} \def\@inputx#1{{\def\bibcite##1##2{\relax}\@input{#1}}} % \end{macrocode} % \end{macro} % % This macro write an |\@inputx| of the given file into the \texttt{.aux} file. % \begin{macro}{\AddInputInAux} % \begin{macrocode} \newcommand{\AddInputInAux}[1]{% \iprotected@write\@auxout {% \let\label\@gobble \let\index\@gobble \let\glossary\@gobble}% {\string\@inputx{#1}% }% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\ExportPageLayout} % This macro is just a list of exportations of the lengths defining the % page layout, because it would be so boring to type all that! % It also exports some parameters and counters related to page layout % and float management. % Note that \cs{mathindent} is exported only if it is defined, i.e. when the % \texttt{fleqn} class option is used. % \begin{macrocode} \newcommand{\ExportPageLayout}{% \PackageInfo{export}{\MessageBreak Exportation of the PageLayout\MessageBreak}% \PreciseExportLength{hsize} \PreciseExportLength{vsize} \PreciseExportLength{hoffset} \PreciseExportLength{voffset} \PreciseExportLength{linewidth} \PreciseExportLength{columnwidth} \PreciseExportLength{columnsep} \PreciseExportLength{columnseprule} \PreciseExportLength{parindent} \ExportLength{parskip} \PreciseExportLength{hoffset} \PreciseExportLength{voffset} \PreciseExportLength{oddsidemargin} \PreciseExportLength{evensidemargin} \PreciseExportLength{headheight} \PreciseExportLength{headsep} \PreciseExportLength{textheight} \PreciseExportLength{textwidth} \PreciseExportLength{paperheight} \PreciseExportLength{paperwidth} \PreciseExportLength{marginparsep} \PreciseExportLength{marginparwidth} \PreciseExportLength{marginparpush} \PreciseExportLength{footskip} \PreciseExportLength{topmargin} \PreciseExportLength{topskip} \PreciseExportLength{jot} \@ifundefined{mathindent}{}{\PreciseExportLength{mathindent}} \ExportLength{abovedisplayskip} \ExportLength{belowdisplayskip} \ExportLength{abovedisplayshortskip} \ExportLength{belowdisplayshortskip} \ExportLength{floatsep} \ExportLength{textfloatsep} \ExportLength{dblfloatsep} \ExportLength{dbltextfloatsep} \ExportLength{intextsep} \Export{topnumber} \Export{dbltopnumber} \Export{bottomnumber} \Export{totalnumber} \PreciseExportLength{footnotesep} \ExportParameter{topfraction} \ExportParameter{bottomfraction} \ExportParameter{textfraction} \ExportParameter{floatpagefraction} \ExportParameter{dbltopfraction} \ExportParameter{dblfloatfraction} \ExportLength{baselineskip} \ExportLength{normalbaselineskip} \ExportParameter{baselinestretch} \PackageInfo{export}{\MessageBreak End of exportation of the PageLayout\MessageBreak}}% % \end{macrocode} % \end{macro} % % \begin{macro}{\ExportArrayParams} % This macro is just a list of exportations of the lengths and % parameters defining the layout in \texttt{array} and % \texttt{tabular} environments. % \begin{macrocode} \newcommand{\ExportArrayParams}{% \PackageInfo{export}{\MessageBreak Exportation of the ArrayParams\MessageBreak}% \PreciseExportLength{arraycolsep} \PreciseExportLength{tabcolsep} \PreciseExportLength{arrayrulewidth} \PreciseExportLength{doublerulesep} \ExportParameter{arraystretch} \PackageInfo{export}{\MessageBreak End of exportation of the ArrayParams\MessageBreak}}% % \end{macrocode} % \end{macro} % \Finale % \end{document} \endinput