% % lltjcore.sty: derived from plcore.dtx in pLaTeX. % \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{lltjcore}[2022-01-17 Patch to LaTeX2e Kernel for LuaTeX-ja] \RequirePackage{etoolbox} %%% expl3 \RequirePackage{expl3} \ExplSyntaxOn \cs_set_eq:NN \platex_direction_yoko: \yoko \cs_set_eq:NN \platex_direction_tate: \tate \cs_set_eq:NN \platex_direction_dtou: \dtou \cs_set_eq:NN \platex_direction_utod: \utod % LuaTeX-ja specific \prg_new_conditional:Npnn \platex_if_box_yoko:N #1 { p, T, F, TF } { \if_int_compare:w \ltjgetparameter{boxdir}{#1} = 4 \scan_stop: \prg_return_true: \else: \prg_return_false: \fi: } \prg_new_conditional:Npnn \platex_if_box_utod:N #1 { p, T, F, TF } { \if_int_compare:w \ltjgetparameter{boxdir}{#1} = 11 \scan_stop: \prg_return_true: \else: \prg_return_false: \fi: } \prg_new_eq_conditional:NNn \platex_if_box_tate_math:N \platex_if_box_utod:N { p, T, F, TF } \prg_new_conditional:Npnn \platex_if_box_tate_nomath:N #1 { p, T, F, TF } { \if_int_compare:w \ltjgetparameter{boxdir}{#1} = 3 \scan_stop: \prg_return_true: \else: \prg_return_false: \fi: } \prg_new_conditional:Npnn \platex_if_box_tate:N #1 { p, T, F, TF } { \if_int_compare:w \ltjgetparameter{boxdir}{#1} = 3 \scan_stop: \prg_return_true: \else: \if_int_compare:w \ltjgetparameter{boxdir}{#1} = 11 \scan_stop: % utod \prg_return_true: \else \prg_return_false: \fi: \fi:} \prg_new_conditional:Npnn \platex_if_box_dtou:N #1 { p, T, F, TF } { \if_int_compare:w \ltjgetparameter{boxdir}{#1} = 1 \scan_stop: \prg_return_true: \else: \prg_return_false: \fi: } \prg_new_conditional:Npnn \platex_if_direction_yoko: { p, T, F, TF } { \if_int_compare:w \ltjgetparameter{direction} = 4 \scan_stop: \prg_return_true: \else: \prg_return_false: \fi: } \prg_new_conditional:Npnn \platex_if_direction_utod: { p, T, F, TF } { \if_int_compare:w \ltjgetparameter{direction} = 11 \scan_stop: \prg_return_true: \else: \prg_return_false: \fi: } \prg_new_eq_conditional:NNn \platex_if_direction_tate_math: \platex_if_direction_utod: { p, T, F, TF } \prg_new_conditional:Npnn \platex_if_direction_tate_nomath: { p, T, F, TF } { \if_int_compare:w \ltjgetparameter{direction} = 3 \scan_stop: \prg_return_true: \else: \prg_return_false: \fi: } \prg_new_conditional:Npnn \platex_if_direction_tate: { p, T, F, TF } { \if_int_compare:w \ltjgetparameter{direction} = 3 \scan_stop: \prg_return_true: \else: \if_int_compare:w \ltjgetparameter{direction} = 11 \scan_stop: % utod \prg_return_true: \else \prg_return_false: \fi: \fi:} \prg_new_conditional:Npnn \platex_if_direction_dtou: { p, T, F, TF } { \if_int_compare:w \ltjgetparameter{direction} = 1 \scan_stop: \prg_return_true: \else: \prg_return_false: \fi: } \ExplSyntaxOff \def\cleardoublepage{\clearpage\if@twoside \ifodd\c@page \ifnum\ltjgetparameter{direction}=3 \hbox{}\thispagestyle{empty}\newpage \if@twocolumn\hbox{}\newpage\fi \fi \else \ifnum\ltjgetparameter{direction}=4 \hbox{}\thispagestyle{empty}\newpage \if@twocolumn\hbox{}\newpage\fi \fi \fi\fi} \patchcmd\@vtryfc{\global\setbox\@outputbox\vbox{}} {\global\setbox\@outputbox\vbox{% \unless\ifnum\ltjgetparameter{direction}=4 \primitive\everypar{}\hskip\z@\fi }}{}{} \newif\iftombow \tombowfalse \newif\iftombowdate \tombowdatetrue \newdimen\@tombowwidth \setlength{\@tombowwidth}{.1\p@} \newbox\@TL\newbox\@Tl \newbox\@TC \newbox\@TR\newbox\@Tr \newbox\@BL\newbox\@Bl \newbox\@BC \newbox\@BR\newbox\@Br \newbox\@CL \newbox\@CR \font\@bannerfont=file:lmmono9-regular.otf % cmtt9 in pLaTeX \newtoks\@bannertoken \@bannertoken{} \def\maketombowbox{% \setbox\@TL\hbox to\z@{\yoko\hss \vrule width\dimexpr 10mm+\@tombowbleed\relax height\@tombowwidth depth\z@ \vrule height10mm width\@tombowwidth depth\z@ \iftombowdate \raise4pt\hbox to\z@{\hskip5mm\@bannerfont\the\@bannertoken\hss}% \fi}% \setbox\@Tl\hbox to\z@{\yoko\hss \vrule width10mm height\@tombowwidth depth\z@ \vrule height\dimexpr 10mm+\@tombowbleed\relax width\@tombowwidth depth\z@}% \setbox\@TC\hbox{\yoko \vrule width10mm height\@tombowwidth depth\z@ \vrule height10mm width\@tombowwidth depth\z@ \vrule width10mm height\@tombowwidth depth\z@}% \setbox\@TR\hbox to\z@{\yoko \vrule height10mm width\@tombowwidth depth\z@ \vrule width\dimexpr 10mm+\@tombowbleed\relax height\@tombowwidth depth\z@\hss}% \setbox\@Tr\hbox to\z@{\yoko \vrule height\dimexpr 10mm+\@tombowbleed\relax width\@tombowwidth depth\z@ \vrule width10mm height\@tombowwidth depth\z@\hss}% \setbox\@BL\hbox to\z@{\yoko\hss \vrule width\dimexpr 10mm+\@tombowbleed\relax depth\@tombowwidth height\z@ \vrule depth10mm width\@tombowwidth height\z@}% \setbox\@Bl\hbox to\z@{\yoko\hss \vrule width10mm depth\@tombowwidth height\z@ \vrule depth\dimexpr 10mm+\@tombowbleed\relax width\@tombowwidth height\z@}% \setbox\@BC\hbox{\yoko \vrule width10mm depth\@tombowwidth height\z@ \vrule depth10mm width\@tombowwidth height\z@ \vrule width10mm depth\@tombowwidth height\z@}% \setbox\@BR\hbox to\z@{\yoko \vrule depth10mm width\@tombowwidth height\z@ \vrule width\dimexpr 10mm+\@tombowbleed\relax depth\@tombowwidth height\z@\hss}% \setbox\@Br\hbox to\z@{\yoko \vrule depth\dimexpr 10mm+\@tombowbleed\relax width\@tombowwidth height\z@ \vrule width10mm depth\@tombowwidth height\z@\hss}% \setbox\@CL\hbox to\z@{\yoko\hss \vrule width10mm height.5\@tombowwidth depth.5\@tombowwidth \vrule height10mm depth10mm width\@tombowwidth}% \setbox\@CR\hbox to\z@{\yoko \vrule height10mm depth10mm width\@tombowwidth \vrule height.5\@tombowwidth depth.5\@tombowwidth width10mm\hss}% } \def\@outputtombow{% \iftombow \vbox to\z@{\kern\dimexpr-10mm-\@tombowbleed\relax \boxmaxdepth\maxdimen \moveleft\@tombowbleed\vbox to\@@paperheight{% \color@begingroup \@tombowcolor \hbox to\@@paperwidth{\hskip\@tombowbleed\relax \copy\@TL\hfill\copy\@TC\hfill\copy\@TR\hskip\@tombowbleed}% \kern-10mm% \hbox to\@@paperwidth{\copy\@Tl\hfill\copy\@Tr}% \vfill \hbox to\@@paperwidth{\copy\@CL\hfill\copy\@CR}% \vfill \hbox to\@@paperwidth{\copy\@Bl\hfill\copy\@Br}% \kern-10mm% \hbox to\@@paperwidth{\hskip\@tombowbleed\relax \copy\@BL\hfill\copy\@BC\hfill\copy\@BR\hskip\@tombowbleed}% \color@endgroup }\vss }% \fi } \def\@tombowcolor{\normalcolor} \def\@tombowbleed{3mm} \def\@tombowreset@@paper{% \@@topmargin \topmargin % only for compatibility \iftombow \@@paperwidth\dimexpr\paperwidth+2\dimexpr\@tombowbleed\relax \@@paperheight\dimexpr\paperheight+10mm+2\dimexpr\@tombowbleed\relax \advance\@@topmargin 1in\relax \advance\@themargin 1in\relax \fi } \newdimen\@@paperheight \newdimen\@@paperwidth \newdimen\@@topmargin % not used by LuaTeX-ja; only to avoid existing codes \patchcmd\@outputpage{\begingroup\let\protect\noexpand}{% tate direction \begingroup \ifnum\ltjgetparameter{direction}=4\else \dimen\z@\textwidth \textwidth\textheight \textheight\dimen\z@ \fi \let \protect \noexpand }{}{} \patchcmd\@outputpage{% supply \yoko \set@typeset@protect \aftergroup \endgroup }{% \yoko \set@typeset@protect \aftergroup \endgroup }{}{} \patchcmd\@outputpage{\let\@thefoot\@oddfoot\let\@themargin\oddsidemargin}{% tate direction \let\@thefoot\@oddfoot \ifnum\ltjgetparameter{direction}=3 \let\@themargin\evensidemargin \else\let\@themargin\oddsidemargin\fi }{}{} \patchcmd\@outputpage{\let\@thefoot\@evenfoot\let\@themargin\evensidemargin}{% tate direction \let\@thefoot\@evenfoot \ifnum\ltjgetparameter{direction}=3 \let\@themargin\oddsidemargin \else\let\@themargin\evensidemargin\fi }{}{} % 将来は shipout hook で書き直したい \patchcmd\@outputpage{\vskip\topmargin}{\vskip\topmargin\iftombow\vskip1in\fi}{}{} \patchcmd\@outputpage{\reset@font}{\@tombowreset@@paper\reset@font}{}{} \patchcmd\@outputpage{\@begindvi}{\@begindvi\@outputtombow}{}{} %%% Remove extra xkanjiskip \renewcommand\@makefnmark{% \unless\ifnum\ltjgetparameter{direction}=3 \hbox{}\hbox{\@textsuperscript{\normalfont\@thefnmark}}\hbox{}% \else\hbox{\yoko \@textsuperscript{\normalfont\@thefnmark}}\fi} \begingroup \@ifpackageloaded{hyperref} {\ifdefined\real@setref\def\ltj@setrefprefix{real}\else\def\ltj@setrefprefix{}\fi} {\def\ltj@setrefprefix{}} \expandafter\gdef\csname \ltj@setrefprefix @setref\endcsname#1#2#3{% \ifx#1\relax \protect\G@refundefinedtrue \nfss@text{\reset@font\bfseries ??}% \@latex@warning{Reference `#3' on page \thepage \space undefined}% \else \expandafter#2#1\protect\@setref@{}% change \null to \protect\@setref@{} \fi} \gdef\@setref@{\ifhmode\spacefactor\@m\fi} \endgroup \if@compatibility\else \def\verb{\relax\ifmmode\hbox\else\leavevmode\vadjust{}\fi \bgroup \verb@eol@error \let\do\@makeother \dospecials \verbatim@font\@noligs \language\l@nohyphenation \@ifstar\@sverb\@verb} \fi \patchcmd{\do@noligs}{\kern\z@}{\vadjust{}}{}{} % reported by p_typo \gdef\@stopfield{% \inhibitglue\@tempskipa\lastskip\unskip \hskip\@tempskipa\color@endgroup\egroup} \pretocmd{\footnote}{\inhibitglue}{}{} \pretocmd{\footnotemark}{\inhibitglue}{}{} \patchcmd{\@footnotemark}{\@makefnmark}{% \unless\ifnum\ltjgetparameter{direction}=3 \@makefnmark% \else\hbox to\z@{\hskip-.25\zw\raise.9\zh\@makefnmark\hss}\fi% }{}{} \let\@parboxto\@empty \long\def\@iiiparbox#1#2[#3]#4#5{% \leavevmode \@pboxswfalse \setlength\@tempdima{#4}% \@begin@tempboxa\vbox{\hsize\@tempdima\@parboxrestore#5\@@par}% \ifx\relax#2\else \setlength\@tempdimb{#2}% \edef\@parboxto{to\the\@tempdimb}% \fi \if#1b\vbox \else\if #1t\vtop \else\ifmmode\vcenter \else\@pboxswtrue\null$\vcenter% !!! \fi\fi\fi \@parboxto{\let\hss\vss\let\unhbox\unvbox \csname bm@#3\endcsname}% \if@pboxsw \m@th$\null\fi% !!! \@end@tempboxa} \DeclareRobustCommand\underline[1]{% \relax \ifmmode\@@underline{#1}% \else \leavevmode\null$\@@underline{\hbox{#1}}\m@th$\null\relax\fi} \newif\iffnfixbottom \newif\ifltj@ftn@unvboxed %%% @makecol \def\pltx@adjust@wd@outputbox{% \unless\ifnum\ltjgetparameter{direction}=4 \vbox{\primitive\everypar{}\hskip\z@}% \fi} \patchcmd\@makecol{\vskip -\dimen@\@textbottom}% {\pltx@adjust@wd@outputbox \vskip -\dimen@ \ifltj@ftn@unvboxed\iffnfixbottom\else\@textbottom\fi\else\@textbottom\fi}{}{} \patchcmd\@makecol{\vskip\skip\footins}{\iffnfixbottom\vskip\z@\@plus.0001fil\fi\vskip\skip\footins}{}{} \patchcmd\@makecol{\ifvoid\footins}{\ifvoid\footins\ltj@ftn@unvboxedfalse}{}{} \patchcmd\@makecol{\setbox\@outputbox \vbox}{\ltj@ftn@unvboxedtrue\setbox\@outputbox \vbox}{}{} \let\ltj@orig@makecol=\@makecol \patchcmd\@makespecialcolbox{\@textbottom}{\ifltj@ftn@unvboxed\iffnfixbottom\else\@textbottom\fi\else\@textbottom\fi}{}{} \def\@gnewline #1{% \ifvmode \@nolnerr \else \unskip \reserved@e {\reserved@f#1}\nobreak \hfil \break \null % \null は \break の効果が行頭禁則文字で打ち消されないために必要 \ignorespaces \fi} %%%%%% tabular (platex/#43) \@tabclassz \def\ltj@sharp{\relax\pltx@next@inhibitglue\ltjfakeboxbdd\ignorespaces\@sharp\unskip\ltjfakeboxbdd} \def\@tabclassz{% \ifcase\@lastchclass \@acolampacol \or \@ampacol \or \or \or \@addamp \or \@acolampacol \or \@firstampfalse\@acol \fi \edef\@preamble{% \@preamble{% \ifcase\@chnum \hfil\hskip1sp\ltj@sharp\hfil \or \hskip1sp\ltj@sharp\hfil \or \hfil\hskip1sp\ltj@sharp \fi}}} \patchcmd\@classv{% \ignorespaces\@sharp }{% \everypar\expandafter{\the\everypar\ltjfakeboxbdd}\ignorespaces\@sharp\unskip }{}{} \patchcmd{\@tabular}{\leavevmode}{\leavevmode\null}{}{} \apptocmd{\endtabular}{\null}{}{} \expandafter \let \csname endtabular*\endcsname = \endtabular %%%%%% tabbing (platex/#53) \patchcmd\@startline{\strut}{\strut\inhibitglue}{}{} \def\ltj@unhbox@curfield{\ltjfakeboxbdd\unhbox\@curfield\ltjfakeboxbdd} %\patchcmd\@contfield{\unhbox\@curfield}{\ltj@unhbox@curfield}{}{} \patchcmd\@addfield{\unhbox\@curfield}{\ltj@unhbox@curfield}{}{} \endinput