From 0c77f5a20c91f0bf16aca7cda36f154161e06afc Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 18 May 2021 20:14:54 +0000 Subject: bxjscls (18may21) git-svn-id: svn://tug.org/texlive/trunk@59253 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx | 106 ++++++++++++++++++++- 1 file changed, 103 insertions(+), 3 deletions(-) (limited to 'Master/texmf-dist/source/latex') diff --git a/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx b/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx index 58878b80729..92ea5eaa127 100644 --- a/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx +++ b/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx @@ -56,7 +56,8 @@ %<*driver> \ProvidesFile{bxjscls.dtx} % - [2021/02/02 v2.5 BXJS document classes] + [2021/05/18 v2.5a BXJS document classes] +% [2021/02/02 v2.5 BXJS document classes] % [2021/01/27 v2.4a BXJS document classes] % [2020/10/16 v2.4 BXJS document classes] % [2020/10/10 v2.3 BXJS document classes] @@ -2315,8 +2316,9 @@ % \begin{macrocode} \def\bxjs@@pandoc{pandoc} \ifx\bxjs@jadriver\bxjs@@pandoc \ifx\bxjs@plautopatch@given\@undefined + \ifjsWitheTeX \bxjs@plautopatchtrue -\fi\fi +\fi\fi\fi \ifx j\jsEngine \ifbxjs@plautopatch \RequirePackage{plautopatch}[2018/08/22]%v0.3 \fi\fi @@ -9815,6 +9817,14 @@ % \begin{macrocode} \ifbxjs@hyperref@enc \bxjs@check@hyperref@unicode{false} +% \end{macrocode} +% 暫定的なナニカ。 +% \begin{macrocode} + \ifjsWithupTeX\ifbxjs@old@hook@system\else + \IfFileExists{pxjahyper-uni.def}{% + \AddToHook{package/after/hyperref}{\input{pxjahyper-uni.def}} + }{} + \fi\fi \fi % \end{macrocode} % @@ -10536,6 +10546,17 @@ \RequirePackage{bxjspandoc} % \end{macrocode} % +% {\eTeX}ではない場合に警告を出す。 +% \Note 近い将来に{\eTeX}拡張を必須にする予定。 +% \begin{macrocode} +\ifjsWitheTeX\else + \ClassWarningNoLine\bxjs@clsname + {!!!!!!!! WARNING !!!!!!!!\MessageBreak + This engine does not support e-TeX extension!\MessageBreak + Some feature might not work properly} +\fi +% \end{macrocode} +% % \begin{macro}{\bxjs@endpreamble@hook} % |etoolbox| の |\AtEndPreamble| で実行されるBXJSクラス用のフック。 % \Note {\eTeX}以外では無効になる。 @@ -10543,12 +10564,18 @@ % \begin{macrocode} \@onlypreamble\bxjs@endpreamble@hook \let\bxjs@endpreamble@hook\@empty +% \end{macrocode} +% \end{macro} +% +% パッケージ読込。 +% \begin{macrocode} +\RequirePackage{iftex}[2013/04/04]% v0.2 \ifjsWitheTeX \RequirePackage{etoolbox}[2010/08/21]% v2.0 \AtEndPreamble{\bxjs@endpreamble@hook} + \RequirePackage{filehook}[2011/10/12]% v0.5d \fi % \end{macrocode} -% \end{macro} % %^^A---------------- % \subsection{和文ドライバパラメタ} @@ -11131,6 +11158,79 @@ % \end{macrocode} % %^^A---------------- +% \subsection{ifPDFTeXスイッチ} +% +% PandocモードではPandocの既定テンプレートを(無理やり){(u)\pTeX}に +% 対応させることを目的にしている。 +% +% 旧版のテンプレートでは|ifxetex|と|ifluatex|パッケージを読み込んだ +% 上で「{\XeTeX}でも{\LuaTeX}でもないものは{pdf\TeX}」という前提の +% 動作をしていた。 +% よって、{(u)\pTeX}に対応させる際には「{pdf\TeX}用の処理が実行される」 +% ことを前提にすればよかった。 +% +% ところが、Pandocの2.12版では|iftex|パッケージが導入されて +% 「{pdf\TeX}の判定を直接 |\ifPDFTeX| で行う」ように改修された。 +% このため、{(u)\pTeX}での実行でどのコードが実行されるかを予期する +% ことが困難になってしまった。 +% +% これに対処するため、 +% 「文書ファイルのプレアンブル実行中に限って |\ifPDFTeX| が +% (実際とは異なり)真になるようにする」 +% という細工を施すことで、従来通り「{pdf\TeX}用の処理が実行される」 +% 前提が維持されるようにする。 +% +% \begin{macrocode} +\if j\jsEngine +% \end{macrocode} +% \begin{macro}{\bxjs@check@frontier} +% |\bxjs@check@frontier\CS| は現在のパッケージ読込ネストレベルが +% 丁度1であるときにのみ |\CS| を実行する。 +% \begin{macrocode} + \def\bxjs@check@frontier{% + \expandafter\bxjs@check@frontier@a\@currnamestack\noindent...\@nil} + \def\bxjs@check@frontier@a#1#2#3#4#5\@nil#6{% + \ifx\noindent#4#6\fi} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\bxjs@unforge@ifPDFTeX} +% |\ifPDFTeX| を偽(正しい値)にする。 +% \begin{macrocode} + \@onlypreamble\bxjs@unforge@ifPDFTeX + \def\bxjs@unforge@ifPDFTeX{\global\bxjs@csletcs{ifPDFTeX}{iffalse}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\bxjs@forge@ifPDFTeX} +% |\ifPDFTeX| を真(偽装した値)にする。 +% \begin{macrocode} + \@onlypreamble\bxjs@forge@ifPDFTeX + \def\bxjs@forge@ifPDFTeX{\global\bxjs@csletcs{ifPDFTeX}{iftrue}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\bxjs@unload@forge@ifPDFTeX} +% |\ifPDFTeX| に対する細工を無効化する。 +% \begin{macrocode} + \def\bxjs@unload@forge@ifPDFTeX{% + \bxjs@unforge@ifPDFTeX + \global\let\bxjs@check@frontier\@gobble} +% \end{macrocode} +% \end{macro} +% プレアンブル開始時は |\ifPDFTeX| は真で、終了時に偽装を無効化する。 +% |filehook| のフックで「パッケージ読込中は偽装を解除する」ことを +% 実現している。 +% \begin{macrocode} + \jsAtEndOfClass{\bxjs@forge@ifPDFTeX} + \ifjsWitheTeX + \AtBeginOfEveryFile{\bxjs@check@frontier\bxjs@unforge@ifPDFTeX}% + \AtEndOfEveryFile{\bxjs@check@frontier\bxjs@forge@ifPDFTeX}% + \g@addto@macro\bxjs@endpreamble@hook{\bxjs@unload@forge@ifPDFTeX} + \else + \g@addto@macro\bxjs@begin@document@hook{\bxjs@unload@forge@ifPDFTeX} + \fi +\fi +% \end{macrocode} +% +%^^A---------------- % \subsection{完了} % おしまい。 % \begin{macrocode} -- cgit v1.2.3