diff options
author | Karl Berry <karl@freefriends.org> | 2014-06-18 23:13:31 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2014-06-18 23:13:31 +0000 |
commit | c04fbad5aaa7648bdafba2e41f8390af5e0cb82b (patch) | |
tree | 8f5ac446c2ba50a4a59c109a792efdb0efb0b068 /Master/texmf-dist/tex | |
parent | 67262a49138e713fca67ad2ec494f718c2dda821 (diff) |
longfigure (12jun14)
git-svn-id: svn://tug.org/texlive/trunk@34302 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/longfigure/longfigure.sty | 473 |
1 files changed, 473 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/longfigure/longfigure.sty b/Master/texmf-dist/tex/latex/longfigure/longfigure.sty new file mode 100644 index 00000000000..89c30043391 --- /dev/null +++ b/Master/texmf-dist/tex/latex/longfigure/longfigure.sty @@ -0,0 +1,473 @@ +%% +%% This is file `longfigure.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% longfigure.dtx (with options: `longfigure') +%% ---------------------------------------------------------------- +%% longfigure --- A LaTeX package providing a table-like environment +%% that can display a stream of subfigures as a single +%% figure that can be broken by T\kern -.1667em\lower .5ex\hbox {E}\kern -.125emX\spacefactor \@m 's +%% standard page-breaking algorithm. +%% +%% E-mail: tim.arnold@sas.com +%% ---------------------------------------------------------------- +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{longfigure}[2014/1/06 v1.0] +\ProvidesPackage{longfigure}[2014/01/06 longfigure] +\RequirePackage{xkeyval} +\newcommand*{\LFcounter}{figure} +\newcommand*{\LFreset}{\@empty} +\DeclareOptionX{figname}[figure]{\renewcommand*{\LFcounter}{#1}} +\DeclareOptionX{resetby}{\renewcommand*{\LFreset}{#1}} +\DeclareOptionX{set}{} +\DeclareOptionX{final}{} +\DeclareOptionX{errorshow}{\def\LF@warn{\PackageInfo{longfigure}}} +\DeclareOptionX{pausing}{\def\LF@warn#1{\LF@err{#1}{This is not really an error}}} +\ProcessOptionsX +\def\LFProcessOptions#1{ + \@ifundefined{c@#1}{% + \RequirePackage{tocloft} + \def\LFuc##1##2{\MakeUppercase{##1}{##2}} + \expandafter\def\csname list#1name\endcsname{List of \LFuc#1s} + \ifx\@empty\LFreset% + \newlistof{#1}{lft}{\csname list#1name\endcsname} + \else + \newlistof[\LFreset]{#1}{lft}{\csname list#1name\endcsname} + \fi + }{}% +} +\expandafter\LFProcessOptions\expandafter{\LFcounter} +\newif\ifLF@same +\newcommand{\strcfstr}[2]{% + \LF@samefalse + \begingroup\def\2{#2} + \ifx\2#1\endgroup\LF@sametrue + \else\endgroup + \fi +} +\def\LFupcase#1{% + \def\x##1##2{% + \MakeUppercase{##1}{##2}}\x#1% +} +\def\LF@name{\expandafter\LFupcase% + \expandafter{\LFcounter}~% + \expandafter\csname the\LFcounter\endcsname}% +\def\LF@err{\PackageError{longfigure}} +\def\LF@warn{\PackageWarning{longfigure}} +\def\LF@final@warn{% + \AtEndDocument{% + \LF@warn{\LFcounter \@width s have changed. Rerun \LaTeX\.\@gobbletwo}}% + \global\let\LF@final@warn\relax} +\newskip\LFleft \LFleft=\fill +\newskip\LFright \LFright=\fill +\newskip\LFpre \LFpre=\bigskipamount +\newskip\LFpost \LFpost=\bigskipamount +\newcount\LFchunksize \LFchunksize=20 +\let\c@LFchunksize\LFchunksize +\newdimen\LFcapwidth \LFcapwidth=4in +\newbox\LF@head +\newbox\LF@firsthead +\newbox\LF@foot +\newbox\LF@lastfoot +\newcount\LF@cols +\newcount\LF@rows +\newcounter{LF@tables} +\newcounter{LF@chunks}[LF@tables] +\newtoks\LF@p@ftn +\mathchardef\LF@end@pen=30000 +\def\longfigure{% + \par + \ifx\multicols\@undefined + \else + \ifnum\col@number>\@ne + \@twocolumntrue + \fi + \fi + \if@twocolumn + \LF@err{longfigure not in 1-column mode}\@ehc + \fi + \begingroup + \@ifnextchar[\LF@array{\LF@array[x]}} +\def\LF@array[#1]#2{% + \refstepcounter{\LFcounter}\stepcounter{LF@tables}% + \if l#1% + \LFleft\z@ \LFright\fill + \else\if r#1% + \LFleft\fill \LFright\z@ + \else\if c#1% + \LFleft\fill \LFright\fill + \fi\fi\fi + \let\LF@mcol\multicolumn + \let\LF@@tabarray\@tabarray + \let\LF@@hl\hline + \def\@tabarray{% + \let\hline\LF@@hl + \LF@@tabarray}% + \let\\\LF@tabularcr\let\tabularnewline\\% + \def\newpage{\noalign{\break}}% + \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LF@no@pgbk-}4}% + \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LF@no@pgbk4}% + \let\hline\LF@hline \let\kill\LF@kill\let\caption\LF@caption + \@tempdima\ht\strutbox + \let\@endpbox\LF@endpbox + \ifx\extrarowheight\@undefined + \let\@acol\@tabacol + \let\@classz\@tabclassz \let\@classiv\@tabclassiv + \def\@startpbox{\vtop\LF@startpbox}% + \let\@@startpbox\@startpbox + \let\@@endpbox\@endpbox + \let\LF@LL@FM@cr\@tabularcr + \else + \advance\@tempdima\extrarowheight + \col@sep\tabcolsep + \let\@startpbox\LF@startpbox\let\LF@LL@FM@cr\@arraycr + \fi + \setbox\@arstrutbox\hbox{\vrule + \@height \arraystretch \@tempdima + \@depth \arraystretch \dp \strutbox + \@width \z@}% + \let\@sharp##\let\protect\relax + \begingroup + \@mkpream{#2}% + \xdef\LF@bchunk{% + \global\advance\c@LF@chunks\@ne + \global\LF@rows\z@\setbox\z@\vbox\bgroup + \LF@setprevdepth + \tabskip\LFleft \noexpand\halign to\hsize\bgroup + \tabskip\z@ \@arstrut \@preamble \tabskip\LFright \cr}% + \endgroup + \expandafter\LF@nofcols\LF@bchunk&\LF@nofcols + \LF@make@row + \m@th\let\par\@empty + \everycr{}\lineskip\z@\baselineskip\z@ + \LF@bchunk} +\def\LF@no@pgbk#1[#2]{\penalty #1\@getpen{#2}\ifnum`{=0\fi}} +\def\LF@start{% + \let\LF@start\endgraf + \endgraf\penalty\z@\vskip\LFpre + \dimen@\pagetotal + \advance\dimen@ \ht\ifvoid\LF@firsthead\LF@head\else\LF@firsthead\fi + \advance\dimen@ \dp\ifvoid\LF@firsthead\LF@head\else\LF@firsthead\fi + \advance\dimen@ \ht\LF@foot + \dimen@ii\vfuzz + \vfuzz\maxdimen + \setbox\tw@\copy\z@ + \setbox\tw@\vsplit\tw@ to \ht\@arstrutbox + \setbox\tw@\vbox{\unvbox\tw@}% + \vfuzz\dimen@ii + \advance\dimen@ \ht + \ifdim\ht\@arstrutbox>\ht\tw@\@arstrutbox\else\tw@\fi + \advance\dimen@\dp + \ifdim\dp\@arstrutbox>\dp\tw@\@arstrutbox\else\tw@\fi + \advance\dimen@ -\pagegoal + \ifdim \dimen@>\z@\vfil\break\fi + \global\@colroom\@colht + \ifvoid\LF@foot\else + \advance\vsize-\ht\LF@foot + \global\advance\@colroom-\ht\LF@foot + \dimen@\pagegoal\advance\dimen@-\ht\LF@foot\pagegoal\dimen@ + \maxdepth\z@ + \fi + \ifvoid\LF@firsthead\copy\LF@head\else\box\LF@firsthead\fi\nobreak + \output{\LF@output}} +\def\endlongfigure{% + \crcr + \noalign{% + \let\LF@entry\LF@entry@chop + \xdef\LF@save@row{\LF@save@row}}% + \LF@echunk + \LF@start + \unvbox\z@ + \LF@get@widths + \if@filesw + {\let\LF@entry\LF@entry@write\immediate\write\@auxout{% + \gdef\expandafter\noexpand + \csname LF@\romannumeral\c@LF@tables\endcsname + {\LF@save@row}}}% + \fi + \ifx\LF@save@row\LF@@save@row + \else + \LF@warn{Column \@width s have changed\MessageBreak + in table \thetable}% + \LF@final@warn + \fi + \endgraf\penalty -\LF@end@pen + \endgroup + \global\@mparbottom\z@ + \pagegoal\vsize + \endgraf\penalty\z@\addvspace\LFpost + \ifvoid\footins\else\insert\footins{}\fi} +\def\LF@nofcols#1&{% + \futurelet\@let@token\LF@n@fcols} +\def\LF@n@fcols{% + \advance\LF@cols\@ne + \ifx\@let@token\LF@nofcols + \expandafter\@gobble + \else + \expandafter\LF@nofcols + \fi} +\def\LF@tabularcr{% + \relax\iffalse{\fi\ifnum0=`}\fi + \@ifstar + {\def\crcr{\LF@crcr\noalign{\nobreak}}\let\cr\crcr + \LF@t@bularcr}% + {\LF@t@bularcr}} +\let\LF@crcr\crcr +\let\LF@setprevdepth\relax +\def\LF@t@bularcr{% + \global\advance\LF@rows\@ne + \ifnum\LF@rows=\LFchunksize + \gdef\LF@setprevdepth{% + \prevdepth\z@\global + \global\let\LF@setprevdepth\relax}% + \expandafter\LF@xtabularcr + \else + \ifnum0=`{}\fi + \expandafter\LF@LL@FM@cr + \fi} +\def\LF@xtabularcr{% + \@ifnextchar[\LF@argtabularcr\LF@ntabularcr} +\def\LF@ntabularcr{% + \ifnum0=`{}\fi + \LF@echunk + \LF@start + \unvbox\z@ + \LF@get@widths + \LF@bchunk} +\def\LF@argtabularcr[#1]{% + \ifnum0=`{}\fi + \ifdim #1>\z@ + \unskip\@xargarraycr{#1}% + \else + \@yargarraycr{#1}% + \fi + \LF@echunk + \LF@start + \unvbox\z@ + \LF@get@widths + \LF@bchunk} +\def\LF@echunk{% + \crcr\LF@save@row\cr\egroup + \global\setbox\@ne\lastbox + \unskip + \egroup} +\def\LF@entry#1#2{% + \ifhmode\@firstofone{&}\fi\omit + \ifnum#1=\c@LF@chunks + \else + \kern#2\relax + \fi} +\def\LF@entry@chop#1#2{% + \noexpand\LF@entry + {\ifnum#1>\c@LF@chunks + 1}{0pt% + \else + #1}{#2% + \fi}} +\def\LF@entry@write{% + \noexpand\LF@entry^^J% + \@spaces} +\def\LF@kill{% + \LF@echunk + \LF@get@widths + \expandafter\LF@rebox\LF@bchunk} +\def\LF@rebox#1\bgroup{% + #1\bgroup + \unvbox\z@ + \unskip + \setbox\z@\lastbox} +\def\LF@blank@row{% + \xdef\LF@save@row{\expandafter\LF@build@blank + \romannumeral\number\LF@cols 001 }} +\def\LF@build@blank#1{% + \if#1m% + \noexpand\LF@entry{1}{0pt}% + \expandafter\LF@build@blank + \fi} +\def\LF@make@row{% + \global\expandafter\let\expandafter\LF@save@row + \csname LF@\romannumeral\c@LF@tables\endcsname + \ifx\LF@save@row\relax + \LF@blank@row + \else + {\let\LF@entry\or + \if!% + \ifcase\expandafter\expandafter\expandafter\LF@cols + \expandafter\@gobble\LF@save@row + \or + \else + \relax + \fi + !% + \else + \aftergroup\LF@blank@row + \fi}% + \fi} +\let\setlongfigures\relax +\def\LF@get@widths{% + \setbox\tw@\hbox{% + \unhbox\@ne + \let\LF@old@row\LF@save@row + \global\let\LF@save@row\@empty + \count@\LF@cols + \loop + \unskip + \setbox\tw@\lastbox + \ifhbox\tw@ + \LF@def@row + \advance\count@\m@ne + \repeat}% + \ifx\LF@@save@row\@undefined + \let\LF@@save@row\LF@save@row + \fi} +\def\LF@def@row{% + \let\LF@entry\or + \edef\@tempa{% + \ifcase\expandafter\count@\LF@old@row + \else + {1}{0pt}% + \fi}% + \let\LF@entry\relax + \xdef\LF@save@row{% + \LF@entry + \expandafter\LF@max@sel\@tempa + \LF@save@row}} +\def\LF@max@sel#1#2{% + {\ifdim#2=\wd\tw@ + #1% + \else + \number\c@LF@chunks + \fi}% + {\the\wd\tw@}} +\def\LF@hline{% + \noalign{\ifnum0=`}\fi + \penalty\@M + \futurelet\@let@token\LF@@hline} +\def\LF@@hline{% + \ifx\@let@token\hline + \global\let\@gtempa\@gobble + \gdef\LF@sep{\penalty-\@medpenalty\vskip\doublerulesep}% + \else + \global\let\@gtempa\@empty + \gdef\LF@sep{\penalty-\@lowpenalty\vskip-\arrayrulewidth}% + \fi + \ifnum0=`{\fi}% + \multispan\LF@cols + \unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr + \noalign{\LF@sep}% + \multispan\LF@cols + \unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr + \noalign{\penalty\@M}% + \@gtempa} +\def\LF@caption{% + \noalign\bgroup + \@ifnextchar[{\egroup\LF@c@ption\@firstofone}\LF@capti@n} +\def\LF@c@ption#1[#2]#3{% + \LF@makecaption#1\LF@name{#3}% + \def\@tempa{#2}% + \ifx\@tempa\@empty\else + {\let\\\space + \strcfstr{\LFcounter}{figure} + \ifLF@same\def\LFoutfile{lof}\else + \strcfstr{\LFcounter}{table} + \ifLF@same\def\LFoutfile{lot}\else + \def\LFoutfile{lft}\fi\fi + \addcontentsline{\LFoutfile}{\LFcounter} + {\expandafter\protect\expandafter\numberline\expandafter% + {\expandafter\csname the\LFcounter\endcsname}{#2}}}% + \fi +} +\def\LF@capti@n{% + \@ifstar + {\egroup\LF@c@ption\@gobble[]}% + {\egroup\@xdblarg{\LF@c@ption\@firstofone}}} +\def\LF@makecaption#1#2#3{% + \LF@mcol\LF@cols c{\hbox to\z@{\hss\parbox[t]\LFcapwidth{% + \sbox\@tempboxa{#1{#2: }#3}% + \ifdim\wd\@tempboxa>\hsize + #1{#2: }#3% + \else + \hbox to\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \endgraf\vskip\baselineskip}% + \hss}}} +\def\LF@output{% + \ifnum\outputpenalty <-\@Mi + \ifnum\outputpenalty > -\LF@end@pen + \LF@err{floats and marginpars not allowed in a longfigure}\@ehc + \else + \setbox\z@\vbox{\unvbox\@cclv}% + \ifdim \ht\LF@lastfoot>\ht\LF@foot + \dimen@\pagegoal + \advance\dimen@-\ht\LF@lastfoot + \ifdim\dimen@<\ht\z@ + \setbox\@cclv\vbox{\unvbox\z@\copy\LF@foot\vss}% + \@makecol + \@outputpage + \setbox\z@\vbox{\box\LF@head}% + \fi + \fi + \global\@colroom\@colht + \global\vsize\@colht + \vbox + {\unvbox\z@\box\ifvoid\LF@lastfoot\LF@foot\else + \LF@lastfoot\fi}% + \fi + \else + \setbox\@cclv\vbox{\unvbox\@cclv\copy\LF@foot\vss}% + \@makecol + \@outputpage + \global\vsize\@colroom + \copy\LF@head\nobreak + \fi} +\def\LF@end@hd@ft#1{% + \LF@echunk + \ifx\LF@start\endgraf + \LF@err + {Longfigure head or foot not at start of table}% + {Increase LFchunksize}% + \fi + \setbox#1\box\z@ + \LF@get@widths + \LF@bchunk} +\def\endLFfirsthead{\LF@end@hd@ft\LF@firsthead} +\def\endLFhead{\LF@end@hd@ft\LF@head} +\def\endLFfoot{\LF@end@hd@ft\LF@foot} +\def\endLFlastfoot{\LF@end@hd@ft\LF@lastfoot} + % +\def\LF@startpbox#1{% + \bgroup + \let\@footnotetext\LF@p@ftntext + \setlength\hsize{#1}% + \@arrayparboxrestore + \vrule \@height \ht\@arstrutbox \@width \z@} +\def\LF@endpbox{% + \@finalstrut\@arstrutbox + \egroup + \the\LF@p@ftn + \global\LF@p@ftn{}% + \hfil} +\def\LF@p@ftntext#1{% + \edef\@tempa{\the\LF@p@ftn\noexpand\footnotetext[\the\c@footnote]}% + \global\LF@p@ftn\expandafter{\@tempa{#1}}}% +%% Copyright (C) 2014 by SAS Institute Inc. <tim.arnold@sas.com> +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License (LPPL), either +%% version 1.3c of this license or any later version. +%% The latest version of this license is in the file: +%% http://www.latex-project.org/lppl.txt +%% +%% This work is "maintained" (as per LPPL maintenance status) by +%% Tim Arnold. +%% +%% This work consists of the file longfigure.dtx +%% and the derived files: +%% README (this file) +%% longfigure.ins +%% longfigure.pdf +%% longfigure.sty +%% +%% End of file `longfigure.sty'. |