summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/export
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/export
Initial commit
Diffstat (limited to 'macros/latex/contrib/export')
-rw-r--r--macros/latex/contrib/export/00readme31
-rw-r--r--macros/latex/contrib/export/dvipaste.sty339
-rw-r--r--macros/latex/contrib/export/export.dtx715
-rw-r--r--macros/latex/contrib/export/export.ins42
-rw-r--r--macros/latex/contrib/export/export.l5
-rw-r--r--macros/latex/contrib/export/export.pdfbin0 -> 280168 bytes
6 files changed, 1132 insertions, 0 deletions
diff --git a/macros/latex/contrib/export/00readme b/macros/latex/contrib/export/00readme
new file mode 100644
index 0000000000..ba1908e19e
--- /dev/null
+++ b/macros/latex/contrib/export/00readme
@@ -0,0 +1,31 @@
+This is the export package, to export and import LaTeX
+registers (counters, lengths and some parameters) from
+one document to another one, using a file.
+
+Warning: use this package with care.
+
+The file export.l contains the list of the distributed files.
+Run latex on export.ins to get export.sty.
+Run latex on export.dtx to get the documentation (makeindex
+to get the index and the changes log):
+
+ latex export.dtx
+ makeindex -s gind.ist -o export.ind export.idx
+ makeindex -s gglo.ist -o export.gls export.glo
+ latex export.dtx
+ makeindex -s gind.ist -o export.ind export.idx
+ makeindex -s gglo.ist -o export.gls export.glo
+ latex export.dtx
+
+
+Jean-Pierre F. Drucbert (JPFD) Email: drucbert@onecert.fr
+ONERA/Centre de Toulouse SRI Téléphone 05-62-25-25-15
+Office National d'Études et de Recherches Aérospatiales
+Centre de Toulouse
+Service Réseaux et Informatique
+Complexe Scientifique de Rangueil
+2, Avenue Édouard Belin BP 4025 F-31055 TOULOUSE CEDEX
+FRANCE
+
+Barbarus hic ego sum, qui non intellegor ulli.
+ Publius Ovidius Naso
diff --git a/macros/latex/contrib/export/dvipaste.sty b/macros/latex/contrib/export/dvipaste.sty
new file mode 100644
index 0000000000..22bbdf1710
--- /dev/null
+++ b/macros/latex/contrib/export/dvipaste.sty
@@ -0,0 +1,339 @@
+% Copyright (C) The TeXplorators Corporation 1989
+
+% This is DVIPASTE.TEX, to be used with DVIPASTE.EXE, which is
+% Copyright (C) The TeXplorators Corporation 1989.
+
+% First we want to have a control sequence that stands for the current
+% category code of @, so that we can restore this category code at the end,
+% after temporarily making @ a letter (PLAIN makes @ category 12, but
+% AmS-TeX, for example, makes @ category 13). Using \csname CCC@\endcsname,
+% we can even let this control sequence be called \CCC@, before actually
+% making @ a letter, except that this won't work when @ has category
+% code 13, so instead we have to use the \uccode and \uppercase trick.
+
+% MODS by Jean-Pierre Drucbert (JPFD)
+% - use \@@line in place of \line (LaTeX compatibility)
+% - place the File number in the right margin (with \rlap)
+% - make the microscopic rules really invisible (width 0sp)
+%
+
+{\uccode`\Z=`\@
+ \uppercase{\expandafter\xdef\csname CCCZ\endcsname{\the\catcode`\@}}
+}
+
+% Now we make @ a letter.
+
+\catcode`\@=11
+
+
+% \eat@ gobbles a token; it is the same as in AmS-TeX.
+
+\def\eat@#1{}
+
+
+% We need to know if a \sendout or \paste has already occurred. The
+% following are made true once the respective condition has occurred.
+
+\newif\ifsendout@
+\newif\ifpaste@
+
+
+% We need to allocate places for writing or reading the .dat file.
+
+\newwrite\writedata@
+\newread\readdata@
+
+
+% The definition of \sendout has the following features (%1, %2, etc.
+% refer to lines so marked within the definition of \sendout):
+
+%1 If \paste has occurred, we won't allow a \sendout to occur, because
+% these shouldn't both occur in the same file; in fact, files having
+% \sendout's will redefine the \output routine.
+
+% In the \errmessage, we can't say \string\sendout, because \sendout is
+% outer. So we use \expandafter\eat@\string\\ to get the \, and then
+% spell out sendout.
+
+%2 If a \paste hasn't occurred, we see if a previous \sendout has occurred,
+% and if it hasn't, we do the following:
+
+%3 Open the .dat file for writing.
+
+%4 Declare \t@nrm to use for the name of the file and the page number
+% in the footline (it is possible that no font with the necessary
+% characters in it has been used in the file); the declaration is made
+% \global, just in case \sendout was used in a group, though it really
+% shouldn't be.
+
+%5 Set \topskip to 0pt.
+
+%6 Change the \output routine, to simply \shipout the current page,
+% followed by a line 2pc below with the name of the file, and the
+% page number.
+
+%7 We also want to redefine \bye, to close out the .dat file. We can't
+% put \gdef\bye within the definition of \sendout, since \bye is outer,
+% but we can say \expandafter\gdef\csname bye\endcsname !
+
+%8 And we make \ifsendout@ true.
+
+%9 In any case (i.e., whether or not a previous \sendout has occurred),
+% we now put #1 in \box0, so that we can refer to its height, depth and
+% width (usually #1 will be a \box, but we don't know which one).
+
+%10 Then we write this data to the .dat file; each \space will expand to a
+% space (PLAIN has \def\space{ }).
+
+%11 We start the page with an invisible \hrule (so that the next \vskip
+% won't disappear).
+
+%12 We move down to the bottom of the page.
+
+%13 We emit a special, which tells where the .dvi instructions for
+% printing \box0 begin.
+
+%14 We set the dimensions of \box0 to 0pt.
+
+%15 We start an unindented paragraph with \box0.
+
+%16 Then we emit another special, which tells where the .dvi instructions
+% for printing \box0 end.
+
+%17 Finally, we put in a smashed (and tiny) \vrule. Since this \vrule
+% has to occur exactly at the same position where the \noindent began,
+% the .dvi instructions for printing \box0 will bring us right back to
+% the position we started at.
+
+%18 Then we \eject, so that the \output routine will simply print \box0 on
+% a separate page.
+
+\outer\def\sendout#1{%
+ \ifpaste@ %1
+ \errmessage{\expandafter\eat@\string\\sendout and
+ \string\paste\space not allowed in same file
+ (\string\paste\space has already appeared)}%
+ \else %2
+ \ifsendout@
+ \else
+ \immediate\openout\writedata@=\jobname.dat %3
+ \global\font\t@nrm=cmr10 %4
+ \global\topskip\z@ %5
+ \global\output{\shipout\vbox{\vbox to\vsize{\unvbox255 }% %6
+ \baselineskip2pc
+% \@@line{\hfil\t@nrm File [\jobname], \#\number\count0\hfil}}%
+ \@@line{\hfil\rlap{\t@nrm File [\jobname], \#\number\count0}\qquad\null}}% %JPFD
+ \global\advance\count0\@ne}%
+ \expandafter\gdef\csname bye\endcsname %7
+ {\immediate\closeout\writedata@\par\vfill\supereject\end}%
+ \global\sendout@true %8
+ \fi
+ \setbox\z@\hbox{#1}% %9
+ \immediate\write\writedata@
+% {\the\ht\z@\space\the\dp\z@\space\the\wd\z@}% %10
+ {\number\csname ht\endcsname\z@ sp\space\number\csname dp\endcsname\z@ sp\space\number\csname wd\endcsname\z@ sp}% %10
+ \hrule height\z@ %11
+ \vskip\vsize %12
+ \special{beginpaste:}% %13
+ \ht\z@=\z@\dp\z@=\z@\wd\z@=\z@ %14
+ \noindent\box\z@ %15
+ \special{endpaste:}% %16
+ \smash{\vrule height1sp width0sp depth\z@}% %17 % 0sp JPFD
+ \eject %18
+ \fi}
+
+
+% The scratch tokens \toks@@ are already used in AmS-TeX.
+
+\toksdef\toks@@=2
+
+
+% \rightappend@ is from The TeXbook, page 378.
+
+\long\def\rightappend@#1\to#2{\toks@{\\{#1}}%
+ \toks@@=\expandafter{#2}\xdef#2{\the\toks@@\the\toks@}}
+
+
+% \ifreading@ will be true while still reading the data file; it is simply
+% the opposite of \ifeof, but we need an \if... with these reversed values,
+% to use within a \loop.
+
+\newif\ifreading@
+
+
+% The last line of the data file will produce a \par, so we need to have
+% something to test against \par.
+
+\def\Par@{\par}
+
+
+% The definition of \paste has the following features:
+
+%1 If \sendout has occurred, we won't allow a \paste to occur.
+
+%2 If a \paste hasn't occurred, we do the following:
+
+%3 We make \ifpaste@ true.
+
+%4 When we read in a data file `file'.dat, we will record all the data
+% in a control sequence \`file'@dat. This will be a list macro, as in
+% The TeXbook, page 378.
+
+% To see whether we have read in the data file yet, we just see whether
+% this control sequence, as specified by \csname, is \relax.
+
+%5 If not, we haven't read the file yet, so we immediately open it for
+% reading.
+
+%6 We use \ifeof to test whether the file really exists.
+
+%7 Assuming the file does exist, we do the following.
+
+%8 We are going to temporarily store the data in the control sequence
+% \next@, and at the end \let\`file'@dat=\next@. We do this because it
+% is rather awkward to continually refer to the control sequence
+% \`file'@dat, which can only be named using \csname. We begin by
+% setting \next@ to be empty.
+
+%9 We set \ifreading@ to be true (it will be false when we get to the
+% end of the data file).
+
+%10 We read using a \loop.
+
+%11 The \loop needs a test that is true if we are going to keep reading,
+% so we set \ifreading@ false when \ifeof gives true.
+
+%12 If we are still reading the file, we read a line to \next@ii.
+
+%13 The file has a \par at the end, so \ifx\next@ii\Par@ is true when we
+% are at the last line.
+
+%14 If that is not the case, then we want to add the data in \next@ii to
+% \next@. We need \expandafter\rightappend@; otherwise we would just
+% get \next@ii in the token list, rather than the values it now has.
+
+%15 And we just keep doing that until the file is all read.
+
+%16 Then we close the file.
+
+%17 And then we want to \global\let\`file'@dat=\next@. We need to expand
+% the \csname...\endcsname after a \global\let, which requires the
+% triple \expandafter trick of The TeXbook, page 374.
+
+%18 In any case (i.e., whether or not we first had to read in the data
+% file), we now want to apply the \getdata@ construction, defined
+% below, to \`file'@dat and the second argument #2 of \paste. This
+% also requires an \expandafter.
+
+%19 \ifgetdata@ will be true if #2 is actually the number of a line in
+% the data file.
+
+%20 In this case, the three pieces of data will be stored in \data@ht,
+% \data@dp, and \data@wd, and we will want to put in a box of that
+% height, depth and width. The easiest way is to lower a box of that
+% height+depth by the depth, so we first set \dimen@ to that sum.
+
+%21 We make an \hbox containing the special, and then the empty box with
+% the desired dimensions. NOTE: It is important to put the \special
+% in the \hbox, in case this empty box turns out to be the first
+% thing on the page. For some reason, \tex\ doesn't position such
+% an empty box at the right place, although it does position anything
+% that will actually appear on the page in the right place; a box
+% with a \special in it is NOT treated as an empty box in this process.
+
+%22 If #2 is not the number of a line in the data file, we just give an
+% error message ``No data for File [<data file>], #[<value of #2>]''
+% In order to have # appear in the error message, rather than ##, we
+% temporarily make # the \lccode of Z, put Z where we want the # to
+% appear, and then \lowercase the \errmessage. However, we want to
+% have uppercase N and F in this message, so we have to also set
+% the \lccode of N to N, and of F to F.
+
+
+\def\paste#1#2{%
+ \ifsendout@ %1
+ \errmessage{\string\paste\space and
+ \expandafter\eat@\string\\sendout not allowed in same file
+ (\expandafter\eat@\string\\sendout has already appeared)}%
+ \else %2
+ \global\paste@true %3
+ \expandafter\ifx\csname #1@dat\endcsname\relax %4
+ \immediate\openin\readdata@=#1.dat %5
+ \ifeof\readdata@\errmessage{No file #1.dat}% %6
+ \else %7
+ \def\next@{}% %8
+ \reading@true %9
+ \loop %10
+ \ifeof\readdata@\reading@false\fi %11
+ \ifreading@ %12
+ \read\readdata@ to\next@ii
+ \ifx\next@ii\Par@\else %13
+ \expandafter\rightappend@\next@ii\to\next@\fi %14
+ \repeat %15
+ \immediate\closein\readdata@ %16
+ \expandafter\expandafter\expandafter\global\expandafter
+ \let\csname#1@dat\endcsname\next@ %17
+ \fi
+ \fi
+ \expandafter\getdata@\csname#1@dat\endcsname{#2}% %18
+ \ifgetdata@ %19
+ \dimen@=\data@ht\advance\dimen@\data@dp %20
+ \hbox{\special{dvipaste: #1 #2}% %21
+ \lower\data@dp\vbox to\dimen@{\hbox to\data@wd{\hfil}\vfil}}%
+ \else %22
+ {\lccode`\Z=`\#\lccode`\N=`\N\lccode`\F=`\F%
+ \lowercase{\errmessage{No data for File [#1], Z#2}}}%
+ \fi
+ \fi}
+
+
+% \data@ht, \data@dp, and \data@wd are registers in which \getdata@ will
+% store the data gotten.
+
+\newdimen\data@ht
+\newdimen\data@dp
+\newdimen\data@wd
+
+
+% We also use a flag \ifgetdata@ to tell whether there was data on the line
+% requested.
+
+\newif\ifgetdata@
+
+
+% Argument #1 for \getdata@ is a list macro, and #2 a number.
+
+%1 We start by setting the counter \count@ to 0, and \ifgetdata@ to
+% false.
+
+%2 We temporarily (i.e., within a group), define \\ to: (a) advance
+% \count@ by 1 (so that \count@ is k when we are looking at the kth
+% thing on the list); (b) if \count@=#2 (we are at the element of the
+% lists specified by #2), set \ifgetdata@ true (so it is true only if
+% there are at least #2 pieces of data); (c) and then use \getdata@@ to
+% get the data out of this piece.
+
+%3 And then we apply this \\ to the list.
+
+
+\def\getdata@#1#2{\count@\z@\getdata@false %1
+ {\def\\##1{\advance\count@\@ne\ifnum\count@=#2\relax\global\getdata@true
+ \getdata@@##1\getdata@@\fi %2
+ }#1}} %3
+
+
+% The elements of the list macro will be of the form
+
+% [...]pt [...]pt [...]pt
+
+% with a space after the first and second pt, so we just have \getdata@
+% delimit its first two arguments with spaces.
+
+
+\def\getdata@@#1 #2 #3\getdata@@{%
+ \global\data@ht=#1\relax\global\data@dp=#2\relax\global\data@wd=#3\relax}
+
+
+% Finally, we return @ to its old \catcode.
+
+\catcode`\@\CCC@
diff --git a/macros/latex/contrib/export/export.dtx b/macros/latex/contrib/export/export.dtx
new file mode 100644
index 0000000000..ca2d488722
--- /dev/null
+++ b/macros/latex/contrib/export/export.dtx
@@ -0,0 +1,715 @@
+% \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.
+%
+%<package>\NeedsTeXFormat{LaTeX2e}[1996/06/01]
+%<package>\ProvidesPackage{export}
+%<package> [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}
+%</driver>
+% \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
diff --git a/macros/latex/contrib/export/export.ins b/macros/latex/contrib/export/export.ins
new file mode 100644
index 0000000000..3a5682a618
--- /dev/null
+++ b/macros/latex/contrib/export/export.ins
@@ -0,0 +1,42 @@
+\def\filedate{2000/10/16}
+\def\fileversion{v1.8}
+\def\batchfile{export.ins}
+\input docstrip.tex
+\def\SimplePackage#1{\generateFile{#1.sty}{t}{\from{#1.dtx}{package}}}
+\keepsilent
+\preamble
+
+IMPORTANT NOTICE:
+This file is a stripped version of `export.dtx',
+copyright (c) 1996, 1997, 1998, 1999, 2000, 2001 by Jean-Pierre Drucbert (drucbert@onecert.fr)
+
+% ^^A Jean-Pierre F. Drucbert (JPFD) Email: drucbert@onecert.fr
+% ^^A ONERA/Centre de Toulouse SRI Téléphone 05-62-25-25-15
+% ^^A Office National d'Études et de Recherches Aérospatiales
+% ^^A Centre de Toulouse
+% ^^A Service Réseaux et Informatique
+% ^^A Complexe Scientifique de Rangueil
+% ^^A 2, Avenue Édouard Belin BP 4025 F-31055 TOULOUSE CEDEX
+% ^^A FRANCE
+% ^^A
+% ^^A Barbarus hic ego sum, qui non intellegor ulli.
+% ^^A Publius Ovidius Naso
+
+You are not allowed to distribute this file.
+For distribution of the original source see
+the copyright notice in the source file.
+
+\endpreamble
+
+\SimplePackage{export}
+
+\Msg{*************************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the file}
+\Msg{* `export.sty' into a directory searched by TeX:}
+\Msg{*}
+\Msg{* To produce the documentation run `export.dtx' through LaTeX.}
+\Msg{*}
+\Msg{* Happy TeXing}
+\Msg{*************************************************************}
+
diff --git a/macros/latex/contrib/export/export.l b/macros/latex/contrib/export/export.l
new file mode 100644
index 0000000000..c6d7a2db5a
--- /dev/null
+++ b/macros/latex/contrib/export/export.l
@@ -0,0 +1,5 @@
+00readme
+dvipaste.sty
+export.dtx
+export.ins
+export.l
diff --git a/macros/latex/contrib/export/export.pdf b/macros/latex/contrib/export/export.pdf
new file mode 100644
index 0000000000..5315ccf4f5
--- /dev/null
+++ b/macros/latex/contrib/export/export.pdf
Binary files differ