The Leaflet Document Class: J Urgen Schlegelmilch Hubert G Aßlein Rolf Niepraschk Walter Schmidt 2012/06/04
The Leaflet Document Class: J Urgen Schlegelmilch Hubert G Aßlein Rolf Niepraschk Walter Schmidt 2012/06/04
The Leaflet Document Class: J Urgen Schlegelmilch Hubert G Aßlein Rolf Niepraschk Walter Schmidt 2012/06/04
Contents
1 Usage 2 Implementation 2.1 Saving some internal macros. . . . . . . 2.2 Option processing . . . . . . . . . . . 2.3 Changing the class properties . . . . . 2.4 Changing the page dimensions . . . . 2.5 Additional user macros . . . . . . . . . 2.6 Page construction and output . . . . . 2.6.1 Intercepting the small pages . . 2.6.2 Generating missing small pages 2.6.3 Reassembling the small pages . 1 1 1 1 6 8 9 9 9 10 11
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
Usage
A Process the le leaflet-manual.tex with L TEX to see details of usage and layout.
2
1
Implementation
class
2.1
2 3
2.2
4 5
Option processing
\@ifundefined{iflandscape}{\newif\iflandscape}{}% \@ifundefined{iftumble}{\newif\iftumble}{}% 6 \@ifundefined{iftwopart}{\newif\iftwopart}{}% 7 \newcommand\LL@debug@info[1]{}% 8 \DeclareOption{dvips}{\PassOptionsToPackage{\CurrentOption}{graphics}} 9 \DeclareOption{pdftex}{\PassOptionsToPackage{\CurrentOption}{graphics}} 10 \DeclareOption{vtex}{\PassOptionsToPackage{\CurrentOption}{graphics}} 11 \DeclareOption{dvipdfm}{\PassOptionsToPackage{\CurrentOption}{graphics}} 12 \DeclareOption{twoside}{\OptionNotUsed} 13 \DeclareOption{twocolumn}{\OptionNotUsed} 14 \DeclareOption{landscape}{\landscapetrue} 15 \DeclareOption{portrait}{\landscapefalse} 16 \DeclareOption{debug}{\let\LL@debug@info\typeout} 17 \DeclareOption{twopart}{\twoparttrue} 18 \DeclareOption{notwopart}{\twopartfalse} 19 \DeclareOption{nospecialtricks}{% 20 \AtEndOfClass{% 21 \ifLL@combine 22 \let\immediate\@@@immediate\let\write\@@@write
23 24 25
\LL@setPaperSize
Some paper sizes are not supported by the article class. Hence this work-around. These page dimensions must be given in landscape orientation!
\newcommand*\LL@setPaperSize{} \DeclareOption{a3paper}{\def\LL@setPaperSize{% 28 \paperwidth=420mm\paperheight=297mm\relax}}% 29 \@ifdefinable\ifLL@combine{\newif\ifLL@combine} 30 \DeclareOption{combine}{\LL@combinetrue} 31 \DeclareOption{nocombine}{\LL@combinefalse}
26 27
\DeclareOption{tumble}{\tumbletrue} \DeclareOption{notumble}{\tumblefalse}
\LL@foldmark
Drawing code for the fold mark. (Will be called within a picture environment.)
\newcommand*\LL@foldmark{} \DeclareOption{foldmark}{% 40 \def\LL@foldmark{% 41 \begingroup 42 \linethickness{\LenToUnit{\foldmarkrule}}% 43 \setlength\@tempdima{\paperheight-\LL@tmargin}% 44 \put(0,\LenToUnit{\@tempdima}){% 45 \line(0,-1){\LenToUnit{\foldmarklength}}}% 46 \endgroup}% 47 }
38 39 48 49 50
\DeclareOption{nofoldmark}{\def\LL@foldmark{}}%
\newcommand*\LL@toomanypages[2]{} \DeclareOption{draft}{\PassOptionsToClass{\CurrentOption}{article}% 51 \AtEndOfClass{% 52 \def\LL@toomanypages#1#2{% 53 \ClassWarningNoLine{leaflet}{#1.\MessageBreak#2}}% 54 }% 55 } 56 \DeclareOption{final}{\PassOptionsToClass{\CurrentOption}{article}% 57 \AtEndOfClass{% 58 \ifLL@combine 59 \def\LL@toomanypages#1#2{% 60 \ClassError{leaflet}{#1}{#2.}}% 61 \else 62 \def\LL@toomanypages#1#2{% 63 \ClassWarningNoLine{leaflet}{#1.\MessageBreak#2}}% 64 \fi 65 }% 66 } 67 \DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} 68 \PassOptionsToClass{landscape,a4paper}{article} 69 \ExecuteOptions{tumble,foldmark,bothsides,combine,landscape,notwopart} 70 \ProcessOptions\relax 71 \ifLL@combine \LL@rotate@I \LL@rotate@II
75 76 77 78 79 80 81 82 83 84 85 86 87
\iftumble \def\LL@rotate@II#1{\rotatebox[origin=c]{180}{#1}}% \else \def\LL@rotate@II#1{#1}% \fi \else \def\LL@rotate@I#1{\rotatebox[origin=c]{90}{#1}}% \iftumble \def\LL@rotate@II#1{\rotatebox[origin=c]{270}{#1}}% \else \def\LL@rotate@II#1{\rotatebox[origin=c]{90}{#1}}% \fi \fi
Im Folgenden denieren wir die TEX primitives \immediate, \write, \openout und \closeout um. Alle nicht immediate ausgef uhrten Anweisungen werden dem Makro \@@@pending@outs (Kommaliste) hinzugef ugt. So k onnen speziell die \write-Anweisungen unabh angig von TEXs \shipout zu einem g unstigen Zeitpunkt ausgef uhrt werden. For VTEX we must keep in mind that \immediate\special exist.
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
\def\@@@pending@outs{}\let\@@@immediate\immediate \let\@@@write\write \let\@@@special\special \let\@@@openout\openout \let\@@@closeout\closeout \def\immediate{% \let\write\immediate@write% \let\openout\immediate@openout% \let\closeout\immediate@closeout% \let\special\immediate@special}% \def\reset@immediate{% \let\write\pending@write% \let\openout\pending@openout% \let\closeout\pending@closeout% \let\special\@@@special}% \long\def\pending@write#1#{\pending@@write{#1}} \def\immediate@write{% \reset@immediate\@@@immediate\@@@write}% \def\immediate@openout{% \reset@immediate\@@@immediate\@@@openout}% \def\immediate@closeout{% \reset@immediate\@@@immediate\@@@closeout}% \def\immediate@special{% \reset@immediate\@@@immediate\@@@special}% \let\write\pending@write \let\openout\pending@openout \let\closeout\pending@closeout
\@dummy@whatsit
Makes our redened primitives more like whatsits (???). \special{} is also possible for pdfTEX but we get a lot of strange warnings (Non-PDF special ignored!) in this case.
113 114 115 116 117 118 119 120 121 122 123 124 125
\def\@dummy@whatsit{\special{}} \begingroup\@ifundefined{pdfoutput}% {\endgroup} {\endgroup \ifnum\pdfoutput>\z@\def\@dummy@whatsit{\pdfliteral{}}\fi} \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname eTeXversion\endcsname\relax %%% Test is from Markus Kohm (d.c.t.t, 29 Jun 2004) \ClassWarningNoLine{leaflet}{% *************************************\MessageBreak * Its very recommended to use eTeX \MessageBreak * with this package! \MessageBreak *************************************}%
\pending@@write
Doesnt work correctly without any \mark or \special or \pdfliteral command inside.
\pending@openout
129 130 131
\pending@closeout
132 133 134
\@@@exec@outs
Note to this implementation: The out commands and the page breaks are not allways in sync, which means possible wrong page references.
135 136 137 138 139 140
\newcommand*\@@@exec@outs{% \@@@pending@outs\gdef\@@@pending@outs{}% \LL@debug@info{% >>> execute the output commands of the current page <<<}}% \else \RequirePackage{etex} \globmarks\@@@out@mark \newcounter{@@total@outs}\setcounter{@@total@outs}{0} \newcounter{@@last@exec}\setcounter{@@last@exec}{0}
\pending@@write
Doesnt work correctly without any \mark or \special or \pdfliteral command inside.
144 145 146 147
\@@@exec@outs
With the call of \@@@exec@outs we simulate TEXs execution of non-immediate output commands. The number of pending commands which can be executed must be decremented by \value{@@total@outs} \botmarks\@@@out@mark. The remaining commands must still wait until the next output page is ready. It works only for output commands in the main text which moved to the next page but not for oating output commands.
156 157
\newcommand*\@@@exec@outs{% \begingroup \@tempcntb\c@@@total@outs\advance\@tempcntb-\c@@@last@exec% \edef\reserved@a{\botmarks\@@@out@mark}% \ifx\reserved@a\@empty\@tempcnta\z@\else\@tempcnta\reserved@a\fi% \LL@debug@info{PENDING-OUTS:\the\@tempcntb\space\space TOTAL-OUTS:\the\c@@@total@outs\space\space LAST-EXEC:\the\c@@@last@exec\space\space TOPMARK:\topmarks\@@@out@mark\space\space FIRSTMARK:\firstmarks\@@@out@mark\space\space BOTMARK:\botmarks\@@@out@mark}%
Last valid pending entry = \@tempcntb = PENDING-OUTS TOTAL-OUTS + BOTMARK Number of invalid (moved) outs = \@tempcnta = TOTAL-OUTS BOTMARK
167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182
\advance\@tempcnta-\c@@@total@outs \advance\@tempcntb\@tempcnta \@tempcnta-\@tempcnta% \ifnum\@tempcnta>\z@ \LL@debug@info{% >>> resave \the\@tempcnta\space output command(s). Too early to execute! <<<}% \fi \@tempcnta\z@ \def\reserved@b{}% \@for\reserved@a :=\@@@pending@outs\do{% \ifx\reserved@a\@empty\else \ifnum\@tempcnta<\@tempcntb% \reserved@a% execute outputs related to the current page box. \global\advance\c@@@last@exec\@ne \LL@debug@info{>>> execute output command number \the\c@@@last@exec\space<<<}% \else \expandafter\g@addto@macro\expandafter\reserved@b\expandafter{% \reserved@a,}% \fi \advance\@tempcnta\@ne% \fi}% \expandafter\@temptokena\expandafter{\reserved@b}% \xdef\@@@pending@outs{\the\@temptokena}% \endgroup}% \fi% end of eTeX test.
\protected@write
A Because our redened \write is expandable we must protect it inside of L TEXs \protected@write. 192 193 194 195 196 197 198 199 200
\shipout
\def\shipout{\deadcycles\z@\setbox\@tempboxa=}
\@begindvi
\LL@toomanypages
Now elsewhere . . .
204 205
\LoadClass{article} \RequirePackage{everyshi,calc,graphicx}
\LL@pagesize@specials
Now the graphics driver is known. We will Check the graphics driver and set special code for page dimensions and other.
\newcommand*\LL@pagesize@specials[2]{} \@ifundefined{Gin@driver}{}% 208 {% 209 \ifx\Gin@driver\@empty\else% 210 \filename@parse{\Gin@driver}\@tempswafalse% 211 \def\reserved@a{dvips}%
206 207
212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236
\ifx\filename@base\reserved@a\@tempswatrue\fi% \def\reserved@a{dvipdfm}% \ifx\filename@base\reserved@a\@tempswatrue\fi% \if@tempswa% \ClassInfo{leaflet}{Generating code for dvips}% \def\LL@pagesize@specials#1#2{% \@tempdima=#1\@tempdimb=#2% \AtBeginDvi{\special{papersize=\the\@tempdima,\the\@tempdimb}}}% \fi% \def\reserved@a{pdftex}% \ifx\filename@base\reserved@a \ClassInfo{leaflet}{Generating code for pdfTeX}% \def\LL@pagesize@specials#1#2{% \@tempdima=#1\@tempdimb=#2% \pdfpagewidth\@tempdima\pdfpageheight\@tempdimb}% \fi% \def\reserved@a{vtex}% \ifx\filename@base\reserved@a \ClassInfo{leaflet}{Generating code for VTeX}% \def\LL@pagesize@specials#1#2{% \@tempdima=#1\@tempdimb=#2% \mediawidth\@tempdima\mediaheight\@tempdimb}% \fi% \fi }
2.3
240 241
\setlength{\parskip}{1ex plus 2pt} \@listi% 242 \setlength{\labelwidth}{\leftmargin} 243 \addtolength{\labelwidth}{-\labelsep} 244 \pagestyle{empty} 245 \headheight\z@ 246 \headsep\z@ 247 \footskip\z@ 248 \marginparwidth\z@ 249 \marginparsep\z@ 250 \sloppy 251 \setcounter{secnumdepth}{0} 252 %\renewcommand\marginpar[2][]{\LL@CmdIgnored{\marginpar}} 253 \renewcommand\twocolumn[1][]{\LL@CmdIgnored{\twocolumn}} 254 \renewcommand\onecolumn{\LL@CmdIgnored{\onecolumn}} 255 \renewcommand\topfraction{0.7} 256 \renewcommand\bottomfraction{0.7} 257 \setlength{\textfloatsep}{10pt plus 4pt minus 3pt} 258 \setlength{\parindent}{\z@} 259 \setlength{\leftmargini}{1.5em} 260 \setlength{\leftmarginii}{1.5em} 261 \setlength{\leftmarginiii}{1.5em} 262 \setlength{\leftmarginiv}{1.5em} 263 \setlength{\leftmarginv}{1.5em} 264 \setlength{\leftmarginvi}{1.5em} 265 \setlength{\labelsep}{.5em} 266 \setlength \labelwidth{\leftmargini} 267 \addtolength\labelwidth{-\labelsep} \noparskip
268
\def\noparskip{\par\vspace{-\parskip}}
\sectfont
User macro for changing the font of the typesetted parameter of the \?section commands.
273 274 275
\newcommand{\sectfont}{\bfseries}
\renewcommand\section{\@startsection{section}{1}{\z@}% {-3.5ex \@plus -.75ex}% 276 {1ex} %{1.5ex}% 277 {\normalfont\large\sectfont}} 278 \renewcommand\subsection{\@startsection{subsection}{2}{\z@}% 279 {-2.5ex plus -.5ex}% 280 {1\p@} %{1ex}% 281 {\normalfont\normalsize\sectfont}} 282 \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% 283 {-2.5ex plus -.5ex}% 284 {-1em}% 285 {\normalfont\normalsize\sectfont}} 286 \def\part{\LL@CmdIgnored{\part}\secdef\@part\@spart} 287 \def\@part[#1]#2{} 288 \def\@spart#1{}
289 290 291
\descfont
\newcommand*\descfont{\bfseries}
\iffalse % Doesnt work! 295 \g@addto@macro\enumerate{\parsep2\p@\@plus2\p@\@minus\z@} 296 \g@addto@macro\itemize{\parsep2\p@\@plus2\p@\@minus\z@} 297 \g@addto@macro\description{\parsep2\p@\@plus2\p@\@minus\z@} 298 \else 299 \newcommand*\LL@listsetup{% 300 % \parsep.445ex\@plus.445ex\@minus.2225ex% 301 % \parsep.5ex\@plus.5ex\@minus.25ex% 302 \parsep1ex\@plus.5ex\@minus.25ex% 303 \LL@debug@info{***parsep=\the\parsep}% 304 % \itemsep.25\parsep 305 \itemsep\z@ 306 \LL@debug@info{***itemsep=\the\itemsep}% 307 \topsep\z@ 308 \LL@debug@info{***topsep=\the\topsep}% 309 % \partopsep\z@ 310 \LL@debug@info{***partopsep=\the\partopsep}% 311 } 312 \def\enumerate{% 313 \ifnum \@enumdepth >\thr@@\@toodeep\else 314 \advance\@enumdepth\@ne 315 \edef\@enumctr{enum\romannumeral\the\@enumdepth}% 316 \expandafter 317 \list 318 \csname label\@enumctr\endcsname 319 {\usecounter\@enumctr 320 \def\makelabel##1{\hss\llap{##1}}% 321 %\def\makelabel##1{##1\hfill}% 322 %\def\makelabel##1{\hss##1}% 323 \LL@listsetup 324 }% 325 \fi}
\def\itemize{% \ifnum \@itemdepth >\thr@@\@toodeep\else 328 \advance\@itemdepth\@ne 329 \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% 330 \expandafter 331 \list 332 \csname\@itemitem\endcsname 333 {% 334 \def\makelabel##1{\hss\llap{##1}}% 335 %\def\makelabel##1{##1\hfill}% 336 %\def\makelabel##1{\hss##1}% 337 \LL@listsetup 338 }% 339 \fi} 340 \renewenvironment{description} 341 {\list{}{\labelwidth\z@ \itemindent-\leftmargin 342 \let\makelabel\descriptionlabel 343 \LL@listsetup}} 344 {\endlist} 345 \fi
326 327
2.4
\setmargins
User command to specify the margins. (o, u, l, r) \setmargins{ top }{ bottom }{ left }{ right } The new user interface! By default, the leaet class does not use headings, footings and marginal notes. If the user desires, these can be restored by setting the respective lengths before calling \setmargins. Setting the margins should always be done using \setmargins; if the user assigns to any of the length registers \topmargin, \evensidemargin, \oddsidemargin using \setlength, chaos will happen.
346
\newcommand*\setmargins[4]{%
temp. top!
347 348
\setlength\topmargin{#1}% \edef\LL@tmargin{\the\topmargin}% \setlength\evensidemargin{#2}% \setlength\textheight{% \paperheight-\topmargin-\evensidemargin% -\headheight-\headsep-\footskip}% \setlength\oddsidemargin{#3}% \setlength\evensidemargin{#4}% \setlength\textwidth{% \paperwidth-\oddsidemargin-\evensidemargin-\marginparwidth-\marginparsep}% \addtolength\topmargin{-1in}% \addtolength\oddsidemargin{-1in}% \evensidemargin\oddsidemargin% }
temp. bottom!
349 350 351 352
temp. left!
353
temp. right!
354 355 356
real top!
357
real left!
358
2.5
\foldmarkrule \foldmarklength
364 365
\AddToBackground \AddToBackground*
Adds the given parameter #2 (some picture commands) to a macro which will be used inside a zero-dimensional picture environment located at the lower left corner of a page. Parameter #1 selects the page number. The star version adds the picture commands to the background of one of the combined large pages instead of one of the small pages.
\newcommand\AddToBackground{% \@ifstar{\@tempswatrue\LL@AddToBackground} 368 {\@tempswafalse\LL@AddToBackground}} 369 \@onlypreamble\AddToBackground 370 \newcommand\LL@AddToBackground[2]{% 371 \if@tempswa\def\@tempa{LL@largePic}\else\def\@tempa{LL@smallPic}\fi 372 \expandafter\providecommand\csname\@tempa\@Roman{#1}\endcsname{}% 373 \expandafter\g@addto@macro\csname\@tempa\@Roman{#1}\endcsname{#2}}
366 367
\LenToUnit
\newcommand\LenToUnit[1]{#1\@gobble}
Adds a dotted line with two scissors on the left side of the page given as parameter #1. The starred version draws only the dotted line.
\newcommand*\CutLine{% \@ifstar{\@tempswatrue\LL@CutLine}{\@tempswafalse\LL@CutLine}} 377 \@onlypreamble\CutLine 378 \newcommand*\LL@CutLine[1]{% 379 \ifLL@combine 380 \ifx\Scissors\@empty\@tempswatrue\fi 381 \if@tempswa 382 \AddToBackground{#1}{% 383 \put(0,0){% 384 \rotatebox{90}{\makebox(\LenToUnit{\paperheight},0){% 385 \normalsize 386 \dotfill}}}}% 387 \else 388 \AddToBackground{#1}{% 389 \put(0,0){% 390 \rotatebox{90}{\makebox(\LenToUnit{\paperheight},0){% 391 \normalsize 392 \dotfill\Scissors\dotfill\dotfill\Scissors\dotfill}}}}% 393 \fi 394 \fi} 395 \IfFileExists{pifont.sty} 396 {\RequirePackage{pifont}% 397 \newcommand*\Scissors{\raisebox{-0.85ex}{\large\ding{34}}}}% 398 {\newcommand*\Scissors{}}
375 376
\AddToBackground{3}{\LL@foldmark}
2.6
2.6.1
\vb@xt@
\providecommand*\vb@xt@{\vbox to}
A We use our own page saving macro instead of real L TEX output. 401
\AtBeginDocument{\EveryShipout{\LL@savePage}}
LL@page
\newcounter{LL@page}\setcounter{LL@page}{1} \newcommand\LL@tempa{}
\LL@savePage
With combine option the six small pages will be saved in box registers (\LL@boxI. . . \LL@boxVI). The box255 with the page content must be a bit moved to get a normal-sized box.
404 405
\newcommand*\LL@savePage{% \ifnum\c@LL@page<7\relax \setbox\@cclv\vbox{% \vbox{\@tempdima=1in\relax \@tempdimb=\paperheight\advance\@tempdimb-\@tempdima \pictur@(0,0)(\LenToUnit{\@tempdima},\LenToUnit{\@tempdimb})% \begingroup \set@typeset@protect \@nameuse{LL@smallPic\Roman{LL@page}}% %\set@display@protect \endgroup \endpicture}% \nointerlineskip\box\@cclv}% \ifLL@combine \@@@exec@outs \expandafter\newsavebox\csname LL@box\Roman{LL@page}\endcsname% \setbox\@cclv=\vbox{\vskip1in\unvbox\@cclv}% \setbox\@cclv=\vbox{\moveright1in\box\@cclv}% \setbox\@cclv=\hb@xt@\paperwidth{\box\@cclv\hss}% \setbox\@cclv=\vb@xt@\paperheight{\box\@cclv\vss}% \global\expandafter\setbox% \csname LL@box\Roman{LL@page}\endcsname=\box\@cclv% \typeout{\@spaces[\the\c@LL@page] ==> [\Roman{LL@page}]}% \fi \fi \ifnum\c@LL@page=7\relax \begingroup \set@typeset@protect \LL@toomanypages{% The text you supplied fills more than six pages\MessageBreak and will therefore not fit onto a single flyer}{% Try using smaller fonts or reducing vertical space}% \endgroup \fi \stepcounter{LL@page}}
Make this an error or warning message, depending on class option. (--> warning in all cases?)
430 431 432 433 434 435 436 437 438
2.6.2
NOTE TO OURSELVES: All the following must be done if the document code is already processed.
439
\ifLL@combine
\@@end
440 441
Restore the original \@outputpage command (removing any related background pictures).
442
Suppresses all everyshis clients (removing other kinds of background pictures) but our page saving macro is still needed for the next step and must be set again.
443 444 445
10
2.6.3
A Here begins the real output using L TEXs original \shipout. The everyshi package isnt active any more. The begin dvi hook is reactivated. 450 451 452 453 454 455 456
\LL@shipoutPage
A This is similar to L TEXs \@outputpage, but without a group; \set@display@protect seems to work as well.
\LL@preparePages \LL@preparePage
\newcommand*\LL@shipoutPage[1]{% \set@display@protect \let \protect \noexpand \shipout\vb@xt@\paperheight{% \set@typeset@protect \vskip-1in% \@begindvi\hb@xt@\paperwidth{\hskip-1in##1\hss}\vss}}% \newcommand*\LL@preparePages[3]{% \typeout{[\@Roman{##1}\space\@Roman{##2}\space\@Roman{##3}] ==>}%
Combine and output the frontside and the backside. The option two part arranges the pages in a dierent than the natural order, to allow the typesetting of a 4 page leaet and a detachable 2 page form, for summaries, ll-in forms, applications, questionnaires, etc.
470 471 472 473 474 475 476 477 478 479 480 481 482 483
\LL@selectOutput \iftwopart {\setcounter{page}{1}% \LL@shipoutPage{\LL@rotate@I{\LL@preparePages{6}{4}{1}}}}% {\setcounter{page}{2}% \LL@shipoutPage{\LL@rotate@II{\LL@preparePages{2}{3}{5}}}}% \else {\setcounter{page}{1}% \LL@shipoutPage{\LL@rotate@I{\LL@preparePages{5}{6}{1}}}}% {\setcounter{page}{2}% \LL@shipoutPage{\LL@rotate@II{\LL@preparePages{2}{3}{4}}}}% \fi \LL@@end }%
\else
A Create empty pages if necessary and then call the normal L TEX end. 485 486 487
11
Change History
v0.8c General: Repacked as dtx le. (RN) . . . . v0.9d General: LPPL 1.3 (HjG) . . . . . . . . . . . . M-x delete-trailing-whitespace (HjG) . More code documentation; some caveats. (HjG) . . . . . . . . . . . . . . . . . v0.9e General: Add option nish. (RN/HjG) . v0.9f General: Merge v0.9d and v0.9e (hastily). (HjG) . . . . . . . . . . . . . . . . . . . . . . . . v0.9g General: Rename option nish to combine. (RN/HjG) . . . . . . . . . . . . . . . . v1.0 General: CTAN release. (RN/HjG) . . . . . v1.0a General: Option debug. (RN) . . . . . . . . \LenToUnit: New macro \LenToUnit. (RN) . . . . . . . . . . . . . . . . . . . . . . . . v1.0b General: New option nospecialtricks for testing purposes. (RN) . . . . . . . . . . . 1 \closeout: \special must be processed similar to e. g. \write (VTEX). (RN) . 3 v1.0c \LL@shipoutPage: Fix \protect-ion problems. (RN/HjG) . . . . . . . . . . . . . . . 11 v1.0d General: Options twopart/notwopart suggested by Luis Rivera. No more nal in \ExecuteOptions suggested by Axel Berger (RN) . . . . . . . . . . . . . 1 v1.0pre1 General: Redenition of \immediate, \write, \openout and \closeout. (RN) . . . . . . . . . . . . . . . . . . . . . . . . 1 v1.0pre2 General: eTeX support. (RN) . . . . . . . . . 1 v1.0pre3 General: Options landscape and portait. (RN) . . . . . . . . . . . . . . . . . . . . 1
1 1 1 1 1
1 1 1 9
Index
Numbers written in italic refer to the page where the corresponding entry is described; numbers underlined refer to the code line of the denition; numbers in roman refer to the code lines where the entry is used.
Symbols \@@@closeout . . . . . . . . . . . 23, 90, 107, 134, 155 \@@@exec@outs . . . . . . . . . . . . . 24, 135, 156, 418 \@@@immediate 22, 88, 103, 105, 107, 109, 128, 131, 134, 147, 151, 155 \@@@openout . . . . . . . . . . . . 23, 90, 105, 131, 151 \@@@out@mark . . 141, 146, 150, 154, 159, 164166 \@@@pending@outs . . 88, 128, 131, 134, 136, 147, 151, 155, 175, 189 \@@@special . 24, 89, 100, 109 \@@@write 22, 89, 103, 128, 147 \@@end . . . . . . . . . . . . 3, 440 \@EveryShipout@AtNextHook . . . . . . . . . . . . . . 444 \@EveryShipout@Hook . . . 443 \@Roman . . 372, 373, 465, 469 \@begindvi . 3, 202, 450, 463 \@cclv 406, 416, 420423, 425 \@dummy@whatsit . . . . . . . . . . 113, 127, 130, 133 \@enumctr . . . . 315, 318, 319 \@enumdepth . . . . . . 313315 \@for . . . . . . . . . . . . . . . 175 \@ifequalsign . . . . . . . . 148 \@itemdepth . . . . . . 327329 \@itemitem . . . . . . 329, 332 \@listI . . . . . . . . . 270, 272 \@listi . . . . . . 241, 270, 272 \@minus . . . 295297, 300302 \@onlypreamble . . . 369, 377 \@outputpage . . . . . . . 2, 442 \@part . . . . . . . . . . 286, 287 \@spart . . . . . . . . . 286, 288 \@startsection 274, 278, 282 \@tempa . . . . . . . . . 371373 \@toodeep . . . . . . . 313, 327 \@unexpandable@protect 196 A \AddToBackground . . . . . . . . . 366, 382, 388, 399 \AddToBackground* . . . . 366 \AtBeginDvi . . . . . . . . . . 219 \AtEndOfClass . . . 20, 51, 57 B \botmarks . . . . . . . 159, 166 \bottomfraction . . . . . . 256 C \c@@@last@exec . . . . . . . . . . . 158, 163, 179, 181 \c@@@total@outs . . . . . . . 145, 146, 149, 150, 153, 154, 158, 162, 167
12
\c@LL@page . . . . . . . 405, 426, 429, \c@page . . . . . . . . . \ClassWarning . . . . . \closeout . . . . . . . . \CutLine . . . . . . . . . \CutLine* . . . . . . . . D \deadcycles . . . . . \descfont . . . . . . \description . . . . \descriptionlabel \ding . . . . . . . . . . \do . . . . . . . . . . . \dotfill . . . . . . .
. . . . . 201 . 291, 292 . . . . . 297 290, 342 . . . . . 397 . . . . . 175 . 386, 392
E \endlist . . . . . . . . . \endpicture . . . . . . \enumerate . . . . . . \evensidemargin . . . 349, 351, 354, \EveryShipout . . . . F \filename@base . . . . . . . . 212, 214, \filename@parse . . . \firstmarks . . . . . . . \foldmarklength . . . \foldmarkrule . . . . . \footnotesize . . . . \footskip . . . . . . .
G \Gin@driver . . . . . . 209, 210 \globmarks . . . . . . . . . . 141 H \headheight . . . . . . 245, 352 \headsep . . . . . . . . 246, 352 \hskip . . . . . . . . . . . . . . 463 \hss . . . . . . . . . . . . . 320, 322, 334, 336, 422, 463 I \if@nobreak . . . . . . . . . . 200 \iffalse . . . . . . . . . . . . 293 \iflandscape . . . . 4, 73, 452 \ifLL@combine . . . 21, 29, 58, 71, 203, 379, 417, 439 \iftumble . . . . . . . 5, 75, 82 \iftwopart . . . . . . . . 6, 471 \ifvmode . . . . . . . . . . . . 200 \immediate . . . . . . . . 22, 88 \immediate@closeout 94, 106 \immediate@openout . 93, 104 \immediate@special . 95, 108 \immediate@write . . 92, 102 \itemindent . . . . . . . . . . 341 \itemize . . . . . . . . 296, 326 \itemsep . . . . . . . . 304306
L \labelsep 243, 265, 267, 291 \labelwidth . . . . . . . . . . 242, 243, 266, 267, 341 \landscapefalse . . . . . . . 15 \landscapetrue . . . . . . . . 14 \leftmargin . . . . . . 242, 341 \leftmargini . . . . . 259, 266 \leftmarginii . . . . . . . . 260 \leftmarginiii . . . . . . . 261 \leftmarginiv . . . . . . . . 262 \leftmarginv . . . . . . . . . 263 \leftmarginvi . . . . . . . . 264 \LenToUnit . . . . . . . 42, 44, 45, 374, 384, 390, 409 \line . . . . . . . . . . . . . . . . 45 \linethickness . . . . . . . . 42 \list . . . . . . . . 317, 331, 341 \LL@@end . . . . . . . . . . 3, 482 \LL@AddToBackground . . . . . . . . . . 367, 368, 370 \LL@begindvi . . . . . . . 3, 450 \LL@CmdIgnored . . . . . . . . . . . 237, 252254, 286 \LL@combinefalse . . . . . . 31 \LL@combinetrue . . . . . . . 30 \LL@CutLine . . . . . . 376, 378 \LL@debug@info . . . . . . . 7, 16, 137, 161, 170, 180, 303, 306, 308, 310 \LL@foldmark . . . . . . 38, 399 \LL@listsetup . . . . . . . . . . . . 299, 323, 337, 343 \LL@outputpage . . . . . 2, 442 \LL@page . . . . . . . . . . . . 402 \LL@pagesize@specials . . . . . 206, 453, 455, 485 \LL@preparePage . . . . . . 457 \LL@preparePages . . . . . 457, 473, 475, 478, 480 \LL@rotate@I . . . 72, 473, 478 \LL@rotate@II . . 72, 475, 480 \LL@savePage . . 401, 404, 445 \LL@selectOutput . . 32, 470 \LL@setPaperSize . . 26, 361 \LL@shipout . . . . . . . . 2, 450 \LL@shipoutPage . . . . . . 457, 473, 475, 478, 480 \LL@tempa . . . . . . . . . . . 403 \LL@tmargin . . . . . . . 43, 348 \LL@toomanypages . . . . . 49, 52, 59, 62, 204, 432 \llap . . . . . . . . . . . 320, 334 \long . . . . 101, 126, 144, 192 M \makelabel . . . . . . . . . . . 320322, 334336, \marginpar . . . . . . . . . . \marginparsep . . . . 249, \marginparwidth . . 248, \marks . . . . . . . 146, 150, \mediaheight . . . . . . . . . \mediawidth . . . . . . . . . .
\moveright
. . . . . . . . . . 421
N \newcounter . . . 142, 143, 402 \nobreak . . . . . . . . . . . . 200 \nointerlineskip . . . . . 416 \noparskip . . . . . . . . . . 268 \null . . . . . . . . . . . 448, 490 \number . . . . . . . . . . 128, 131, 134, 147, 151, 155 O \oddsidemargin . . . . . . . . 353, 356, \old@footnotesize \old@small . . . . . . \onecolumn . . . . . . . \openout . . . . . . . . .
P \pagestyle . . . 244, 441, 487 \paperheight . . . . 28, 43, 351, 384, 390, 408, 423, 453, 455, 460, 485 \paperwidth . . . . . . . . . . . 28, 356, 362, 422, 451, 453, 455, 463, 485 \part . . . . . . . . . . . . . . . 286 \partopsep . . . . . . 309, 310 \PassOptionsToClass . . . . . . . . . . 50, 56, 67, 68 \PassOptionsToPackage 811 \pdfliteral . . . . . . . . . . 117 \pdfoutput . . . . . . . . . . 117 \pdfpageheight . . . . . . . 226 \pdfpagewidth . . . . . . . . 226 \pending@@@openout . . . . 148 \pending@@openout . . . . 148 \pending@@write 101, 126, 144 \pending@closeout . . . . . . . . . 99, 112, 132, 152 \pending@openout . . . . . . . . . . 98, 111, 129, 148 \pending@write . 97, 101, 110 \pictur@ . . . . . . . . 409, 466 \protected@write . . . . . 192 R \raisebox . . . . . . . . \reserved@b . . . 174, \reset@immediate . . . 96, 103, 105, \rotatebox . . . . . . . 76, 81, 83, 85,
S \Scissors . . . . . . . . . . . \secdef . . . . . . . . . . . . . \sectfont 273, 277, 281, \set@display@protect . . . . . . . . . . . . . 413, \set@typeset@protect . . . . . . . . . 411, 431, \setmargins . . . . . . 346,
13
\shipout . . . 2, 201, 450, \sloppy . . . . . . . . . . . . . \special . . . . . . . . . . . . 24, 89, 95, 100, 113, \stepcounter . . . . . . . . . \subsubsection . . . . . . .
\thepage . . . . . . . . . \topfraction . . . . . . \topmargin 347, 348, \topmarks . . . . . . . . \topsep . . . . . . . . . \tumblefalse . . . . . . \tumbletrue . . . . . . . \twocolumn . . . . . . . \twopartfalse . . . . . \twoparttrue . . . . . .
U \unvbox . . . . . . . . . . . . . 420 V \vb@xt@ . . . . . . 400, 423, 460 \vskip . . . . . . . . . . 420, 462 \vss . . . . . . . . . . . . 423, 463 W \write . . . . . . . .
14