Fix some runtime clang sanitizer warnings.
[ttfautohint.git] / doc / longtable-patched.sty
blob064ea035be909ec5fc71270b62ec5e37a2f1523c
1 %% This is file `longtable-patched.sty'.
2 %%
3 %% It is the file `longtable.sty' (from the Standard LaTeX `Tools Bundle')
4 %% with a patch from
5 %%
6 %% http://www.latex-project.org/cgi-bin/ltxbugs2html?pr=tools/3512
7 %%
8 %% to fix a serious layout issue with floats. This is a legal modification
9 %% based on the LPPL license since the file name has been changed.
11 %% The original source code file `longtable.dtx' can be found at
13 %% http://ctan.org/pkg/longtable
16 %% For reference, here the original copyright notice.
18 %% This is file `longtable.sty',
19 %% generated with the docstrip utility.
22 %% The original source files were:
24 %% longtable.dtx (with options: `package')
25 %%
26 %% This is a generated file.
27 %%
28 %% Copyright 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005
29 %% 2006 2008 2009
30 %% The LaTeX3 Project and any individual authors listed elsewhere
31 %% in this file.
32 %%
33 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.
34 %% --------------------------------------------------------------------------
35 %%
36 %% It may be distributed and/or modified under the
37 %% conditions of the LaTeX Project Public License, either version 1.3c
38 %% of this license or (at your option) any later version.
39 %% The latest version of this license is in
40 %% http://www.latex-project.org/lppl.txt
41 %% and version 1.3c or later is part of all distributions of LaTeX
42 %% version 2005/12/01 or later.
43 %%
44 %% This file may only be distributed together with a copy of the LaTeX
45 %% `Tools Bundle'. You may however distribute the LaTeX `Tools Bundle'
46 %% without such generated files.
47 %%
48 %% The list of all files belonging to the LaTeX `Tools Bundle' is
49 %% given in the file `manifest.txt'.
50 %%
51 %% File: longtable.dtx Copyright (C) 1990-2001 David Carlisle
52 \NeedsTeXFormat{LaTeX2e}[1995/06/01]
53 \ProvidesPackage{longtable-patched}
54 [2014/01/29 v4.11-patched Multi-page Table package (DPC)]
55 \def\LT@err{\PackageError{longtable-patched}}
56 \def\LT@warn{\PackageWarning{longtable-patched}}
57 \def\LT@final@warn{%
58 \AtEndDocument{%
59 \LT@warn{Table \@width s have changed. Rerun LaTeX.\@gobbletwo}}%
60 \global\let\LT@final@warn\relax}
61 \DeclareOption{errorshow}{%
62 \def\LT@warn{\PackageInfo{longtable-patched}}}
63 \DeclareOption{pausing}{%
64 \def\LT@warn#1{%
65 \LT@err{#1}{This is not really an error}}}
66 \DeclareOption{set}{}
67 \DeclareOption{final}{}
68 \ProcessOptions
69 \newskip\LTleft \LTleft=\fill
70 \newskip\LTright \LTright=\fill
71 \newskip\LTpre \LTpre=\bigskipamount
72 \newskip\LTpost \LTpost=\bigskipamount
73 \newcount\LTchunksize \LTchunksize=20
74 \let\c@LTchunksize\LTchunksize
75 \newdimen\LTcapwidth \LTcapwidth=4in
76 \newbox\LT@head
77 \newbox\LT@firsthead
78 \newbox\LT@foot
79 \newbox\LT@lastfoot
80 \newcount\LT@cols
81 \newcount\LT@rows
82 \newcounter{LT@tables}
83 \newcounter{LT@chunks}[LT@tables]
84 \ifx\c@table\undefined
85 \newcounter{table}
86 \def\fnum@table{\tablename~\thetable}
87 \fi
88 \ifx\tablename\undefined
89 \def\tablename{Table}
90 \fi
91 \newtoks\LT@p@ftn
92 \mathchardef\LT@end@pen=30000
93 \def\longtable{%
94 \par
95 \ifx\multicols\@undefined
96 \else
97 \ifnum\col@number>\@ne
98 \@twocolumntrue
99 \fi
101 \if@twocolumn
102 \LT@err{longtable not in 1-column mode}\@ehc
104 \begingroup
105 \@ifnextchar[\LT@array{\LT@array[x]}}
106 \def\LT@array[#1]#2{%
107 \refstepcounter{table}\stepcounter{LT@tables}%
108 \if l#1%
109 \LTleft\z@ \LTright\fill
110 \else\if r#1%
111 \LTleft\fill \LTright\z@
112 \else\if c#1%
113 \LTleft\fill \LTright\fill
114 \fi\fi\fi
115 \let\LT@mcol\multicolumn
116 \let\LT@@tabarray\@tabarray
117 \let\LT@@hl\hline
118 \def\@tabarray{%
119 \let\hline\LT@@hl
120 \LT@@tabarray}%
121 \let\\\LT@tabularcr\let\tabularnewline\\%
122 \def\newpage{\noalign{\break}}%
123 \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}%
124 \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}%
125 \let\hline\LT@hline \let\kill\LT@kill\let\caption\LT@caption
126 \@tempdima\ht\strutbox
127 \let\@endpbox\LT@endpbox
128 \ifx\extrarowheight\@undefined
129 \let\@acol\@tabacol
130 \let\@classz\@tabclassz \let\@classiv\@tabclassiv
131 \def\@startpbox{\vtop\LT@startpbox}%
132 \let\@@startpbox\@startpbox
133 \let\@@endpbox\@endpbox
134 \let\LT@LL@FM@cr\@tabularcr
135 \else
136 \advance\@tempdima\extrarowheight
137 \col@sep\tabcolsep
138 \let\@startpbox\LT@startpbox\let\LT@LL@FM@cr\@arraycr
140 \setbox\@arstrutbox\hbox{\vrule
141 \@height \arraystretch \@tempdima
142 \@depth \arraystretch \dp \strutbox
143 \@width \z@}%
144 \let\@sharp##\let\protect\relax
145 \begingroup
146 \@mkpream{#2}%
147 \xdef\LT@bchunk{%
148 \global\advance\c@LT@chunks\@ne
149 \global\LT@rows\z@\setbox\z@\vbox\bgroup
150 \LT@setprevdepth
151 \tabskip\LTleft \noexpand\halign to\hsize\bgroup
152 \tabskip\z@ \@arstrut \@preamble \tabskip\LTright \cr}%
153 \endgroup
154 \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols
155 \LT@make@row
156 \m@th\let\par\@empty
157 \everycr{}\lineskip\z@\baselineskip\z@
158 \LT@bchunk}
159 \def\LT@no@pgbk#1[#2]{\penalty #1\@getpen{#2}\ifnum`{=0\fi}}
160 \def\LT@start{%
161 \let\LT@start\endgraf
162 \endgraf\penalty\z@\vskip\LTpre
163 \dimen@\pagetotal
164 \advance\dimen@ \ht\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi
165 \advance\dimen@ \dp\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi
166 \advance\dimen@ \ht\LT@foot
167 \dimen@ii\vfuzz
168 \vfuzz\maxdimen
169 \setbox\tw@\copy\z@
170 \setbox\tw@\vsplit\tw@ to \ht\@arstrutbox
171 \setbox\tw@\vbox{\unvbox\tw@}%
172 \vfuzz\dimen@ii
173 \advance\dimen@ \ht
174 \ifdim\ht\@arstrutbox>\ht\tw@\@arstrutbox\else\tw@\fi
175 \advance\dimen@\dp
176 \ifdim\dp\@arstrutbox>\dp\tw@\@arstrutbox\else\tw@\fi
177 \advance\dimen@ -\pagegoal
178 \ifdim \dimen@>\z@\vfil\break\fi
179 \global\@colroom\@colht
180 \ifvoid\LT@foot\else
181 \global\advance\vsize-\ht\LT@foot
182 \global\advance\@colroom-\ht\LT@foot
183 \dimen@\pagegoal\advance\dimen@-\ht\LT@foot\pagegoal\dimen@
184 \maxdepth\z@
186 \ifvoid\LT@firsthead\copy\LT@head\else\box\LT@firsthead\fi\nobreak
187 \output{\LT@output}}
188 \def\endlongtable{%
189 \crcr
190 \noalign{%
191 \let\LT@entry\LT@entry@chop
192 \xdef\LT@save@row{\LT@save@row}}%
193 \LT@echunk
194 \LT@start
195 \unvbox\z@
196 \LT@get@widths
197 \if@filesw
198 {\let\LT@entry\LT@entry@write\immediate\write\@auxout{%
199 \gdef\expandafter\noexpand
200 \csname LT@\romannumeral\c@LT@tables\endcsname
201 {\LT@save@row}}}%
203 \ifx\LT@save@row\LT@@save@row
204 \else
205 \LT@warn{Column \@width s have changed\MessageBreak
206 in table \thetable}%
207 \LT@final@warn
209 \endgraf\penalty -\LT@end@pen
210 \ifvoid\LT@foot\else
211 \global\advance\vsize\ht\LT@foot
212 \global\advance\@colroom\ht\LT@foot
213 \dimen@\pagegoal\advance\dimen@\ht\LT@foot\pagegoal\dimen@
215 \endgroup
216 \global\@mparbottom\z@
217 \endgraf\penalty\z@\addvspace\LTpost
218 \ifvoid\footins\else\insert\footins{}\fi}
219 \def\LT@nofcols#1&{%
220 \futurelet\@let@token\LT@n@fcols}
221 \def\LT@n@fcols{%
222 \advance\LT@cols\@ne
223 \ifx\@let@token\LT@nofcols
224 \expandafter\@gobble
225 \else
226 \expandafter\LT@nofcols
227 \fi}
228 \def\LT@tabularcr{%
229 \relax\iffalse{\fi\ifnum0=`}\fi
230 \@ifstar
231 {\def\crcr{\LT@crcr\noalign{\nobreak}}\let\cr\crcr
232 \LT@t@bularcr}%
233 {\LT@t@bularcr}}
234 \let\LT@crcr\crcr
235 \let\LT@setprevdepth\relax
236 \def\LT@t@bularcr{%
237 \global\advance\LT@rows\@ne
238 \ifnum\LT@rows=\LTchunksize
239 \gdef\LT@setprevdepth{%
240 \prevdepth\z@\global
241 \global\let\LT@setprevdepth\relax}%
242 \expandafter\LT@xtabularcr
243 \else
244 \ifnum0=`{}\fi
245 \expandafter\LT@LL@FM@cr
246 \fi}
247 \def\LT@xtabularcr{%
248 \@ifnextchar[\LT@argtabularcr\LT@ntabularcr}
249 \def\LT@ntabularcr{%
250 \ifnum0=`{}\fi
251 \LT@echunk
252 \LT@start
253 \unvbox\z@
254 \LT@get@widths
255 \LT@bchunk}
256 \def\LT@argtabularcr[#1]{%
257 \ifnum0=`{}\fi
258 \ifdim #1>\z@
259 \unskip\@xargarraycr{#1}%
260 \else
261 \@yargarraycr{#1}%
263 \LT@echunk
264 \LT@start
265 \unvbox\z@
266 \LT@get@widths
267 \LT@bchunk}
268 \def\LT@echunk{%
269 \crcr\LT@save@row\cr\egroup
270 \global\setbox\@ne\lastbox
271 \unskip
272 \egroup}
273 \def\LT@entry#1#2{%
274 \ifhmode\@firstofone{&}\fi\omit
275 \ifnum#1=\c@LT@chunks
276 \else
277 \kern#2\relax
278 \fi}
279 \def\LT@entry@chop#1#2{%
280 \noexpand\LT@entry
281 {\ifnum#1>\c@LT@chunks
282 1}{0pt%
283 \else
284 #1}{#2%
285 \fi}}
286 \def\LT@entry@write{%
287 \noexpand\LT@entry^^J%
288 \@spaces}
289 \def\LT@kill{%
290 \LT@echunk
291 \LT@get@widths
292 \expandafter\LT@rebox\LT@bchunk}
293 \def\LT@rebox#1\bgroup{%
294 #1\bgroup
295 \unvbox\z@
296 \unskip
297 \setbox\z@\lastbox}
298 \def\LT@blank@row{%
299 \xdef\LT@save@row{\expandafter\LT@build@blank
300 \romannumeral\number\LT@cols 001 }}
301 \def\LT@build@blank#1{%
302 \if#1m%
303 \noexpand\LT@entry{1}{0pt}%
304 \expandafter\LT@build@blank
305 \fi}
306 \def\LT@make@row{%
307 \global\expandafter\let\expandafter\LT@save@row
308 \csname LT@\romannumeral\c@LT@tables\endcsname
309 \ifx\LT@save@row\relax
310 \LT@blank@row
311 \else
312 {\let\LT@entry\or
313 \if!%
314 \ifcase\expandafter\expandafter\expandafter\LT@cols
315 \expandafter\@gobble\LT@save@row
317 \else
318 \relax
321 \else
322 \aftergroup\LT@blank@row
323 \fi}%
324 \fi}
325 \let\setlongtables\relax
326 \def\LT@get@widths{%
327 \setbox\tw@\hbox{%
328 \unhbox\@ne
329 \let\LT@old@row\LT@save@row
330 \global\let\LT@save@row\@empty
331 \count@\LT@cols
332 \loop
333 \unskip
334 \setbox\tw@\lastbox
335 \ifhbox\tw@
336 \LT@def@row
337 \advance\count@\m@ne
338 \repeat}%
339 \ifx\LT@@save@row\@undefined
340 \let\LT@@save@row\LT@save@row
341 \fi}
342 \def\LT@def@row{%
343 \let\LT@entry\or
344 \edef\@tempa{%
345 \ifcase\expandafter\count@\LT@old@row
346 \else
347 {1}{0pt}%
348 \fi}%
349 \let\LT@entry\relax
350 \xdef\LT@save@row{%
351 \LT@entry
352 \expandafter\LT@max@sel\@tempa
353 \LT@save@row}}
354 \def\LT@max@sel#1#2{%
355 {\ifdim#2=\wd\tw@
357 \else
358 \number\c@LT@chunks
359 \fi}%
360 {\the\wd\tw@}}
361 \def\LT@hline{%
362 \noalign{\ifnum0=`}\fi
363 \penalty\@M
364 \futurelet\@let@token\LT@@hline}
365 \def\LT@@hline{%
366 \ifx\@let@token\hline
367 \global\let\@gtempa\@gobble
368 \gdef\LT@sep{\penalty-\@medpenalty\vskip\doublerulesep}%
369 \else
370 \global\let\@gtempa\@empty
371 \gdef\LT@sep{\penalty-\@lowpenalty\vskip-\arrayrulewidth}%
373 \ifnum0=`{\fi}%
374 \multispan\LT@cols
375 \unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr
376 \noalign{\LT@sep}%
377 \multispan\LT@cols
378 \unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr
379 \noalign{\penalty\@M}%
380 \@gtempa}
381 \def\LT@caption{%
382 \noalign\bgroup
383 \@ifnextchar[{\egroup\LT@c@ption\@firstofone}\LT@capti@n}
384 \def\LT@c@ption#1[#2]#3{%
385 \LT@makecaption#1\fnum@table{#3}%
386 \def\@tempa{#2}%
387 \ifx\@tempa\@empty\else
388 {\let\\\space
389 \addcontentsline{lot}{table}{\protect\numberline{\thetable}{#2}}}%
390 \fi}
391 \def\LT@capti@n{%
392 \@ifstar
393 {\egroup\LT@c@ption\@gobble[]}%
394 {\egroup\@xdblarg{\LT@c@ption\@firstofone}}}
395 \def\LT@makecaption#1#2#3{%
396 \LT@mcol\LT@cols c{\hbox to\z@{\hss\parbox[t]\LTcapwidth{%
397 \sbox\@tempboxa{#1{#2: }#3}%
398 \ifdim\wd\@tempboxa>\hsize
399 #1{#2: }#3%
400 \else
401 \hbox to\hsize{\hfil\box\@tempboxa\hfil}%
403 \endgraf\vskip\baselineskip}%
404 \hss}}}
405 \def\LT@output{%
406 \ifnum\outputpenalty <-\@Mi
407 \ifnum\outputpenalty > -\LT@end@pen
408 \LT@err{floats and marginpars not allowed in a longtable}\@ehc
409 \else
410 \setbox\z@\vbox{\unvbox\@cclv}%
411 \ifdim \ht\LT@lastfoot>\ht\LT@foot
412 \dimen@\pagegoal
413 \advance\dimen@\ht\LT@foot
414 \advance\dimen@-\ht\LT@lastfoot
415 \ifdim\dimen@<\ht\z@
416 \setbox\@cclv\vbox{\unvbox\z@\copy\LT@foot\vss}%
417 \@makecol
418 \@outputpage
419 \global\vsize\@colroom
420 \setbox\z@\vbox{\box\LT@head}%
423 \unvbox\z@\ifvoid\LT@lastfoot\copy\LT@foot\else\box\LT@lastfoot\fi
425 \else
426 \setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}%
427 \@makecol
428 \@outputpage
429 \global\vsize\@colroom
430 \copy\LT@head\nobreak
431 \fi}
432 \def\LT@end@hd@ft#1{%
433 \LT@echunk
434 \ifx\LT@start\endgraf
435 \LT@err
436 {Longtable head or foot not at start of table}%
437 {Increase LTchunksize}%
439 \setbox#1\box\z@
440 \LT@get@widths
441 \LT@bchunk}
442 \def\endfirsthead{\LT@end@hd@ft\LT@firsthead}
443 \def\endhead{\LT@end@hd@ft\LT@head}
444 \def\endfoot{\LT@end@hd@ft\LT@foot}
445 \def\endlastfoot{\LT@end@hd@ft\LT@lastfoot}
446 \def\LT@startpbox#1{%
447 \bgroup
448 \let\@footnotetext\LT@p@ftntext
449 \setlength\hsize{#1}%
450 \@arrayparboxrestore
451 \vrule \@height \ht\@arstrutbox \@width \z@}
452 \def\LT@endpbox{%
453 \@finalstrut\@arstrutbox
454 \egroup
455 \the\LT@p@ftn
456 \global\LT@p@ftn{}%
457 \hfil}
458 \def\LT@p@ftntext#1{%
459 \edef\@tempa{\the\LT@p@ftn\noexpand\footnotetext[\the\c@footnote]}%
460 \global\LT@p@ftn\expandafter{\@tempa{#1}}}%
461 \endinput
463 %% End of file `longtable-patched.sty'.