%% %% This is file `parallel.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% parallel.dtx (with options: `package') %% %% This file is part of the 'parallel'-package %% %% Copyright (c) 1994-2003 Matthias Eckermann %% %% This program may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.2 %% 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.2 or later is part of all distributions of LaTeX %% version 1999/12/01 or later. %% %% This program consists of the files parallel.dtx, parallel.ins, readme %% %% %% $Id: parallel.dtx,v 1.11 2003/04/13 16:54:40 mge Exp $ %% %% $Log: parallel.dtx,v $ %% Revision 1.11 2003/04/13 16:54:40 mge %% cleanups %% %% Revision 1.10 2003/04/13 16:52:04 mge %% Beta 4 fixed (not tagging:-) %% %% Revision 1.9 2003/04/13 16:47:07 mge %% correct checksum %% %% Revision 1.8 2003/04/13 16:46:14 mge %% cvs cleanups %% %% Revision 1.7 2003/04/13 16:36:22 mge %% changed \fileversion %% %% Revision 1.6 2003/04/13 16:27:30 mge %% added readme %% %% Revision 1.5 2003/04/13 16:17:18 mge %% added minor changes (fmi) %% License->LPPL (mge) %% %% Revision 1.4 2003/04/13 15:51:44 mge %% minor changes (cosmetic) %% %% Revision 1.3 2000/04/01 08:44:40 mge %% updated \fileversion \filedate %% %% Revision 1.2 2000/04/01 08:42:39 mge %% initial checkin %% %% author(s) : Matthias Eckermann (mge), Berlin, Germany %% - debugging : Bernd Raichle (br), Stuttgart, Germany %% - contributions : Wonkoo Kim (wk), Pittsburgh, PA, USA %% Frank Mittelbach (fmi) , Mainz, Germany %% history : 2003-04-13 Minor corrections (fmi) %% License->LPPL (mge) %% 10.11.1997 (2.0 interim-public-beta) (mge) %% 28.02.1997 (option 'verbose') %% 01.10.1996 (better spacing) (br) %% 29.09.1996 (smarter column support) (wk) %% Sep.1996 (on pages, VLine, '.dtx') (mge) %% 26.03.1995 (works within {list}s) (mge) %% 15.02.1995 (first public release) (mge) %% 19.10.1994 (initial tests) (mge) %% email : mge@arcor.de (private), mge@suse.de (job) %% description : provides a small tool to typeset in two columns %% or on two pages parallel, e.g. if you want to set %% two languages besides. %% thanks : R.Braun, H.Kopka, J.Schrod %% \def\fileversion{beta 4} \def\filedate{2003/04/13} \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{parallel}[\filedate, setting two texts parallel (me)] \message{`parallel': setting two texts parallel, (\fileversion) \filedate.} \newdimen\ParallelLWidth \newdimen\ParallelRWidth \newdimen\ParallelTextWidth \newdimen\ParallelLeftMargin \newdimen\ParallelUserMidSkip \newdimen\ParallelMainMidSkip \newbox\ParallelLBox \newbox\ParallelRBox \newbox\ParallelBoxVar \newbox\ParallelLTok \newbox\ParallelRTok \newcount\ParallelBoolVar \newcount\ParallelBoolMid \newcount\ParallelWhichBox \newcount\ParallelMainMode \newcount\ParallelFNMode \newcount\ParallelLFNCounter \newcount\ParallelRFNCounter \newcount\ParallelMaxFN \newcount\ParallelFNNumMode \newcommand{\ParallelMessage}[1]{\relax} \DeclareOption{Verbose}{% \renewcommand{\ParallelMessage}[1]{\message{#1}} \message{Verbose} } \DeclareOption{OldStyleNums}{% \ParallelFNNumMode=1\ParallelMessage{OldStyleNums}} \DeclareOption{RaiseNums}{% \ParallelFNNumMode=2\ParallelMessage{RaiseNums}} \DeclareOption{ItalicNums}{% \ParallelFNNumMode=3\ParallelMessage{ItalicNums}} \DeclareOption{RomanNums}{% \ParallelFNNumMode=4\ParallelMessage{RomanNums}} \DeclareOption{SeparatedFootnotes}{% \ParallelFNMode=1\ParallelMessage{SeparatedFootnotes}} \newcommand{\ParallelLFootnote}[1]{% \global\advance\ParallelLFNCounter\@ne \footnotemark[\number\ParallelLFNCounter]% \expandafter\gdef% \csname ParallelLFN\romannumeral\ParallelLFNCounter\endcsname{#1}} \newcommand{\ParallelRFootnote}[1]{% \global\advance\ParallelRFNCounter\@ne \footnotemark[\number\ParallelRFNCounter]% \expandafter\gdef% \csname ParallelRFN\romannumeral\ParallelRFNCounter\endcsname{#1}} \newenvironment{ParallelFNEnviron}{% \footnotesize \begin{list}{}{% \leftmargin=4em \rightmargin=\z@ \topsep=\z@skip \itemsep=\z@skip \labelwidth=3em \labelsep=1em% \renewcommand{\makelabel}[1]{{\hfill\footnotesize ##1}}% }% }{% \end{list}% } \newcommand{\ParallelShowFNList}{% % footnotes in left or right column, i.e. left+right>0? \ParallelMaxFN=\ParallelLFNCounter \advance\ParallelMaxFN \ParallelRFNCounter \ifnum\ParallelMaxFN>\z@ \ParallelMessage{Parallel Footnotes (}% \begin{ParallelFNEnviron}% \ParallelMaxFN=\ParallelLFNCounter \global\ParallelLFNCounter=\z@ \loop \ifnum\ParallelLFNCounter<\ParallelMaxFN \global\advance\ParallelLFNCounter \@ne \item[\ifcase\ParallelFNNumMode \number\ParallelLFNCounter% \or \oldstylenums{\the\ParallelLFNCounter}% \or \raisebox{1ex}{\the\ParallelLFNCounter}% \or \textit{\number\ParallelLFNCounter}% \or \romannumeral\ParallelLFNCounter% \else \number\ParallelLFNCounter \fi]% \par {\csname ParallelLFN\romannumeral\ParallelLFNCounter\endcsname}% \par \repeat \end{ParallelFNEnviron}% \ifnum\ParallelFNMode=\@ne \begin{ParallelFNEnviron}% \ParallelMaxFN=\ParallelRFNCounter \global\ParallelRFNCounter=\z@ \loop \ifnum\ParallelRFNCounter<\ParallelMaxFN \global\advance\ParallelRFNCounter \@ne \item[\ifcase\ParallelFNNumMode \number\ParallelRFNCounter\ParallelDot \or \oldstylenums{\the\ParallelRFNCounter}\ParallelDot \or \raisebox{1ex}{\the\ParallelRFNCounter\ParallelDot}% \or \textit{\number\ParallelRFNCounter\ParallelDot}% \or \romannumeral\ParallelLFNCounter% \else \number\ParallelRFNCounter\ParallelDot \fi]% \par {\csname ParallelRFN\romannumeral\ParallelRFNCounter\endcsname}% \par \repeat \end{ParallelFNEnviron}% \fi \global\ParallelLFNCounter=\z@ \global\ParallelRFNCounter=\z@ \ParallelMessage{)}% \else \ParallelMessage{No Parallel Footnotes}% \fi } \newcommand{\ParallelParOnePage}{% \ifnum\ParallelBoolVar=\@ne \par\begingroup \leftmargin=\z@ \rightmargin=\z@ \parskip=\z@skip \parindent=\z@ \vbadness=10000 \vfuzz=3ex \splittopskip=\z@skip \loop% \ifnum\ParallelBoolVar=\@ne% \noindent \hbox to\textwidth{% \hskip\ParallelLeftMargin \hbox to\ParallelTextWidth{% \ifvoid\ParallelLBox \hskip\ParallelLWidth \else \ParallelWhichBox=\z@ \vbox{\setbox\ParallelBoxVar =\vsplit\ParallelLBox to\dp\strutbox% \unvbox\ParallelBoxVar}% \fi \strut \ifnum\ParallelBoolMid=\@ne \hskip\ParallelMainMidSkip \vrule \else \hss \fi \hss \ifvoid\ParallelRBox \hskip\ParallelRWidth \else \ParallelWhichBox=\@ne \vbox{\setbox\ParallelBoxVar =\vsplit\ParallelRBox to\dp\strutbox% \unvbox\ParallelBoxVar}% \fi}}% \ifvoid\ParallelLBox \ifvoid\ParallelRBox \global\ParallelBoolVar=\z@ \fi\fi% \fi% \ifnum\ParallelBoolVar=\@ne% \penalty\interlinepenalty \repeat \par \endgroup \fi} \newcommand{\ParallelParTwoPages}{% \ifnum\ParallelBoolVar=\@ne \par\begingroup \global\ParallelWhichBox=\@ne \newpage \vbadness=10000 \vfuzz=3ex \splittopskip=\z@skip \loop% \ifnum\ParallelBoolVar=\@ne% \ifnum\ParallelWhichBox=\@ne \ifvoid\ParallelLBox \mbox{} \newpage \else\global\ParallelWhichBox=\z@\fi \else \ifvoid\ParallelRBox \mbox{} \newpage \else\global\ParallelWhichBox=\@ne\fi \fi \ifnum\ParallelWhichBox=\z@ \ifodd\thepage \mbox{} \newpage \fi \hbox to\textwidth{% \vbox{\vsplit\ParallelLBox to.98\textheight}}% \else \ifodd\thepage\relax\else \mbox{} \newpage \fi \hbox to\textwidth{% \vbox{\vsplit\ParallelRBox to.98\textheight}}% \fi \vspace*{\fill}\newpage \fi \ifvoid\ParallelLBox\ifvoid\ParallelRBox \global\ParallelBoolVar=\z@ \fi\fi \ifnum\ParallelBoolVar=\@ne \repeat \par \endgroup \fi} \newcommand{\ParallelAfterText}{% \global\ParallelBoolVar=\@ne \let\footnote=\ParallelOldFootnote\endgroup} \newcommand{\ParallelCheckOpenBrace}{% \ifx\x\bgroup \else \errmessage{Missing opening brace}% \fi \endgroup} \newcommand{\ParallelLText}{% \everypar{}\@restorepar\begingroup \hbadness=3000 \let\footnote=\ParallelLFootnote \ParallelWhichBox=0 \global\setbox\ParallelLBox=\vbox\bgroup \hsize=\ParallelLWidth \aftergroup\ParallelAfterText \begingroup \afterassignment\ParallelCheckOpenBrace \let\x=} \newcommand{\ParallelRText}{% \everypar{}\@restorepar\begingroup \hbadness=3000 \ifnum\ParallelFNMode=\@ne \let\footnote=\ParallelRFootnote \else \let\footnote=\ParallelLFootnote \fi \ParallelWhichBox=\@ne \global\setbox\ParallelRBox=\vbox\bgroup \hsize=\ParallelRWidth \aftergroup\ParallelAfterText \begingroup \afterassignment\ParallelCheckOpenBrace \let\x=} \newcommand{\ParallelAtEnd}{} \newcommand{\ParallelPar}{} % Dummy \newcommand{\ParallelDot}{\ensuremath{\cdot}} \newenvironment{Parallel}[3][c]{% \begingroup% \ParallelTextWidth=\linewidth \ParallelLeftMargin=\textwidth \advance\ParallelLeftMargin by-\linewidth \if #1p\relax \ParallelMessage{ on Pages (}% \ParallelMainMode=\z@ \renewcommand{\ParallelPar}{\ParallelParTwoPages} \else \if #1a\relax \ParallelMessage{ autocomputed Pages (}% \ParallelMainMode=\tw@ \renewcommand{\ParallelPar}{\ParallelParTwoPages} \else \tolerance=600 % sorry, but neccessary \emergencystretch=.5em % dto. \ParallelMainMode=\@ne \renewcommand{\ParallelPar}{\ParallelParOnePage} \if #1v\relax \ParallelBoolMid=\@ne \ParallelMessage{ in Columns, with VLine (}% \else \if #1c\relax\else \errhelp{possible options: 'p'age, 'c'olumn or columns with 'v'line --- type to proceed in column-mode} \errmessage{bad option '#1' to environment 'Parallel'} \fi \ParallelMessage{ in Columns (}% \fi\fi\fi \def\ParallelArgL{#2} \def\ParallelArgR{#3} \ifx\ParallelArgL\empty\ParallelLWidth=0in\else\ifx\ParallelArgL\space \ParallelLWidth=0in\else\setlength\ParallelLWidth{#2}\fi\fi \ifx\ParallelArgR\empty\ParallelRWidth=0in\else\ifx\ParallelArgR\space \ParallelRWidth=0in\else\setlength\ParallelRWidth{#3}\fi\fi \ifnum\ParallelMainMode=\@ne \ifdim\ParallelLWidth>1em \ifdim\ParallelRWidth>1em \ParallelMainMidSkip=\linewidth \advance\ParallelMainMidSkip by-\ParallelLWidth \advance\ParallelMainMidSkip by-\ParallelRWidth \advance\ParallelMainMidSkip by-.5pt \advance\ParallelMainMidSkip by-\ParallelLeftMargin \divide\ParallelMainMidSkip by 2 \else \ParallelRWidth=\linewidth \advance\ParallelRWidth by-\ParallelLWidth \advance\ParallelRWidth by-2\ParallelUserMidSkip \advance\ParallelRWidth by-\ParallelLeftMargin \ParallelMainMidSkip=\ParallelUserMidSkip \fi \else \ifdim\ParallelRWidth>1em \ParallelLWidth=\linewidth \advance\ParallelLWidth by-\ParallelRWidth \advance\ParallelLWidth by-2\ParallelUserMidSkip \advance\ParallelLWidth by-\ParallelLeftMargin \ParallelMainMidSkip=\ParallelUserMidSkip \else \ParallelLWidth=.5\linewidth \advance\ParallelLWidth by-\ParallelLeftMargin \advance\ParallelLWidth by-\ParallelUserMidSkip \ParallelRWidth=\ParallelLWidth \ParallelMainMidSkip=\ParallelUserMidSkip \fi \fi \else \ifdim\ParallelLWidth>1em \ifdim\ParallelRWidth>1em \else \ParallelRWidth=\linewidth \advance\ParallelRWidth by-\ParallelLeftMargin \fi \else \ifdim\ParallelRWidth>1em \ParallelLWidth=\linewidth \advance\ParallelLWidth by-\ParallelLeftMargin \else \ParallelLWidth=\linewidth \advance\ParallelLWidth by-\ParallelLeftMargin \ParallelRWidth=\linewidth \advance\ParallelRWidth by-\ParallelLeftMargin \fi \fi \fi \global\ParallelLFNCounter=\z@ \global\ParallelRFNCounter=\z@ \let\ParallelOldFootnote=\footnote }{% \ParallelPar% \ParallelAtEnd% \endgroup% \ParallelShowFNList% \let\footnote=\ParallelOldFootnote \ParallelMessage{)}} \ParallelFNNumMode=\z@ \ParallelFNMode=\z@ \ParallelBoolMid=\z@ \ParallelUserMidSkip=.5em \ProcessOptions \endinput %% %% End of file `parallel.sty'.