OSDN Git Service

#40839
[luatex-ja/luatexja.git] / src / ltj-latex.sty
index edf409d..506adea 100644 (file)
 \def\luatexjalatexLoaded{\endinput}
 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ltj-latex}[2018/08/23 LaTeX support of LuaTeX-ja]
+\ProvidesPackage{ltj-latex}[2020-10-09 LaTeX support of LuaTeX-ja]
 
 % cleanup at end of the document
 %\let\ltj@@orig@end=\@@end
 %\protected\def\@@end{%
 %  \directlua{luatexja.ext_cleanup()}\ltj@@orig@end}
 
-% Globally add to the head of a macro (cf. LaTeX2e's \g@addto@macro)
-\long\def\ltj@g@addto@macro#1#2{%
-  \begingroup
-    \def\ltj@tmpa{#2}
-    \toks@\expandafter\expandafter\expandafter{\expandafter\ltj@tmpa#1}
-    \xdef#1{\the\toks@}
-  \endgroup}
-
-\def\ltj@AtBeginDocument{\ltj@g@addto@macro\@begindocumenthook}
-
-\def\ltj@pkgpatch#1{\ltj@AtBeginDocument{\@ifpackageloaded{#1}{\usepackage{lltjp-#1}}{}}}
-
 \endlinechar=13
 
+%%% LaTeX version detection
+\ifcsname tex_shipout:D\endcsname
+  \expandafter\let\csname tex_shipout:D\endcsname\ltj@shipout
+\fi
+\newif\ifltj@ltfilehook@avail
+\@ifl@t@r\fmtversion{2020-10-01}{%
+  \ifnum\patch@level<0\relax \ifnum\patch@level<-6 \ltj@ltfilehook@availtrue\fi
+  \else\ltj@ltfilehook@availtrue\fi
+}{}
+
 %%% patch for LaTeX
 \usepackage{lltjfont}
 \usepackage{lltjdefs}
 \usepackage{lltjcore}
+\RequirePackage{lltjp-atbegshi}
 
-\RequirePackage{filehook}
-\def\ltj@pkgpatch@im#1{%
- \@ifnextchar[{\ltj@pkgpatch@im@{#1}}{\ltj@pkgpatch@im@{#1}[lltjp-#1]}}%]
-\def\ltj@pkgpatch@im@#1[#2]{\AtEndOfPackageFile*{#1}{\input{#2.sty}}}
-
-%%% default parameters
-\directlua{
-  local s = kpse.find_file('ltj-kinsoku.lua', 'tex')
-  luatexja.stack.charprop_stack_table[0] = s and dofile(s) or {}
+%%% patching commands
+\ifltj@ltfilehook@avail
+  \def\@@ltj@ExecuteAfterPackage#1{\AddToHook{package/after/#1}}
+  \def\@@ltj@ExecuteBeforePackage#1{\AddToHook{package/before/#1}}
+  \def\ltj@ExecuteAfterPackage{\@ifstar\@@ltj@ExecuteAfterPackage@star\@@ltj@ExecuteAfterPackage}
+  \def\@@ltj@ExecuteAfterPackage@star#1#2{%
+    \@ifpackageloaded{#1}{#2}{\@@ltj@ExecuteAfterPackage{#1}{#2}}%
+  }
+  \def\ltj@ExecuteBeforePackage{\@ifstar\@@ltj@ExecuteBeforePackage@star\@@ltj@ExecuteBeforePackage}
+  \def\@@ltj@ExecuteBeforePackage@star#1#2{%
+    \@ifpackageloaded{#1}{#2}{\@@ltj@ExecuteBeforePackage{#1}{#2}}%
+  }
+\else
+  \RequirePackage{filehook}
+  \let\ltj@ExecuteAfterPackage=\AtEndOfPackageFile
+  \let\ltj@ExecuteBeforePackage=\AtBeginOfPackageFile
+\fi
+\def\ltj@pkgpatch@im#1{\@ifnextchar[{\ltj@pkgpatch@im@{#1}}{\ltj@pkgpatch@im@{#1}[lltjp-#1]}}%]
+\def\ltj@pkgpatch@im@#1[#2]{\ltj@ExecuteAfterPackage*{#1}{\ltj@pkgpatch@im@@{#2}}}
+\def\ltj@pkgpatch@im@@#1{%
+  \@ifpackageloaded{#1}{}{%
+    \if\catcode`@=11\let\ltj@temp\relax\else
+      \edef\ltj@temp{\noexpand\catcode`@=\the\catcode`@\relax}\makeatletter
+    \fi
+    \@@input{#1.\@pkgextension}\ltj@temp
+  }%
 }
 
-\ltjsetparameter{kanjiskip=\z@ plus .4pt minus .5pt,
-  xkanjiskip=.25\zw plus 1pt minus 1pt,
-  autospacing, autoxspacing, jacharrange={-1},
-  yalbaselineshift=\z@, yjabaselineshift=\z@,
-  jcharwidowpenalty=500, differentjfm=paverage
+\def\ltj@pkgpatch#1{\@ifnextchar[{\ltj@pkgpatch@{#1}}{\ltj@pkgpatch@{#1}[lltjp-#1]}}%]
+\ifltj@ltfilehook@avail
+  \def\ltj@pkgpatch@@{\AddToHook{begindocument/before}[luatexja.autopatch]}
+\else
+  \def\ltj@pkgpatch@@{\gpreto\@begindocumenthook}
+\fi
+\def\ltj@pkgpatch@#1[#2]{%
+  \ltj@pkgpatch@@{%
+    \@ifpackageloaded{#1}{\@ifpackageloaded{#2}{}{\RequirePackage{#2}}}{}%
+  }%
 }
-
 \expandafter\let\csname JY3/mc/m/n/10\endcsname\relax
 
 %%% patch for packages
 \ltj@pkgpatch@im{fontspec}
 \ltj@pkgpatch{footmisc}  %% at \begin{document}
 \ltj@pkgpatch{tascmac}
-\ltj@AtBeginDocument{\@ifpackageloaded{ascmac}{%
-  \edef\ltj@asc@temp{\noexpand\catcode`\noexpand\@=\the\catcode`\@}%
-  \makeatletter\input{lltjp-tascmac.sty}%
-  \ltj@asc@temp\let\ltj@asc@temp=\relax
-}{}}% ascmac
+\ltj@pkgpatch{ascmac}[lltjp-tascmac]
 \ltj@pkgpatch@im{stfloats}
-\ltj@pkgpatch{preview}  %% at \begin{document}
+\ifltj@ltfilehook@avail\else
+  \ltj@pkgpatch{preview}  %% at \begin{document}
   % (preview package has delayed option)
+\fi
 \ltj@pkgpatch{array}    %% at \begin{document}
+\ltj@pkgpatch{collcell} %% at \begin{document}
 \ltj@pkgpatch@im{unicode-math}
 \ltj@pkgpatch@im{siunitx}
+\ltj@pkgpatch@im{microtype}
+
+\ifltj@ltfilehook@avail\else\ltj@pkgpatch@im{everyshi}\fi
 
 \RequirePackage{lltjp-geometry}