From f93557f10117cc746ea540304bbbbf480a41810d Mon Sep 17 00:00:00 2001 From: aminophen Date: Wed, 14 Sep 2016 19:45:02 +0900 Subject: [PATCH] platex.dtx, plcore.dtx: Improve banner adjustment. --- platex.dtx | 49 ++++++++++++++++++++++++++++++++++++++++++++++--- platex.ltx | 2 +- plcore.ltx | 12 +++++------- plvers.dtx | 32 ++++++++++++++++++++++---------- 4 files changed, 74 insertions(+), 21 deletions(-) diff --git a/platex.dtx b/platex.dtx index 45ff4ae..f54a366 100644 --- a/platex.dtx +++ b/platex.dtx @@ -42,13 +42,14 @@ % \changes{v1.0l}{2016/06/19}{パッチレベルを\file{plvers.dtx}から取得} % \changes{v1.0m}{2016/08/26}{\file{platex.cfg}の読み込みを % \file{plcore.ltx}から\file{platex.ltx}へ移動} +% \changes{v1.0n}{2016/09/14}{\LaTeX{}のバナーの保存しかたを改良} % \fi % % \iffalse %<*driver> \NeedsTeXFormat{pLaTeX2e} % \fi -\ProvidesFile{platex.dtx}[2016/08/26 v1.0m pLaTeX document file] +\ProvidesFile{platex.dtx}[2016/09/14 v1.0n pLaTeX document file] % \iffalse \documentclass{jltxdoc} \usepackage{plext} @@ -235,11 +236,53 @@ \let\dump\relax % \end{macrocode} % -% \file{latex.ltx}を読み込み、起動時のバナーを保存します。 +% \file{latex.ltx}を読み込み、起動時のバナーを保存します。\TeX\ Liveの標準的 +% インストールでは、この中でBabel由来のハイフネーション・パターン +% \file{hyphen.cfg}が読み込まれ、そのバージョンも含めて保存されるはずです。 +% +%\iffalse +% 2016/05/07の実装では、\file{platex.ltx}のなかで +%\begin{verbatim} +% \edef\platexBANNER{\the\everyjob} +%\end{verbatim} +% としてバナーを保存し、この内容が +%\begin{verbatim} +% \typeout{LaTeX2e version}\typeout{Babel version} +%\end{verbatim} +% という4つのトークンから成ると仮定して、\file{plcore.ltx}のなかで +%\begin{verbatim} +% \def\parse@@BANNER#1#2#3#4{#2} +%\end{verbatim} +% のようにパースしていました。ところが、この「4つのトークンから成る」と +% いう仮定はBabel由来の\file{hyphen.cfg}を使用した場合のみ成り立ち、 +% それ以外の特別な\file{hyphen.cfg}や\file{hyphen.ltx}を使用した場合に +% エラーになってしまいます。 +% そこで、新たに2016/09/14の実装では、\file{platex.ltx}のなかで +%\begin{verbatim} +% \edef\platexBANNER{\the\everyjob\noexpand\typeout{}\relax} +%\end{verbatim} +% としてダミーを追加します(|\relax|はただの区切りトークンの役割)。 +% こうすると、|\platexBANNER|の内容は、Babelの\file{hyphen.cfg}のとき +%\begin{verbatim} +% \typeout{LaTeX2e version}\typeout{Babel version}\typeout{}\relax +%\end{verbatim} +% となり、それ以外のとき +%\begin{verbatim} +% \typeout{LaTeX2e version}\typeout{}\relax +%\end{verbatim} +% となるはずです。このように、少なくとも|\typeout|が2回含まれています +% ので、\file{plcore.ltx}のなかで +%\begin{verbatim} +% \def\parse@@BANNER\typeout#1\typeout#2#3\relax{#1} +%\end{verbatim} +% とパースすることができるようになります。 +%\fi +% % \changes{v1.0g}{2016/05/07}{フォーマット作成時に\LaTeX{}のバナーを一旦保存} +% \changes{v1.0n}{2016/09/14}{\LaTeX{}のバナーの保存しかたを改良} % \begin{macrocode} \input latex.ltx -\edef\platexBANNER{\the\everyjob}% save LaTeX banner +\edef\platexBANNER{\the\everyjob\noexpand\typeout{}\relax}% save LaTeX banner % \end{macrocode} % % \file{plcore.ltx}を読み込み、このp\LaTeX{}のバージョンを表示します。 diff --git a/platex.ltx b/platex.ltx index e5ba0c1..5d486ae 100644 --- a/platex.ltx +++ b/platex.ltx @@ -16,7 +16,7 @@ \let\orgdump\dump \let\dump\relax \input latex.ltx -\edef\platexBANNER{\the\everyjob}% save LaTeX banner +\edef\platexBANNER{\the\everyjob\noexpand\typeout{}\relax}% save LaTeX banner \typeout{**************************^^J% *^^J% * making pLaTeX format^^J% diff --git a/plcore.ltx b/plcore.ltx index 538c61d..d87731a 100644 --- a/plcore.ltx +++ b/plcore.ltx @@ -1010,26 +1010,24 @@ \ifx\ppatch@level\@undefined % fallback if undefined in pLaTeX \def\ppatch@level{0}\fi \begingroup - \def\parse@BANNER#1{\expandafter\parse@@BANNER#1} - \def\parse@@BANNER#1#2#3#4{#2} + \def\parse@@BANNER\typeout#1\typeout#2#3\relax{#1} \edef\platexTMP{% \ifnum\ppatch@level=0 \everyjob{\noexpand\typeout{% \pfmtname\space<\pfmtversion>\space - (based on \parse@BANNER{\platexBANNER})}}% + (based on \expandafter\parse@@BANNER\platexBANNER)}}% \else \everyjob{\noexpand\typeout{% \pfmtname\space<\pfmtversion>+\ppatch@level\space - (based on \parse@BANNER{\platexBANNER})}}% + (based on \expandafter\parse@@BANNER\platexBANNER)}}% \fi } \expandafter \endgroup \platexTMP \begingroup - \def\parse@BANNER#1{\expandafter\parse@@BANNER#1} - \def\parse@@BANNER#1#2#3#4{#4} + \def\parse@@BANNER\typeout#1\typeout#2#3\relax{#2} \edef\platexTMP{% - \the\everyjob\noexpand\typeout{\parse@BANNER{\platexBANNER}}% + \the\everyjob\noexpand\typeout{\expandafter\parse@@BANNER\platexBANNER}% } \everyjob=\expandafter{\platexTMP}% \edef\platexTMP{% diff --git a/plvers.dtx b/plvers.dtx index c8fb285..3963f48 100644 --- a/plvers.dtx +++ b/plvers.dtx @@ -49,12 +49,13 @@ % \changes{v1.0y}{2016/06/27}{\file{platex.cfg}の読み込みを追加} % \changes{v1.0z}{2016/08/26}{\file{platex.cfg}の読み込みを % \file{plcore.ltx}から\file{platex.ltx}へ移動} +% \changes{v1.1}{2016/09/14}{起動時のバナーを取得するコードを改良} % \fi % % \iffalse %<*driver> % \fi -\ProvidesFile{plvers.dtx}[2016/08/26 v1.0z pLaTeX Kernel (Version Info)] +\ProvidesFile{plvers.dtx}[2016/09/14 v1.1 pLaTeX Kernel (Version Info)] % \iffalse \documentclass{jltxdoc} \GetFileInfo{plvers.dtx} @@ -173,26 +174,31 @@ % % 起動時に表示される文字列です。 % \LaTeX{}にパッチがあてられている場合は、それも表示します。 +% +%\iffalse +% この実装については\file{platex.dtx}のコメントを参照。(2016/09/14) +%\fi +% % \changes{v1.0v}{2016/05/07}{起動時の文字列を最新の\LaTeX{}に合わせた。} % \changes{v1.0w}{2016/05/12}{起動時の文字列に入れる\LaTeX{}のバージョンを % 元の\LaTeX{}のバナーから引き継ぐように改良} +% \changes{v1.1}{2016/09/14}{起動時のバナーを取得するコードを改良} % \begin{macrocode} \ifx\patch@level\@undefined % fallback if undefined in LaTeX \def\patch@level{0}\fi \ifx\ppatch@level\@undefined % fallback if undefined in pLaTeX \def\ppatch@level{0}\fi \begingroup - \def\parse@BANNER#1{\expandafter\parse@@BANNER#1} - \def\parse@@BANNER#1#2#3#4{#2} + \def\parse@@BANNER\typeout#1\typeout#2#3\relax{#1} \edef\platexTMP{% \ifnum\ppatch@level=0 \everyjob{\noexpand\typeout{% \pfmtname\space<\pfmtversion>\space - (based on \parse@BANNER{\platexBANNER})}}% + (based on \expandafter\parse@@BANNER\platexBANNER)}}% \else \everyjob{\noexpand\typeout{% \pfmtname\space<\pfmtversion>+\ppatch@level\space - (based on \parse@BANNER{\platexBANNER})}}% + (based on \expandafter\parse@@BANNER\platexBANNER)}}% \fi } \expandafter @@ -200,16 +206,22 @@ % \end{macrocode} % % p\LaTeX{}は、独自のハイフネーション・パターンを定義していません。 -% 代わりに、\LaTeX{}が読み込んでいるBabelパッケージのものが適用されます。 -% 起動時の文字列にも\file{hyphen.cfg}のバージョンを反映します。 +% \TeX\ Liveの標準的インストールでは、代わりに\LaTeX{}が読み込んでいる +% Babelパッケージのものが適用されるはずですから、起動時の文字列にも +% \file{hyphen.cfg}のバージョンを反映します(Babelパッケージの +% \file{hyphen.cfg}でない場合は、何も表示されず空行になるはずです)。 +% +%\iffalse +% この実装については\file{platex.dtx}のコメントを参照。(2016/09/14) +%\fi +% % \changes{v1.0w}{2016/05/12}{起動時の文字列に入れるBabelのバージョンを % 元の\LaTeX{}のバナーから取得するコードを\file{platex.ini}から取り入れた} % \begin{macrocode} \begingroup - \def\parse@BANNER#1{\expandafter\parse@@BANNER#1} - \def\parse@@BANNER#1#2#3#4{#4} + \def\parse@@BANNER\typeout#1\typeout#2#3\relax{#2} \edef\platexTMP{% - \the\everyjob\noexpand\typeout{\parse@BANNER{\platexBANNER}}% + \the\everyjob\noexpand\typeout{\expandafter\parse@@BANNER\platexBANNER}% } \everyjob=\expandafter{\platexTMP}% \edef\platexTMP{%