summaryrefslogtreecommitdiff
path: root/language/japanese/platex-tools/pxftnright.sty
blob: e6766fcef7fb7d89a7109ffdb6e00f8c2fa86dd7 (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
%
% pxftnright.sty
% written by Hironobu Yamashita (@aminophen)
%
% This package is part of the platex-tools bundle.
% https://github.com/aminophen/platex-tools
%
% This package `pxftnright' is based on:
%   * ftnright.sty in latex-tools (2014/10/28 v1.1f)
%   * plcore.ltx in platex
%     (2001/09/26 v1.2a -- 2021/03/25 v1.3i)
%
% Problems with ftnright to use with pLaTeX:
%   * \@startcolumn is redefined
%     (incompatible with vertical typesetting)
%   * \@makecol is redefined
%     (bottom float after footnote)
%   * \@makefntext is redefined
%     (incompatible with some pLaTeX classes)
%   * \footnotesep is not suitable for vertical typesetting
%     when used with pLaTeX 2016/11/29 or earlier
%     (rather a problem of \strutbox in pLaTeX2e kernel)
% so, this package provides patches.
%

\NeedsTeXFormat{pLaTeX2e}
\ProvidesPackage{pxftnright}
  [2021/05/24 v1.1a footnote layout package for pLaTeX]

%% save \@makefntext definition from pLaTeX class
\@ifpackageloaded{ftnright}{%
  \PackageError{pxftnright}{%
    Package ftnright is already loaded!\MessageBreak
    Load pxftnright earlier}\@ehc
}{}
\let\pxftn@makefntext\@makefntext

%% load ftnright package
\RequirePackage{ftnright}

%% patches for ftnright to work fine with pLaTeX
%% This code is based on pLaTeX2e 2021-06-01 community ed.

\ifx\pltx@adjust@wd@outputbox\@undefined
  % pLaTeX2e <2020-10-01>+2 or older
  \ifx\pdfprimitive\@undefined % just in case ...
    \def\pltx@adjust@wd@outputbox{%
      \ifydir\else\vbox{\hskip\z@}\fi}
  \else                        % same as plcore.dtx 2021/03/25 v1.3i
    \def\pltx@adjust@wd@outputbox{%
      \ifydir\else\vbox{\pdfprimitive\everypar{}\hskip\z@}\fi}
  \fi
\fi

\def\@startcolumn{%
 \ifx\@deferlist\@empty
   \global\@fcolmadefalse
   \global\@colroom\@colht
 \else
   \ifvoid\footins\else
     \ftn@amount\ht\footins
     \advance\ftn@amount\dp\footins
     \advance\ftn@amount\skip\footins
   \fi
   \global\advance\@colht-\ftn@amount
   \global\@colroom\@colht
   \@xstartcol
   \global\advance\@colht\ftn@amount
   \global\advance\@colroom\ftn@amount
 \fi
 \if@fcolmade
  \setbox\@cclv\box\@outputbox
  \@makecol
 \else
%%%%% change for pLaTeX (import from \@reinserts in plcore)
  \ifvoid\footins\else\insert\footins{%
    \iftbox\footins\tate\else\yoko\fi
    \unvbox\footins}\fi
%%%%%
 \fi}

\def\@makecol{%
%%%%% change for pLaTeX
  \setbox\@outputbox\box\@cclv
%%%%%
 \if@firstcolumn
  \if@twocolumn \else
    \ifvoid\footins \else
      \@latexerr{ftnright package
                 used in one-column mode}%
   {The ftnright package was designed to
    work with LaTeX's standard^^Jtwocolumn
    option. It does *not* work with the
    multicol package.^^JSo please specify
    `twocolumn' in the
    \noexpand\documentclass command.}%
      \shipout\box\footins \fi\fi
  \ifnum\insertpenalties>\z@
      \@latexerr{ftnright package
                 scrambled footnotes}%
    {There is too much footnote material in
     the first column  and ftnright^^Jis
     unable to cope with this.^^JYou need
     to reduce the amount to get a properly
     formatted page.}%
  \fi
 \fi
%%%%% change for pLaTeX (bottom float first)
  \xdef\@freelist{\@freelist\@midlist}%
  \global \let \@midlist \@empty
  \@combinefloats
  \let\pltx@textbottom\@textbottom %%% pLaTeX
 \if@firstcolumn\else
  \ifvoid\footins\else
    \setbox\@outputbox \vbox {%
      \boxmaxdepth \@maxdepth
      \unvbox \@outputbox
      \@textbottom %%% pLaTeX
      \vskip \skip\footins
      \color@begingroup
        \normalcolor
        \footnoterule
        \unvbox \footins
      \color@endgroup
      }%
      \let\@textbottom\relax %%% pLaTeX
  \fi
 \fi
%%%%%
  \ifvbox\@kludgeins
    \@makespecialcolbox
  \else
   \setbox\@outputbox\vbox to\@colht
     {\boxmaxdepth\maxdepth
      \@texttop
      \dimen@ \dp\@outputbox
      \unvbox \@outputbox
      \pltx@adjust@wd@outputbox %%% pLaTeX
      \vskip -\dimen@
      \@textbottom}%
  \fi
  \let\@textbottom\pltx@textbottom %%% pLaTeX
  \global\maxdepth\@maxdepth
}

%% adjust \footnotesep for vertical typesetting
\AtBeginDocument
  {\global\footnotesep\ht\iftdir\tstrutbox\else\strutbox\fi}

%% restore \@makefntext
\let\@makefntext\pxftn@makefntext

\endinput