summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/sttools/stfloats.sty
blob: b6fb8ece0a8eccd6fd106e38fd42c3437b6b8c9a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
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
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
%%
%% This is file `stfloats.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% stfloats.dtx  (with options: `package')
%% 
%% Copyright (C) 1997-2021 by Sigitas Tolu\v{s}is <sigitas@vtex.lt>
%% VTeX UAB, Mokslininku 2a, Vilnius, Lithuania
%% --------------------------------------------------------------------------
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
%% 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.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
%%
%% PURPOSE:   Improve float mechanism and baselineskip settings
%%
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{stfloats}
    [2017/03/27 v3.3 Improve float mechanism and baselineskip settings]
\gdef\@dblbotlist{}
\newcount\@dblbotnum
\newcount\c@dblbotnumber
\setcounter{dblbotnumber}{2}
\def\@dbflt#1{\@ifnextchar[{\@xdblfloat{#1}}{\@xdblfloat{#1}[tbp]}}
\def\@dblfloatplacement{%
    \global\@dbltopnum\c@dbltopnumber
    \global\@dblbotnum\c@dblbotnumber
    \global\@dbltoproom\dbltopfraction\@colht
    \@textmin\@colht
    \advance\@textmin -\@dbltoproom
    \@fpmin\dblfloatpagefraction\textheight
    \@fptop\@dblfptop
    \@fpsep\@dblfpsep
    \@fpbot\@dblfpbot
    \def\f@depth{1sp}%
    }
\newif\if@before@latex@release
\def\tmp@reserved@a#1#2#3#4#5\@nil{%
    \ifnum #1#2#3#4<2015\relax
        \@before@latex@releasetrue
    \else
        \@before@latex@releasefalse
    \fi
    }
\expandafter\tmp@reserved@a\fmtversion\@nil
\if@before@latex@release
    %%% < 2015 start
    \def\@addtodblcol{%
        \begingroup
            \@insertfalse
            \@setfloattypecounts
            \@getfpsbit \tw@
            \ifodd\@tempcnta
                \@flsetnum \@dbltopnum
                \ifnum \@dbltopnum>\z@
                    \@tempswafalse
                    \ifdim \@dbltoproom>\ht\@currbox
                        \@tempswatrue
                    \else
                        \ifnum \@fpstype<\sixt@@n
                            \advance\@dbltoproom \@textmin
                            \ifdim \@dbltoproom>\ht\@currbox
                                \@tempswatrue
                            \fi
                            \advance\@dbltoproom -\@textmin
                        \fi
                    \fi
                    \if@tempswa
                        \@bitor \@currtype \@dbldeferlist
                        \if@test
                        \else
                            \@bitor \@currtype \@dblbotlist
                            \if@test
                            \else
                                \@tempdima -\ht\@currbox
                                \advance\@tempdima
                                  -\ifx \@dbltoplist\@empty \dbltextfloatsep \else
                                                            \dblfloatsep \fi
                                \global \advance \@dbltoproom \@tempdima
                                \global \advance \@colht \@tempdima
                                \global \advance \@dbltopnum \m@ne
                                \@cons \@dbltoplist \@currbox
                                \@inserttrue
                            \fi
                        \fi
                    \fi
                \fi
            \fi
            \if@insert
            \else
                \@getfpsbit 4\relax
                \ifodd\@tempcnta
                    \@flsetnum \@dblbotnum
                    \ifnum \@dblbotnum>\z@
                        \@tempswafalse
                        \ifdim \@dbltoproom>\ht\@currbox
                            \@tempswatrue
                        \else
                            \ifnum \@fpstype<\sixt@@n
                                \advance \@dbltoproom \@textmin
                                \ifdim \@dbltoproom>\ht\@currbox
                                    \@tempswatrue
                                \fi
                                \advance \@dbltoproom -\@textmin
                            \fi
                        \fi
                        \if@tempswa
                            \@bitor \@currtype \@dbldeferlist
                            \if@test
                            \else
                                \@tempdima -\ht\@currbox
                                \advance\@tempdima
                                  -\ifx \@dblbotlist\@empty \dbltextfloatsep \else
                                                            \dblfloatsep \fi
                                \global \advance \@dbltoproom \@tempdima
                                \global \advance \@colht \@tempdima
                                \global \advance \@dblbotnum \m@ne
                                \@cons \@dblbotlist \@currbox
                                \@inserttrue
                            \fi
                        \fi
                    \fi
                \fi
                \if@insert
                \else
                    \@cons\@dbldeferlist\@currbox
                \fi
            \fi
        \endgroup
        }
    \def\@doclearpage{%
        \ifvoid\footins
            \ifvbox\@kludgeins
                {\setbox \@tempboxa \box \@kludgeins}%
            \fi
            \setbox\@tempboxa\vsplit\@cclv to\z@ \unvbox\@tempboxa
            \setbox\@tempboxa\box\@cclv
            \xdef\@deferlist{\@toplist\@botlist\@deferlist}%
            \global \let \@toplist \@empty
            \global \let \@botlist \@empty
            \global \@colroom \@colht
            \ifx \@currlist\@empty
            \else
                \@latexerr{Float(s) lost}\@ehb
                \global \let \@currlist \@empty
            \fi
            \@makefcolumn\@deferlist
            \@whilesw\if@fcolmade \fi{\@opcol\@makefcolumn\@deferlist}%
            \if@twocolumn
                \if@firstcolumn
                    \xdef\@dbldeferlist{\@dbltoplist\@dblbotlist\@dbldeferlist}%
                    \global \let \@dbltoplist \@empty
                    \global \let \@dblbotlist \@empty
                    \global \@colht \textheight
                    \begingroup
                        \@dblfloatplacement
                        \@makefcolumn\@dbldeferlist
                        \@whilesw\if@fcolmade \fi{\@outputpage
                                                  \@makefcolumn\@dbldeferlist}%
                    \endgroup
                \else
                    \vbox{}\clearpage
                \fi
            \fi
        \else
            \setbox\@cclv\vbox{\box\@cclv\vfil}%
            \@makecol\@opcol
            \clearpage
        \fi
        }
    %%% < 2015 end
\else
    %%% > 2015 start
    \def\@addtodblcol{%
        \begingroup
            \@insertfalse
            \@setfloattypecounts
            \@getfpsbit \tw@
            \ifodd\@tempcnta
                \@flsetnum \@dbltopnum
                \ifnum \@dbltopnum>\z@
                    \@tempswafalse
                    \ifdim \@dbltoproom>\ht\@currbox
                        \@tempswatrue
                    \else
                        \ifnum \@fpstype<\sixt@@n
                            \advance \@dbltoproom \@textmin
                            \ifdim \@dbltoproom>\ht\@currbox
                                \@tempswatrue
                            \fi
                            \advance \@dbltoproom -\@textmin
                        \fi
                    \fi
                    \if@tempswa
                        \@bitor \@currtype \@deferlist
                        \@testwrongwidth\@currbox
                        \if@test
                        \else
                            \@bitor \@currtype \@dblbotlist
                            \if@test
                            \else
                                \@tempdima -\ht\@currbox
                                \advance\@tempdima
                                  -\ifx \@dbltoplist\@empty \dbltextfloatsep \else
                                                            \dblfloatsep \fi
                                \global \advance \@dbltoproom \@tempdima
                                \global \advance \@colht \@tempdima
                                \global \advance \@dbltopnum \m@ne
                                \@cons \@dbltoplist \@currbox
                                \@inserttrue
                            \fi
                        \fi
                    \fi
                \fi
            \fi
            \if@insert
            \else
                \@getfpsbit 4\relax
                \ifodd\@tempcnta
                    \@flsetnum \@dblbotnum
                    \ifnum \@dblbotnum>\z@
                        \@tempswafalse
                        \ifdim \@dbltoproom>\ht\@currbox
                            \@tempswatrue
                        \else
                            \ifnum \@fpstype<\sixt@@n
                              \advance \@dbltoproom \@textmin
                              \ifdim \@dbltoproom>\ht\@currbox
                                  \@tempswatrue
                              \fi
                              \advance \@dbltoproom -\@textmin
                            \fi
                        \fi
                        \if@tempswa
                            \@bitor \@currtype \@deferlist
                            \@testwrongwidth\@currbox
                            \if@test
                            \else
                                \@tempdima -\ht\@currbox
                                \advance\@tempdima
                                  -\ifx \@dblbotlist\@empty \dbltextfloatsep \else
                                                           \dblfloatsep \fi
                                \global \advance \@dbltoproom \@tempdima
                                \global \advance \@colht \@tempdima
                                \global \advance \@dblbotnum \m@ne
                                \@cons \@dblbotlist \@currbox
                                \@inserttrue
                            \fi
                        \fi
                    \fi
                \fi
                \if@insert
                \else
                    \@cons\@deferlist\@currbox
                \fi
            \fi
        \endgroup
        }
    \def\@addtocurcol{%
        \@insertfalse
        \@setfloattypecounts
        \ifnum \@fpstype=8
        \else
            \ifnum \@fpstype=24
            \else
                \@flsettextmin
                \advance \@textmin \@textfloatsheight
                \@reqcolroom \@pageht
                \ifdim \@textmin>\@reqcolroom
                    \@reqcolroom \@textmin
                \fi
                \advance \@reqcolroom \ht\@currbox
                \ifdim \@colroom>\@reqcolroom
                    \@flsetnum \@colnum
                    \ifnum \@colnum>\z@
                        \@bitor\@currtype\@deferlist
                        \if@test
                        \else
                            \@testwrongwidth\@currbox
                            \if@test
                                \if@firstcolumn
                                    \@getfpsbit \tw@
                                    \ifodd\@tempcnta
                                        \@flsetnum \@dbltopnum
                                        \ifnum \@dbltopnum>\z@
                                            \@tempswafalse
                                            \ifdim \@dbltoproom>\ht\@currbox
                                                \@tempswatrue
                                            \else
                                                \ifnum \@fpstype<\sixt@@n
                                                    \advance \@dbltoproom \@textmin
                                                    \ifdim \@dbltoproom>\ht\@currbox
                                                        \@tempswatrue
                                                    \fi
                                                    \advance \@dbltoproom -\@textmin
                                                \fi
                                            \fi
                                            \if@tempswa
                                                \@bitor\@currtype{\@toplist\@midlist\@botlist\@dblbotlist}%
                                                \if@test
                                                \else
                                                    \@tempdima -\ht\@currbox
                                                    \advance\@tempdima
                                                      -\ifx \@dbltoplist\@empty \dbltextfloatsep \else
                                                                          \dblfloatsep \fi
                                                    \global \advance \@dbltoproom \@tempdima
                                                    \global \advance \@colht \@tempdima
                                                    \global \advance \@colroom \@tempdima
                                                    \global \advance \@dbltopnum \m@ne
                                                    \@cons \@dbltoplist \@currbox
                                                    \@inserttrue
                                                \fi
                                            \fi
                                        \fi
                                    \else
                                        \@getfpsbit 4\relax
                                        \ifodd\@tempcnta
                                            \@flsetnum \@dblbotnum
                                            \ifnum \@dblbotnum>\z@
                                                \@tempswafalse
                                                \ifdim \@dbltoproom>\ht\@currbox
                                                    \@tempswatrue
                                                \else
                                                    \ifnum \@fpstype<\sixt@@n
                                                        \advance \@dbltoproom \@textmin
                                                        \ifdim \@dbltoproom>\ht\@currbox
                                                            \@tempswatrue
                                                        \fi
                                                        \advance \@dbltoproom -\@textmin
                                                    \fi
                                                \fi
                                                \if@tempswa
                                                    \@tempdima -\ht\@currbox
                                                    \advance\@tempdima
                                                      -\ifx \@dblbotlist\@empty \dbltextfloatsep \else
                                                                        \dblfloatsep \fi
                                                    \global \advance \@dbltoproom \@tempdima
                                                    \global \advance \@colht \@tempdima
                                                    \global \advance \@colroom \@tempdima
                                                    \global \advance \@dblbotnum \m@ne
                                                    \@cons \@dblbotlist \@currbox
                                                    \@inserttrue
                                                \fi
                                            \fi
                                        \fi
                                    \fi
                                \fi
                            \else
                                \@bitor\@currtype\@botlist
                                \if@test
                                    \@addtobot
                                \else
                                    \ifodd \count\@currbox
                                        \advance \@reqcolroom \intextsep
                                        \ifdim \@colroom>\@reqcolroom
                                            \global \advance \@colnum \m@ne
                                            \global \advance \@textfloatsheight \ht\@currbox
                                            \global \advance \@textfloatsheight 2\intextsep
                                            \@cons \@midlist \@currbox
                                            \if@nobreak
                                                \nobreak
                                                \@nobreakfalse
                                                \everypar{}%
                                            \else
                                                \addpenalty \interlinepenalty
                                            \fi
                                            \vskip \intextsep
                                            \box\@currbox
                                            \penalty\interlinepenalty
                                            \vskip\intextsep
                                            \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi
                                            \outputpenalty \z@
                                            \@inserttrue
                                        \fi
                                    \fi
                                    \if@insert
                                    \else
                                        \@addtotoporbot
                                    \fi
                                \fi
                            \fi
                        \fi
                    \fi
                \fi
            \fi
        \fi
        \if@insert
        \else
            \@resethfps
            \@cons\@deferlist\@currbox
        \fi
        }%
    \def\@addtotoporbot{%
        \@getfpsbit \tw@
        \ifodd \@tempcnta
            \@flsetnum \@topnum
            \ifnum \@topnum>\z@
                \@tempswafalse
                \@flcheckspace \@toproom \@toplist
                \if@tempswa
                    \@bitor\@currtype{\@midlist\@botlist\@dblbotlist}%
                    \if@test
                    \else
                        \@flupdates \@topnum \@toproom \@toplist
                        \@inserttrue
                    \fi
                \fi
            \fi
        \fi
        \if@insert
        \else
            \@addtobot
        \fi
        }
    \def\@addtobot{%
        \@getfpsbit 4\relax
        \ifodd \@tempcnta
            \@flsetnum \@botnum
            \ifnum \@botnum>\z@
                \@tempswafalse
                \@flcheckspace \@botroom \@botlist
                \if@tempswa
                    \@bitor\@currtype{\@dblbotlist}%
                    \if@test
                    \else
                        \global \maxdepth \z@
                        \@flupdates \@botnum \@botroom \@botlist
                        \@inserttrue
                    \fi
                \fi
            \fi
        \fi
        }
    \def\@doclearpage{%
        \ifvoid\footins
            \ifvbox\@kludgeins
                {\setbox \@tempboxa \box \@kludgeins}%
            \fi
            \setbox\@tempboxa\vsplit\@cclv to\z@ \unvbox\@tempboxa
            \setbox\@tempboxa\box\@cclv
            \xdef\@deferlist{\@toplist\@botlist\@deferlist}%
            \global \let \@toplist \@empty
            \global \let \@botlist \@empty
            \global \@colroom \@colht
            \ifx \@currlist\@empty
            \else
                \@latexerr{Float(s) lost}\@ehb
                \global \let \@currlist \@empty
            \fi
            \@makefcolumn\@deferlist
            \@whilesw\if@fcolmade \fi{\@opcol\@makefcolumn\@deferlist}%
            \if@twocolumn
                \if@firstcolumn
                    \xdef\@deferlist{\@dbltoplist\@dblbotlist\@deferlist}%
                    \global \let \@dbltoplist \@empty
                    \global \let \@dblbotlist \@empty
                    \global \@colht \textheight
                    \begingroup
                        \@dblfloatplacement
                        \@makefcolumn\@deferlist
                        \@whilesw\if@fcolmade \fi{\@outputpage
                                                  \@makefcolumn\@deferlist}%
                    \endgroup
                \else
                    \vbox{}\clearpage
                \fi
            \fi
            \ifx\@deferlist\@empty \else\clearpage \fi
        \else
            \setbox\@cclv\vbox{\box\@cclv\vfil}%
            \@makecol\@opcol
            \clearpage
        \fi
        }
    %%% > 2015 end
\fi
\def\@combinedblfloats{%
    \ifx \@dbltoplist\@empty \else \@cdblflt \fi
    \ifx \@dblbotlist\@empty \else \@cdblflb \fi
    }
\def\@cdblflt{%
    \setbox\@tempboxa \vbox{}%
    \let \@elt \@comdblflelt
    \@dbltoplist
    \let \@elt \relax
    \xdef \@freelist {\@freelist\@dbltoplist}%
    \global\let \@dbltoplist \@empty
    \setbox\@outputbox \vbox% to\textheight
        {%\boxmaxdepth\maxdepth   %% probably not needed, CAR
         \unvbox\@tempboxa\vskip-\dblfloatsep
         \ifnum \@dbltopnum>\m@ne
             \dblfigrule
         \fi
         \vskip \dbltextfloatsep
         \unvbox \@outputbox
        }%
    }
\def\@cdblflb{%
    \setbox\@tempboxa \vbox{}%
    \let \@elt \@comdblflelt
    \@dblbotlist
    \let \@elt \relax
    \xdef \@freelist {\@freelist\@dblbotlist}%
    \global\let \@dblbotlist \@empty
    \setbox\@outputbox \vbox% to\textheight
        {%\boxmaxdepth\maxdepth   %% probably not needed, CAR
         \unvbox\@outputbox
         \vskip \dbltextfloatsep
         \ifnum \@dblbotnum>\m@ne
             \dblfigrule
         \fi
         \unvbox\@tempboxa
         \vskip -\dblfloatsep
         }%
    }
\global\let\org@makecol\@makecol
\gdef\fn@makecol{%
    \setbox\@outputbox \box\@cclv
    \let\@elt\relax
    \xdef\@freelist{\@freelist\@midlist}%
    \global \let \@midlist \@empty
    \@combinefloats
    \ifvoid\footins
    \else
        \setbox\@outputbox \vbox {%
            \boxmaxdepth \@maxdepth
            \unvbox \@outputbox
            \vskip \skip\footins
            \color@begingroup
                \normalcolor
                \footnoterule
                \unvbox \footins
            \color@endgroup
            }%
    \fi
    \ifvbox\@kludgeins
        \@makespecialcolbox
    \else
        \setbox\@outputbox \vbox to\@colht {%
            \@texttop
            \dimen@ \dp\@outputbox
            \unvbox \@outputbox
            \vskip -\dimen@
            \@textbottom
            }%
    \fi
    \global \maxdepth \@maxdepth
    }
\def\fnbelowfloat{\global\let\@makecol\fn@makecol}
\def\fnunderfloat{\global\let\@makecol\org@makecol}
\def\set@floatfontsize#1#2#3{%
    \@defaultunits\@tempdimb#2\p@\relax\@nnil
    \edef\f@size{\strip@pt\@tempdimb}%
    \@defaultunits\@tempskipa#3\p@\relax\@nnil
    \edef\f@baselineskip{\the\@tempskipa}%
    \edef\f@linespread{#1}%
    \let\baselinestretch\f@linespread
    \def\size@update{%
        \baselineskip\f@baselineskip
        \@tempskipa\baselineskip\relax\baselineskip=1\baselineskip
        \advance\@tempskipa by-\baselineskip\baselineskip\f@baselineskip
         \baselineskip\f@linespread\baselineskip
         \advance\@tempskipa by\baselineskip\baselineskip\@tempskipa
         \normalbaselineskip\baselineskip
         \setbox\strutbox\hbox{%
             \vrule\@height.7\baselineskip
                  \@depth.3\baselineskip
                  \@width\z@}%
         \let\size@update\relax
        }%
    }
\let\set@@@fontsize\set@fontsize
\def\setbaselinefloat{\let\set@fontsize\set@floatfontsize}
\def\setbaselinefixed{%
    \@tempdima=\baselinestretch\p@
    \edef\baselinestretch{\strip@pt\@tempdima}%
    \let\set@fontsize\set@@@fontsize
    }
\endinput
%%
%% End of file `stfloats.sty'.