OSDN Git Service

43abab157f69f35de9e49e15b5871d4cb80d69ae
[luatex-ja/luatexja.git] / src / patches / lltjcore.sty
1 %
2 % lltjcore.sty: derived from plcore.dtx in pLaTeX.
3 %
4
5 \NeedsTeXFormat{LaTeX2e}
6 \ProvidesPackage{lltjcore}[2017/08/07 Patch to LaTeX2e Kernel for LuaTeX-ja]
7 \RequirePackage{etoolbox}
8
9 \def\cleardoublepage{\clearpage\if@twoside
10   \ifodd\c@page
11     \ifnum\ltjgetparameter{direction}=3
12       \hbox{}\thispagestyle{empty}\newpage
13       \if@twocolumn\hbox{}\newpage\fi
14     \fi
15   \else
16     \ifnum\ltjgetparameter{direction}=4
17       \hbox{}\thispagestyle{empty}\newpage
18       \if@twocolumn\hbox{}\newpage\fi
19     \fi
20   \fi\fi}
21 \newif\iftombow \tombowfalse
22 \newif\iftombowdate \tombowdatetrue
23 \newdimen\@tombowwidth
24 \setlength{\@tombowwidth}{.1\p@}
25 \newbox\@TL\newbox\@Tl
26 \newbox\@TC
27 \newbox\@TR\newbox\@Tr
28 \newbox\@BL\newbox\@Bl
29 \newbox\@BC
30 \newbox\@BR\newbox\@Br
31 \newbox\@CL
32 \newbox\@CR
33 \font\@bannerfont=cmtt9
34 \newtoks\@bannertoken
35 \@bannertoken{}
36 \def\maketombowbox{%
37   \setbox\@TL\hbox to\z@{\yoko\hss
38       \vrule width13mm height\@tombowwidth depth\z@
39       \vrule height10mm width\@tombowwidth depth\z@
40       \iftombowdate
41         \raise4pt\hbox to\z@{\hskip5mm\@bannerfont\the\@bannertoken\hss}%
42       \fi}%
43   \setbox\@Tl\hbox to\z@{\yoko\hss
44       \vrule width10mm height\@tombowwidth depth\z@
45       \vrule height13mm width\@tombowwidth depth\z@}%
46   \setbox\@TC\hbox{\yoko
47       \vrule width10mm height\@tombowwidth depth\z@
48       \vrule height10mm width\@tombowwidth depth\z@
49       \vrule width10mm height\@tombowwidth depth\z@}%
50   \setbox\@TR\hbox to\z@{\yoko
51       \vrule height10mm width\@tombowwidth depth\z@
52       \vrule width13mm height\@tombowwidth depth\z@\hss}%
53   \setbox\@Tr\hbox to\z@{\yoko
54       \vrule height13mm width\@tombowwidth depth\z@
55       \vrule width10mm height\@tombowwidth depth\z@\hss}%
56   \setbox\@BL\hbox to\z@{\yoko\hss
57       \vrule width13mm depth\@tombowwidth height\z@
58       \vrule depth10mm width\@tombowwidth height\z@}%
59   \setbox\@Bl\hbox to\z@{\yoko\hss
60       \vrule width10mm depth\@tombowwidth height\z@
61       \vrule depth13mm width\@tombowwidth height\z@}%
62   \setbox\@BC\hbox{\yoko
63       \vrule width10mm depth\@tombowwidth height\z@
64       \vrule depth10mm width\@tombowwidth height\z@
65       \vrule width10mm depth\@tombowwidth height\z@}%
66   \setbox\@BR\hbox to\z@{\yoko
67       \vrule depth10mm width\@tombowwidth height\z@
68       \vrule width13mm depth\@tombowwidth height\z@\hss}%
69   \setbox\@Br\hbox to\z@{\yoko
70       \vrule depth13mm width\@tombowwidth height\z@
71       \vrule width10mm depth\@tombowwidth height\z@\hss}%
72   \setbox\@CL\hbox to\z@{\yoko\hss
73       \vrule width10mm height.5\@tombowwidth depth.5\@tombowwidth
74       \vrule height10mm depth10mm width\@tombowwidth}%
75   \setbox\@CR\hbox to\z@{\yoko
76       \vrule height10mm depth10mm width\@tombowwidth
77       \vrule height.5\@tombowwidth depth.5\@tombowwidth width10mm\hss}%
78 }
79 \def\@outputtombow{%
80   \iftombow
81   \vbox to\z@{\kern-13mm\relax
82     \boxmaxdepth\maxdimen
83     \moveleft3mm\vbox to\@@paperheight{%
84       \hbox to\@@paperwidth{\hskip3mm\relax
85          \copy\@TL\hfill\copy\@TC\hfill\copy\@TR\hskip3mm}%
86       \kern-10mm
87       \hbox to\@@paperwidth{\copy\@Tl\hfill\copy\@Tr}%
88       \vfill
89       \hbox to\@@paperwidth{\copy\@CL\hfill\copy\@CR}%
90       \vfill
91       \hbox to\@@paperwidth{\copy\@Bl\hfill\copy\@Br}%
92       \kern-10mm
93       \hbox to\@@paperwidth{\hskip3mm\relax
94          \copy\@BL\hfill\copy\@BC\hfill\copy\@BR\hskip3mm}%
95     }\vss
96   }%
97   \fi
98 }
99 \newdimen\@@paperheight
100 \newdimen\@@paperwidth
101 \newdimen\@@topmargin
102 \def\@outputpage{%
103 \begingroup % the \endgroup is put in by \aftergroup
104   \ifnum\ltjgetparameter{direction}=4\else
105     \dimen\z@\textwidth \textwidth\textheight \textheight\dimen\z@
106   \fi
107   \let \protect \noexpand
108   \language\document@default@language %LaTeX2e 2017/05/01
109   \@resetactivechars
110   \global\let\@@if@newlist\if@newlist
111   \global\@newlistfalse
112   \@parboxrestore
113   \shipout\vbox{\yoko
114     \set@typeset@protect
115     \aftergroup\endgroup
116     \aftergroup\set@typeset@protect
117      \if@specialpage
118        \global\@specialpagefalse\@nameuse{ps@\@specialstyle}%
119      \fi
120      \if@twoside
121        \ifodd\count\z@ \let\@thehead\@oddhead \let\@thefoot\@oddfoot
122           \ifnum\ltjgetparameter{direction}=3 \let\@themargin\evensidemargin
123           \else\let\@themargin\oddsidemargin\fi
124        \else \let\@thehead\@evenhead
125           \let\@thefoot\@evenfoot
126            \ifnum\ltjgetparameter{direction}=3 \let\@themargin\oddsidemargin
127            \else\let\@themargin\evensidemargin\fi
128      \fi\fi
129      \@@topmargin\topmargin
130      \iftombow
131        \@@paperwidth\paperwidth \advance\@@paperwidth 6mm\relax
132        \@@paperheight\paperheight \advance\@@paperheight 16mm\relax
133        \advance\@@topmargin 1in\relax \advance\@themargin 1in\relax
134      \fi
135      \reset@font
136      \normalsize
137      \normalsfcodes
138      \let\label\@gobble
139      \let\index\@gobble
140      \let\glossary\@gobble
141      \baselineskip\z@skip \lineskip\z@skip \lineskiplimit\z@
142     \@begindvi
143     \@outputtombow
144     \vskip \@@topmargin
145     \moveright\@themargin\vbox{%
146       \setbox\@tempboxa \vbox to\headheight{%
147         \vfil
148         \color@hbox
149           \normalcolor
150           \hb@xt@\textwidth{\@thehead}%
151         \color@endbox
152       }%                        %% 22 Feb 87
153       \dp\@tempboxa \z@
154       \box\@tempboxa
155       \vskip \headsep
156       \box\@outputbox
157       \baselineskip \footskip
158       \color@hbox
159         \normalcolor
160         \hb@xt@\textwidth{\@thefoot}%
161       \color@endbox
162     }%
163   }%
164   \global\let\if@newlist\@@if@newlist
165   \global \@colht \textheight
166   \stepcounter{page}%
167   \let\firstmark\botmark
168 }
169
170 %%% Remove extra xkanjiskip
171 \renewcommand\@makefnmark{%
172   \unless\ifnum\ltjgetparameter{direction}=3
173     \hbox{}\hbox{\@textsuperscript{\normalfont\@thefnmark}}\hbox{}%
174   \else\hbox{\yoko \@textsuperscript{\normalfont\@thefnmark}}\fi}
175 \begingroup
176 \@ifpackageloaded{hyperref}
177   {\def\ltj@setrefprefix{real}}
178   {\def\ltj@setrefprefix{}}
179 \expandafter\gdef\csname \ltj@setrefprefix @setref\endcsname#1#2#3{%
180   \ifx#1\relax
181     \protect\G@refundefinedtrue
182     \nfss@text{\reset@font\bfseries ??}%
183     \@latex@warning{Reference `#3' on page \thepage \space
184               undefined}%
185   \else
186     \expandafter#2#1\spacefactor\@m{}% change \null to \spacefactor\@m{}
187   \fi}
188 \endgroup
189 \if@compatibility\else
190 \def\verb{\relax\ifmmode\hbox\else\leavevmode\vadjust{}\fi
191   \bgroup
192     \verb@eol@error \let\do\@makeother \dospecials
193     \verbatim@font\@noligs
194     \language\l@nohyphenation
195     \@ifstar\@sverb\@verb}
196 \fi
197 \gdef\@stopfield{\null\color@endgroup\egroup}
198 \newcount\hour
199 \newcount\minute
200 \pretocmd{\footnote}{\inhibitglue}{}{}
201 \pretocmd{\footnotemark}{\inhibitglue}{}{}
202 \patchcmd{\@footnotemark}{\@makefnmark}{%
203   \unless\ifnum\ltjgetparameter{direction}=3 \@makefnmark%
204   \else\hbox to\z@{\hskip-.25\zw\raise.9\zh\@makefnmark\hss}\fi%
205 }{}{}
206 \patchcmd{\@tabular}{\leavevmode}{\leavevmode\null}{}{}
207 \apptocmd{\endtabular}{\null}{}{}
208 \expandafter \let \csname endtabular*\endcsname = \endtabular
209 \let\@parboxto\@empty
210 \long\def\@iiiparbox#1#2[#3]#4#5{%
211   \leavevmode
212   \@pboxswfalse
213   \setlength\@tempdima{#4}%
214   \@begin@tempboxa\vbox{\hsize\@tempdima\@parboxrestore#5\@@par}%
215     \ifx\relax#2\else
216       \setlength\@tempdimb{#2}%
217       \edef\@parboxto{to\the\@tempdimb}%
218     \fi
219     \if#1b\vbox
220     \else\if #1t\vtop
221     \else\ifmmode\vcenter
222     \else\@pboxswtrue\null$\vcenter% !!!
223     \fi\fi\fi
224     \@parboxto{\let\hss\vss\let\unhbox\unvbox
225        \csname bm@#3\endcsname}%
226     \if@pboxsw \m@th$\null\fi% !!!
227   \@end@tempboxa}
228 \def\underline#1{%
229   \relax
230   \ifmmode\@@underline{#1}%
231   \else \leavevmode\null$\@@underline{\hbox{#1}}\m@th$\null\relax\fi}
232
233 %%% AtBeginDvi
234 \def \AtBeginDvi #1{%
235   \global \setbox \@begindvibox
236     \vbox{\yoko\unvbox \@begindvibox #1}%
237 }
238
239 \newif\iffnfixbottom
240 \newif\ifltj@ftn@unvboxed
241 %%% @makecol
242 \gdef \@makecol {%
243    \ifvoid\footins
244      \ltj@ftn@unvboxedfalse
245      \setbox\@outputbox \box\@cclv
246    \else
247      \ltj@ftn@unvboxedtrue
248      \setbox\@outputbox \vbox {%
249        \boxmaxdepth \@maxdepth
250        \unvbox \@cclv
251        \iffnfixbottom\vskip\z@ \@plus.0001fil\fi
252        \vskip \skip\footins
253        \color@begingroup
254          \normalcolor
255          \footnoterule
256          \unvbox \footins
257        \color@endgroup
258        }%
259    \fi
260    \let\@elt\relax
261    \xdef\@freelist{\@freelist\@midlist}%
262    \global \let \@midlist \@empty
263    \@combinefloats
264    \ifvbox\@kludgeins
265      \@makespecialcolbox
266    \else
267      \setbox\@outputbox \vbox to\@colht {%
268        \@texttop
269        \dimen@ \dp\@outputbox
270        \unvbox \@outputbox
271        \ifnum\ltjgetparameter{direction}=4\else\vbox{\hskip\z@}\fi %%% LuaTeX-ja
272        \vskip -\dimen@
273        \ifltj@ftn@unvboxed\iffnfixbottom\else\@textbottom\fi\else\@textbottom\fi
274        }%
275    \fi
276    \global \maxdepth \@maxdepth
277 }
278 \let\ltj@orig@makecol=\@makecol
279
280 \patchcmd\@makespecialcolbox{\@textbottom}{\ifltj@ftn@unvboxed\iffnfixbottom\else\@textbottom\fi\else\@textbottom\fi}{}{}
281
282 \def\@gnewline #1{%
283   \ifvmode
284     \@nolnerr
285   \else
286     \unskip \reserved@e {\reserved@f#1}\nobreak \hfil \break \null
287     % \null は \break の効果が行頭禁則文字で打ち消されないために必要
288   \ignorespaces
289 \fi}
290
291 \def\@no@lnbk #1[#2]{%
292   \ifvmode
293     \@nolnerr
294   \else
295     \@tempskipa\lastskip
296     \unskip
297     \penalty #1\@getpen{#2}%
298     \hskip\z@\relax %% added (2017/05/03)
299     \ifdim\@tempskipa>\z@
300       \hskip\@tempskipa
301       \ignorespaces
302     \fi
303   \fi}
304
305 %%%%%% \@tabclassz
306 \def\ltj@sharp{\ltjfakeboxbdd\ignorespaces\@sharp\unskip\ltjfakeboxbdd}
307 \def\@tabclassz{%
308   \ifcase\@lastchclass
309     \@acolampacol
310   \or
311     \@ampacol
312   \or
313   \or
314   \or
315     \@addamp
316   \or
317     \@acolampacol
318   \or
319     \@firstampfalse\@acol
320   \fi
321   \edef\@preamble{%
322     \@preamble{%
323       \ifcase\@chnum
324         \hfil\ltj@sharp\hfil
325       \or
326         \hskip1sp\ltj@sharp\hfil
327       \or
328         \hfil\hskip1sp\ltj@sharp
329       \fi}}}
330 \patchcmd\@classv{%
331    \ignorespaces\@sharp
332 }{%
333    \everypar\expandafter{\the\everypar\ltjfakeboxbdd}\ignorespaces\@sharp\unskip
334 }{}{}
335
336
337 \endinput