From 29e8e79e67fce28014aba462e80fe387cdd724f8 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 20 Mar 2022 21:08:20 +0000 Subject: bxjscls (20mar22) git-svn-id: svn://tug.org/texlive/trunk@62825 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/bxjscls/LICENSE | 2 +- Master/texmf-dist/doc/latex/bxjscls/README-ja.md | 4 + Master/texmf-dist/doc/latex/bxjscls/README.md | 2 + .../doc/latex/bxjscls/bxjscls-manual.pdf | Bin 382333 -> 396121 bytes .../doc/latex/bxjscls/bxjscls-manual.tex | 169 ++++++++++--- Master/texmf-dist/doc/latex/bxjscls/bxjscls.pdf | Bin 1178317 -> 1186301 bytes Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx | 267 ++++++++++++++++----- .../texmf-dist/tex/latex/bxjscls/bxjsarticle.cls | 39 ++- Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls | 39 ++- Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty | 2 +- Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty | 2 +- .../tex/latex/bxjscls/bxjsja-minimal.def | 2 +- .../texmf-dist/tex/latex/bxjscls/bxjsja-modern.def | 2 +- .../texmf-dist/tex/latex/bxjscls/bxjsja-pandoc.def | 77 +++--- .../tex/latex/bxjscls/bxjsja-standard.def | 20 +- Master/texmf-dist/tex/latex/bxjscls/bxjspandoc.sty | 27 ++- Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls | 39 ++- Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls | 39 ++- 18 files changed, 575 insertions(+), 157 deletions(-) diff --git a/Master/texmf-dist/doc/latex/bxjscls/LICENSE b/Master/texmf-dist/doc/latex/bxjscls/LICENSE index 9f9db67d1e7..0ab060e9e95 100644 --- a/Master/texmf-dist/doc/latex/bxjscls/LICENSE +++ b/Master/texmf-dist/doc/latex/bxjscls/LICENSE @@ -3,7 +3,7 @@ The BSD 2-Clause License Copyright 1995-1999 ASCII Corporation. Copyright 1999-2016 Haruhiko Okumura Copyright 2016-2020 Japanese TeX Development Community -Copyright 2013-2021 Takayuki YATO (aka. "ZR") +Copyright 2013-2022 Takayuki YATO (aka. "ZR") All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/Master/texmf-dist/doc/latex/bxjscls/README-ja.md b/Master/texmf-dist/doc/latex/bxjscls/README-ja.md index e584fdfbaaa..5867d076017 100644 --- a/Master/texmf-dist/doc/latex/bxjscls/README-ja.md +++ b/Master/texmf-dist/doc/latex/bxjscls/README-ja.md @@ -99,6 +99,10 @@ XeLaTeX / LuaLaTeX の上でも日本語処理パッケージと連携して使 更新履歴 -------- + * Version 2.6 〈2022/03/20〉 + - LaTeX カーネル 2021/11/15 版への対応。 + - 新版の Pandoc テンプレートへの対策。 + - `\strongfontdeclare` 環境の補填。 * Version 2.5a 〈2021/05/18〉 - 新版の Pandoc テンプレートへの対策。 * Version 2.5 〈2021/02/02〉 diff --git a/Master/texmf-dist/doc/latex/bxjscls/README.md b/Master/texmf-dist/doc/latex/bxjscls/README.md index f54f4f6c56a..b5d1716a192 100644 --- a/Master/texmf-dist/doc/latex/bxjscls/README.md +++ b/Master/texmf-dist/doc/latex/bxjscls/README.md @@ -89,6 +89,8 @@ This package is distributed under the BSD 2-Clause License. Revision History ---------------- + * Version 2.6 〈2022/03/20〉 + - Support LaTeX kernel 2021/11/15. * Version 2.5a 〈2021/05/18〉 * Version 2.5 〈2021/02/02〉 * Version 2.4a 〈2021/01/27〉 diff --git a/Master/texmf-dist/doc/latex/bxjscls/bxjscls-manual.pdf b/Master/texmf-dist/doc/latex/bxjscls/bxjscls-manual.pdf index 3b42fbe3194..5da7dc08b95 100644 Binary files a/Master/texmf-dist/doc/latex/bxjscls/bxjscls-manual.pdf and b/Master/texmf-dist/doc/latex/bxjscls/bxjscls-manual.pdf differ diff --git a/Master/texmf-dist/doc/latex/bxjscls/bxjscls-manual.tex b/Master/texmf-dist/doc/latex/bxjscls/bxjscls-manual.tex index c13b35f031f..c53fb7e9dc6 100644 --- a/Master/texmf-dist/doc/latex/bxjscls/bxjscls-manual.tex +++ b/Master/texmf-dist/doc/latex/bxjscls/bxjscls-manual.tex @@ -11,8 +11,8 @@ \bxtexlogoimport{*} \usepackage{shortvrb} \MakeShortVerb{\|} -\newcommand{\PkgVersion}{2.5a} -\newcommand{\PkgDate}{2021/05/18} +\newcommand{\PkgVersion}{2.6} +\newcommand{\PkgDate}{2022/03/20} \newcommand{\Pkg}[1]{\textsf{#1}} \newcommand{\Meta}[1]{$\langle$\mbox{}\nobr#1\nobr\mbox{}$\rangle$} \newcommand{\Note}{\par\noindent ※} @@ -32,6 +32,17 @@ \author{八登崇之\ (Takayuki YATO; aka.~``ZR'')} \date{v\PkgVersion\quad[\PkgDate]} \maketitle + +\begin{abstract} +本パッケージに含まれる文書クラス集は、 +奥村晴彦氏および“日本語{\TeX}開発コミュニティ”により作製された +\Pkg{jsclasses}パッケージの文書クラス集 +の拡張版に相当する。 +元の\Pkg{jsclasses}のクラスが{\pLaTeX}と{\upLaTeX}のみを +サポートするのに対して、 +本パッケージのクラスは主要エンジンの全てをサポートする。 +\end{abstract} + \tableofcontents %=========================================================== @@ -42,7 +53,7 @@ BXJS文書クラスについては、サイト“{\TeX} Wiki”中の記事、 およびそこからたどれる情報も併せて参照してほしい。 %=========================================================== -\section{概要} +\section{本パッケージの目的} \label{sec:Ovewview} 本パッケージに含まれる文書クラス集 @@ -70,6 +81,8 @@ JSクラスのレイアウトデザインと機能をほぼ踏襲しているが 同様の機能が提供されている。 \item 用紙サイズや基底フォントサイズについて、任意の値を指定する ことができる。 +\item 文書形式変換ツールPandocを用いた日本語{\LaTeX}文書生成の + ために調整された設定である「Pandocモード」が利用できる。 \end{itemize} %=========================================================== @@ -197,7 +210,7 @@ JSクラスのレイアウトデザインと機能をほぼ踏襲しているが 次の設定と大体同じであるが、ただし文書レイアウトは \Pkg{article}でなく\Pkg{jsarticle}とほぼ同じになっている: \begin{quote}\small\begin{verbatim} -\documentclass[a4paper]{article} +\documentclass[a4paper]{article}%ただしレイアウトはjsarticle相当 \usepackage[whole,autotilde]{bxcjkjatype} \end{verbatim}\end{quote} @@ -256,7 +269,7 @@ JSクラスのレイアウトデザインと機能をほぼ踏襲しているが 次の設定と大体同じであるが、ただし文書レイアウトは \Pkg{jsarticle}とほぼ同じになっている: \begin{quote}\small\begin{verbatim} -\documentclass[a4paper,twocolumn]{article} +\documentclass[a4paper,twocolumn]{article}%ただしレイアウトはjsarticle相当 \usepackage{zxjatype} \setCJKmainfont[BoldFont=HaranoAjiGothic-Medium.otf]{HaranoAjiMincho-Regular.otf} \setCJKsansfont[BoldFont=HaranoAjiGothic-Medium.otf]{HaranoAjiGothic-Medium.otf} @@ -289,8 +302,7 @@ JSクラスのレイアウトデザインと機能をほぼ踏襲しているが (ただし\Pkg{luatexja-preset}は実際には読み込まれない): \begin{quote}\small\begin{verbatim} \documentclass[b5paper,9pt]{ltjsarticle} -\usepackage{luatexja-fontspec} -\usepackage[haranoaji]{luatexja-preset} +\usepackage[haranoaji]{luatexja-preset}%実際にはパッケージは読み込まれない \end{verbatim}\end{quote} \Note 2.0版より、既定の和文フォントが「IPAexフォント」から @@ -303,8 +315,7 @@ JSクラスのレイアウトデザインと機能をほぼ踏襲しているが 次の設定とほぼ等価になる: \begin{quote}\small\begin{verbatim} \documentclass[b5paper]{ltjsarticle} -\usepackage{luatexja-fontspec} -\usepackage[ms]{luatexja-preset} +\usepackage[ms]{luatexja-preset}%実際にパッケージが読み込まれる \end{verbatim}\end{quote} \Note 補足: @@ -379,13 +390,47 @@ JSクラスのレイアウトデザインと機能をほぼ踏襲しているが \end{itemize} %=========================================================== -\section{Pandocモードの使い方} +\section{Pandocモード} \label{sec:Pandoc-mode} 「Pandocモード」は文書形式変換ツールである Pandoc\footnote{\url{http://pandoc.org/}}% を用いた日本語{\LaTeX}文書生成(および{\LaTeX}経由のPDF生成) のために調整された設定である。 +特に +「Pandoc(2.0版以降)の既定の{\LaTeX}出力用テンプレートをそのまま +用いても日本語文書として適切な出力が得られる」 +ことを主要な目的としている。 + +現状のPandocモードでは以下の調整が行われる。 +\Note これらの一部についてはユーザによる設定変更が可能である。 +詳細は\ref{ssec:pandoc-param}節、\ref{ssec:ja-settings}節を参照。 + +\begin{itemize} +\item PandocのStrong(重要)要素の出力を |\strong| 命令に合わせるため、 + |\textbf| 命令を |\strong| 命令に移譲させる。 +\item |\texttt| 命令・|\verb| 命令と和文との間に入る和欧文間空白を + 調節している。 +\item Pandocは入力文書中の三点リーダ“…”を |\ldots| 命令に変換するが、 + このせいで欧文扱いになるのを回避するため、 + |\ldots| を一定の条件下において和文で出力させる。 +\item 全角空白文字の入力を(文字ではなく)空きの挿入と解釈する。 +\item Pandocの一部の設定は |\paragraph| の見出しの体裁を変更するが、 + この場合に連動して |paragraph-mark| の既定値を空に変更する。 +\item Pandocの一部の設定はプレアンブルでの\Pkg{geometry}の読込を + 発生させるが、この場合に重複読込のエラーになるのを回避するため、 + \Pkg{geometry}の読込を |\setpagelayout*| の呼出に振り替える。 +\item 入力文書が言語指定を含む場合にはBabelパッケージが読み込まれるが、 + この際に発生する可能性がある不整合を回避する。 +\item \Pkg{hyperref}パッケージの |unicode| オプションの有無について + 適切な選択(エンジンにより決まる)を強制する。 + ((u){\pLaTeX}をサポートするための措置。) +\end{itemize} + +%------------------- +\subsection{Pandocモードの使い方} + +Pandocモードを使う場合はクラスオプションを以下のように指定する。 \begin{quote} |\documentclass[pandoc,|\Meta{ドライバ}% @@ -407,20 +452,25 @@ Pandoc\footnote{\url{http://pandoc.org/}}% 従来通り使用できる。 \end{itemize} -以下でPandocでBXJSクラスを用いる例を示す。 +%------------------- +\subsection{Pandocの設定の例} + +BXJSクラスを用いる場合のPandocの設定について、以下で例を示す。 \Note なお、以下の記述はPandoc 2.x版に従う。 -(オプション体系が1.x版とかなり異なるので注意。) +Pandocのオプション体系は2.x版と1.x版とでかなり異なることに +注意されたい。 -\begin{itemize} -\item \Pkg{bxjsarticle}クラスを使用する一例。 +\paragraph{bxjsarticleの例} + +以下の設定で\Pkg{bxjsarticle}クラスを使用したい。 \begin{itemize} \item {\XeLaTeX}経由 \item 用紙サイズはA4判 \item 和文フォント設定は |ipaex| \end{itemize} - コマンド行は次のようになる。 + この場合のコマンド行は次のようになる: \footnote{もちろん、実際には改行を含めず1行で書く。 なお、日本語文書の場合、変換先書式(|-t|)は |latex| でなく |lates-smart|(|smart| 機能を無効化)とすべきである。} @@ -441,7 +491,10 @@ Pandoc\footnote{\url{http://pandoc.org/}}% |\documentclass[a4paper,jafont=ipaex,pandoc]{bxjsarticle}| \end{quote} -\item \Pkg{bxjsbook}クラスを用いる場合の一例。 +\paragraph{bxjsbookの例} + +以下の設定で\Pkg{bxjsbook}クラスを使用したい。 + \begin{itemize} \item 節番号を出力する \item Lua{\LaTeX}経由 @@ -451,7 +504,7 @@ Pandoc\footnote{\url{http://pandoc.org/}}% \item 欧文フォントをPandocの機能で設定 \end{itemize} - コマンド行は次のようになる: + この場合のコマンド行は次のようになる: \begin{quote} |pandoc| \Meta{入力ファイル名}\ |-o| \Meta{出力ファイル名}|.pdf| @@ -468,30 +521,30 @@ Pandoc\footnote{\url{http://pandoc.org/}}% |-V sansfont="TeX Gyre Heros"| \end{quote} - 注意事項: +\Note 注意事項: \begin{itemize} \item \Pkg{bxjsbook}クラスは「章(|\chapter|)」をもつクラスなので、 Pandocで |--top-level-division=|\linebreak[0]|chapter| の指定 が必要。 \end{itemize} -\item Pandocで{\LaTeX}経由でPDFを出力する場合、 - エンジン指定(|--pdf-engine|)は - |pdflatex|、|xelatex|、|lualatex|のみがサポートされる。 - しかし、Pandocの出力を「単体の{\LaTeX}文書」(|-s|指定)とすることで、 - {\LaTeX}エンジンに(u){\pLaTeX}を使用することができる。 - 出力された{\LaTeX}文書は通常の方法でPDFやPostScript形式に - 変換できる。 - - \begin{quote}\small -\begin{verbatim} -pandoc mydoc.md -o mydoc.tex -s -V documentclass=bxjsarticle -V classoption=pandoc +\paragraph{(u)\pLaTeX の使用} + +Pandocで{\LaTeX}経由でPDFを出力する場合、 +エンジン指定(|--pdf-engine|)は +|pdflatex|、|xelatex|、|lualatex|のみがサポートされる。 +これに対して、Pandocの出力を「単体の{\LaTeX}文書」(|-s|指定)と +するとPandocが{\LaTeX}を実行しなくなり、 +この場合は{\LaTeX}エンジンに(u){\pLaTeX}を使用することができる。 +出力された{\LaTeX}文書は通常の方法でPDFやPostScript形式に +変換できる。 + +\begin{quote}\small\begin{verbatim} +pandoc mydoc.md -o mydoc.tex -s -V documentclass=bxjsreport -V classoption=pandoc ... uplatex mydoc uplatex mydoc dvipdfmx mydoc -\end{verbatim} - \end{quote} -\end{itemize} +\end{verbatim}\end{quote} %=========================================================== \section{クラスオプション} @@ -791,6 +844,8 @@ JSクラスには無くBXJSクラスで追加されたクラスオプション パラメタを自分で設定しても構わない。 ただし\Pkg{geometry}の読込が強く推奨される。 (\Pkg{geometry}非読込時の動作テストはほとんど行っていない。)} + \Note 「自動読込の際に指定するはずのオプション列」 + が |\jsGeometryOptions| に保存されている。 \end{itemize} \Note 「どうしても\Pkg{geometry}パッケージを自分で読み込みたい」 という人のための設定。 @@ -1339,6 +1394,7 @@ minimal和文ドライバには有効な和文ドライバパラメタは存在 %------------------- \subsection{pandoc和文ドライバの場合} +\label{ssec:pandoc-param} standard用のものに加えて、以下の和文ドライバパラメタが存在する。 @@ -1533,11 +1589,16 @@ vscale=0.944, vmarginratio=1:1 \begin{itemize} \item |\strong{|\Meta{テキスト}|}|\Means - 引数のテキストに、重要性を表す装飾を施す。 - 具体的には\,|\bfseries|(太字)が適用される。 + 引数のテキストに、重要性を表す書体変更を適用する。 \item |strongenv|環境\Means |\strong|の環境版。 - \Note 以上の2つの機能は\Pkg{fontspec}パッケージとの互換を +\item |\strongfontdeclare{|\Meta{書体変更命令列}|,...}|\Means + |\strong| で実際に適用される書体変更(宣言型命令の列)を指定する。 + コンマ区切りで複数の値が指定可能で、 + $n$重の |\strong| が適用されたテキストに対して + $n$番目の書体変更命令列が実行される。 + \Note 既定値は“|\bfseries|”であり、|\strong| は太字で出力される。 + \Note 以上の3つの機能は\Pkg{fontspec}パッケージとの互換を 目的としたものである。 |strong-cmd=false| 指定時はこれらの機能は無効になる。 ただし、\Pkg{fontspec}が読み込まれている場合は、 @@ -1692,6 +1753,40 @@ standard和文ドライバ(およびそれを継承するドライバ)では \makebox[#1\zw][s]{#2}}} \end{verbatim}\end{quote} +\subsubsection{pandoc和文ドライバで追加される命令} + +Pandocモードにおける出力の調整の対象となる要素について、 +以下の命令を再定義することで +調整方法をカスタマイズできる。 +例えば +\begin{quote}\small +|\renewcommand{\pandocZWSpace}{\jachar{|\JSS|}}| +\end{quote} +(ここで {\JSS} は全角空白文字)と再定義することで、 +「全角空白文字の入力を空きに変換する」 +調整を実質的に無効化できる。 + +\begin{itemize} +\item |\pandocZWSpace|\Means + 全角空白文字が入力されたときに実際に実行される命令。 + \Note |\pandocZWSpace| を再定義する際に、その定義内容の中で + 全角空白文字を直接使うと無限ループになってしまうため、 + 代わりに |\jachar{|\JSS|}| と書く必要がある。 + +\item |\pandocLdots|\Means + 非数式で |\ldots| を実行したときに実際に実行される命令。 + \Note 一般にPandocの{\LaTeX}出力においては + 入力文書中の“…”が |\ldots| 命令に変換される。 + \Note |\pandocLdots| を再定義する際に、その定義内容の中で |\ldots| を + 使うと無限ループになってしまうため、 + 代わりに |\textellipsis| 等を適宜使う必要がある。 + ただし特別な規約として + \begin{quote}\small + |\renewcommand{\pandocLdots}{\ldots}| + \end{quote} + と再定義した場合は、|\ldots| に対する調整自体が無効になる。 +\end{itemize} + %=========================================================== \section{数式中の和文出力について} \label{sec:Ja-math-fonts} @@ -1828,7 +1923,7 @@ Class bxjsarticle Warning: Some old font commands were used in text: \end{itemize} %------------------- -\subsection{将来的な二文字フォント命令の扱い} +\subsection{将来の二文字フォント命令の扱い} \jemph{現在の版で存在する}和文ドライバを使用する場合には、 将来にわたって以下の方針が維持される。 @@ -1837,7 +1932,7 @@ Class bxjsarticle Warning: Some old font commands were used in text: \item 二文字フォント命令に対する警告の様式は、 今後変更される可能性がある。 \item しかし、将来に二文字フォント命令のサポートが廃止されることはない。 -\item |oldfontcommands| オプションよおび |\allowoldfontcommands| 命令 +\item |oldfontcommands| オプションおよび |\allowoldfontcommands| 命令 は継続して提供され、 これらの機能を用いた場合は、二文字フォント命令に関する警告が 端末に表示されることは一切無い。 diff --git a/Master/texmf-dist/doc/latex/bxjscls/bxjscls.pdf b/Master/texmf-dist/doc/latex/bxjscls/bxjscls.pdf index 1c6cc80fba2..a85d94c64d6 100644 Binary files a/Master/texmf-dist/doc/latex/bxjscls/bxjscls.pdf and b/Master/texmf-dist/doc/latex/bxjscls/bxjscls.pdf differ diff --git a/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx b/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx index 92ea5eaa127..233746e4501 100644 --- a/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx +++ b/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx @@ -33,7 +33,7 @@ % Copyright 1999-2016 Haruhiko Okumura % Copyright 2016-2020 Japanese TeX Development Community % -% Copyright 2013-2021 Takayuki YATO (aka. "ZR") +% Copyright 2013-2022 Takayuki YATO (aka. "ZR") % % \fi % \CheckSum{0} @@ -56,7 +56,8 @@ %<*driver> \ProvidesFile{bxjscls.dtx} % - [2021/05/18 v2.5a BXJS document classes] + [2022/03/20 v2.6 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] @@ -481,6 +482,15 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\ifbxjs@explIII} +% 〔スイッチ〕 +% expl3がカーネルに組み込まれているか。 +% \begin{macrocode} +\newif\ifbxjs@explIII +\@ifl@t@r\fmtversion{2020/02/02}{\bxjs@explIIItrue}{} +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\ifbxjs@TUenc} % 〔スイッチ〕 % {\LaTeX}の既定のフォントエンコーディングがTUであるか。 @@ -509,6 +519,20 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\bxjs@CGHN} +% カーネルの2021/11/15版の改修で“要素の順が変わった”フック名について、 +% 新仕様の名前を“使用中の{\LaTeX}において正しい名前”に変換する。 +% \Note 例えば、“|package/after/PKG|”は新仕様で +% “|package/PKG/after|”に変更された。 +% \begin{macrocode} +\@ifl@t@r\fmtversion{2021/11/15}{% + \def\bxjs@CGHN#1{#1}% +}{%else + \def\bxjs@CGHN#1{\bxjs@CGHN@a#1//}% + \def\bxjs@CGHN@a#1/#2/#3//{#1/#3/#2}} +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\bxjs@cond} % |\bxjs@cond\ifXXX|……|\fi{|\Meta{真}|}{|\Meta{偽}|}|\par % {\TeX}のif-文(|\ifXXX|……\Meta{真}|\else|\Meta{偽}|\fi|)を @@ -555,6 +579,37 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\bxjs@trim} +% |\bxjs@trim\CS| で、|\CS| の内容のトークン列を先頭と末尾の +% 空白トークン群を除去したものに置き換える。 +% \begin{macrocode} +\def\bxjs@trim#1{\expandafter\bxjs@trim@a#1\@nil#1} +\def\bxjs@trim@a{\futurelet\bxjs@tmpb\bxjs@trim@b} +\def\bxjs@trim@b{\bxjs@cond\ifx\bxjs@tmpb\@sptoken\fi + {\bxjs@trim@c\bxjs@trim@a}{\bxjs@trim@d}} +\def\bxjs@trim@c#1 {#1} +\def\bxjs@trim@d#1\@nil{\bxjs@trim@e#1\@nil: \@nil\@nnil} +\def\bxjs@trim@e#1 \@nil#2\@nnil{\bxjs@cond\ifx\@nnil#2\@nnil\fi + {\bxjs@trim@f#1\@nnil}{\bxjs@trim@e#1\@nil: \@nil\@nnil}} +\def\bxjs@trim@f#1\@nil#2\@nnil#3{\def#3{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bxjs@set@array@from@clist} +% |\bxjs@set@array@from@clist{|\Meta{配列名接頭辞}|}{|% +% \Meta{コンマ区切りリスト}|}|\Means +% コンマ区切りの値のリストから擬似配列を生成する。 +% \Note 各要素について、先頭・末尾の空白トークン群は除去される。 +% \begin{macrocode} +\def\bxjs@set@array@from@clist#1#2{% + \@tempcnta\z@ + \@for\bxjs@tmpa:=\@empty#2\do{% + \bxjs@trim\bxjs@tmpa \bxjs@cslet{#1/\the\@tempcnta}\bxjs@tmpa + \advance\@tempcnta\@ne} + \bxjs@cslet{#1/\the\@tempcnta}\relax} +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\bxjs@gset@tempcnta} % |calc| の整数式を用いて |\@tempcnta| の値を設定する。 % \begin{macrocode} @@ -2243,10 +2298,17 @@ % \Note ただし |ja| 非指定の場合はスキップする % (0.3 版との互換性のため)。 % \begin{macrocode} - \ifx\bxjs@driver@opt\@undefined \ifx\bxjs@jadriver@opt\@undefined\else - \ClassWarningNoLine\bxjs@clsname - {No driver option is given} - \fi\fi + \ifx\bxjs@driver@opt\@undefined + \if \ifbxjs@explIII T\else\ifx\bxjs@jadriver@opt\@undefined F\else T\fi\fi T% + \ClassWarningNoLine\bxjs@clsname + {A driver option is MISSING!!\MessageBreak + You should properly specify one of the valid\MessageBreak + driver options according to the DVI driver\MessageBreak + that is in use:\MessageBreak + \@spaces dvips, dvipdfmx, dviout, xdvi,\MessageBreak + \@spaces nodvidriver} + \fi + \fi % \end{macrocode} % |dvi=XXX| が指定されていた場合は、 % |XXX| が指定された時と同じ動作にする。 @@ -9221,10 +9283,18 @@ % 既定の設定は |\bfseries|(太字)である。 % \Note |\strongfontdeclare| は試験的機能とする。 % \begin{macrocode} - \@ifdefinable{\strongfontdeclare}{\bxjs@protected\def\strongfontdeclare#1{% - \bxjs@strong@font@declare@a#1,\@nil}}% - \def\bxjs@strong@font@declare@a#1,#2\@nil{\def\bxjs@strong@font{#1}}% - \def\bxjs@strong@font{\bfseries}% + \newcommand*{\strongfontdeclare}{\bxjs@strongfontdeclare}% + \newcount\bxjs@strong@level + \bxjs@protected\def\bxjs@strongfontdeclare#1{% + \bxjs@set@array@from@clist{bxjs@strong}{#1}% + \bxjs@strong@level\z@}% + \bxjs@strongfontdeclare{\bfseries}% + \def\bxjs@strong@font{% + \bxjs@csletcs{bxjs@tmpa}{bxjs@strong/\the\bxjs@strong@level}% + \ifx\bxjs@tmpa\relax + \advance\bxjs@strong@level\m@ne \bxjs@strong@font + \else \advance\bxjs@strong@level\@ne \bxjs@tmpa + \fi}% \fi\fi }\fi % \end{macrocode} @@ -9822,7 +9892,7 @@ % \begin{macrocode} \ifjsWithupTeX\ifbxjs@old@hook@system\else \IfFileExists{pxjahyper-uni.def}{% - \AddToHook{package/after/hyperref}{\input{pxjahyper-uni.def}} + \AddToHook{\bxjs@CGHN{package/hyperref/after}}{\input{pxjahyper-uni.def}} }{} \fi\fi \fi @@ -10557,6 +10627,24 @@ \fi % \end{macrocode} % +% \begin{macro}{\ifbxjs@bxghost@available} +% 〔スイッチ〕|bxghost| パッケージが利用できるか。 +% \begin{macrocode} +\newif\ifbxjs@bxghost@available +\ifjsWitheTeX + \RequirePackage{pdftexcmds}[2009/09/22]% v0.5 + \IfFileExists{bxghost.sty}{% + \bxjs@bxghost@availabletrue + \@namedef{bxjs@bgbv/79E70A0991967E27981832C84DB5DF99}{1}%v0.2.0 + \ifx\pdf@filemdfivesum\@undefined\else + \expandafter\ifx\csname bxjs@bgbv/\pdf@filemdfivesum{bxghost.sty}% + \endcsname\relax\else \bxjs@bxghost@availablefalse \fi + \fi + }{} +\fi +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\bxjs@endpreamble@hook} % |etoolbox| の |\AtEndPreamble| で実行されるBXJSクラス用のフック。 % \Note {\eTeX}以外では無効になる。 @@ -10685,8 +10773,9 @@ % この時に何らかのコードを実行させることができる。 % % \begin{macro}{\bxjs@set@dupload@proc} -% |\bxjs@set@dupload@proc{|\Meta{ファイル名}|}{|\Meta{定義本体}|}| -% 特定のファイルの読込が |\@filewithoptions| で指示されて、しかも +% |\bxjs@set@dupload@proc{|\Meta{ファイル名}|}{|\Meta{定義本体}|}|\Means +% 指定の名前の特定のファイルの読込が |\@filewithoptions| で +% 指示されて、しかも % そのファイルが読込済である場合に、オプション重複検査をスキップして、 % 代わりに\Meta{定義本体}のコードを実行する。 % このコード中で |#1| は渡されたオプション列のテキストに置換される。 @@ -10698,7 +10787,7 @@ \def\bxjs@set@dupload@proc@a#1{% \@onlypreamble#1\def#1##1} \def\bxjs@unset@dupload@proc#1{% - \expandafter\let\csname bxjs@dlp/#1\endcsname\@undefined} + \bxjs@cslet{bxjs@dlp/#1}\@undefined} % \end{macrocode} % \end{macro} % @@ -10739,6 +10828,9 @@ % Pandocはこれに対応していないため % 不完全なBabelやPolyglossiaの設定を出力してしまう。 % これを防ぐための対策を行う。 +% \Note Pandoc 2.12版で |lang=ja| 指定に対応し、 +% 正しく{\LaTeX}側の言語名 |japanese| に変換されるようになった。 +% しかし、日本語指定の場合は相変わらず調整処理が必要である。 % % \begin{macro}{\bxjs@polyglossia@options} % Polyglossiaのオプション列のテキスト。 @@ -10757,7 +10849,7 @@ % \end{macro} % % \paragraph{Polyglossiaについて} -% つまり{\XeTeX}・{Lua\TeX}の場合。 +% つまり{\XeTeX}および{Lua\TeX}(古いPandocで)の場合。 % \Note この場合 |etoolbox| が使用可能になっている。 % \begin{macrocode} \ifnum0\if x\jsEngine1\fi\if l\jsEngine1\fi>0 @@ -10770,7 +10862,7 @@ \bxjs@set@dupload@proc{polyglossia.sty}{% \bxjs@unset@dupload@proc{polyglossia.sty}% \ClassWarning\bxjs@clsname - {Package polyglossia is required}% + {Package polyglossia is requested}% \def\bxjs@polyglossia@options{#1}% % \end{macrocode} % @@ -10783,33 +10875,27 @@ % \end{macrocode} % もし、言語名が空の |\setmainlanguage{}| が実行された場合は、 % |lang=ja| が指定されたと見なす。 -% \begin{macrocode} - \ifblank{##2}{% - \ClassWarning\bxjs@clsname - {Main language is invalid, thus the fallback\MessageBreak - definitions will be employed}% - \bxjs@pandoc@polyglossia@ja -% \end{macrocode} % 言語名が |japanese| だった場合も同様。 % \begin{macrocode} - }{\ifstrequal{##2}{japanese}{% + \ifboolexpr{test{\ifblank{##2}}or test{\ifstrequal{##2}{japanese}}}{% \ClassWarning\bxjs@clsname - {Main language is japanese, thus the fallback\MessageBreak + {Main language is 'japanese', thus fallback\MessageBreak definitions will be employed}% \bxjs@pandoc@polyglossia@ja % \end{macrocode} -% 言語名が非空ならば、本来の |polyglossia| の処理を実行する。 +% それ以外は、改めて |polyglossia| を読み込んで、 +% 本来の処理を実行する。 % \begin{macrocode} }{%else \ClassWarning\bxjs@clsname - {Main language is valid (##2),\MessageBreak + {Main language is '##2',\MessageBreak thus polyglossia will be loaded}% \csundef{ver@polyglossia.sty}% \edef\bxjs@next{% \noexpand\RequirePackage[\bxjs@polyglossia@options]{polyglossia}[]% }\bxjs@next \setmainlanguage[##1]{##2}% - }}}} + }}} % \end{macrocode} % % プレアンブルで |polyglossia| の読込が指示されなかった場合、 @@ -10866,7 +10952,7 @@ \bxjs@set@dupload@proc{babel.sty}{% \bxjs@unset@dupload@proc{babel.sty}% \ClassWarning\bxjs@clsname - {Package babel is required}% + {Package babel is requested}% % \end{macrocode} % パッケージオプションに言語名が空の |main=| があるかを調べる。 % ある場合は |lang=ja| 対策を実行する。 @@ -10875,23 +10961,25 @@ % \begin{macrocode} \@tempswafalse \let\bxjs@babel@options\@empty \def\bxjs@tmpb{main=}% + \def\bxjs@next{main=japanese}% \@for\bxjs@tmpa:=#1\do{% \ifx\bxjs@tmpa\bxjs@tmpb \@tempswatrue + \else\ifx\bxjs@tmpa\bxjs@next \@tempswatrue \else \edef\bxjs@babel@options{\bxjs@babel@options,\bxjs@tmpa}% - \fi}% + \fi\fi}% \if@tempswa \ClassWarning\bxjs@clsname - {Main language is invalid, so fallback\MessageBreak + {Main language is 'japanese', thus fallback\MessageBreak definitions will be employed}% - \bxjs@pandoc@polyglossia@ja + \bxjs@pandoc@babel@ja % \end{macrocode} % ない場合は、本来の |babel| の処理を実行する。 % \begin{macrocode} \else \ClassWarning\bxjs@clsname - {Main language is valid,\MessageBreak + {Main language is not 'japanese',\MessageBreak thus babel will be loaded}% - \expandafter\let\csname ver@babel.sty\endcsname\@undefined + \bxjs@cslet{ver@babel.sty}\@undefined \RequirePackage[#1]{babel}[]% \fi} % \end{macrocode} @@ -10901,7 +10989,7 @@ % \begin{macrocode} \g@addto@macro\bxjs@endpreamble@hook{% \ifx\bxjs@babel@options\relax - \expandafter\let\csname ver@babel.sty\endcsname\@undefined + \bxjs@cslet{ver@babel.sty}\@undefined \fi} % \end{macrocode} % @@ -10910,7 +10998,7 @@ % \begin{macrocode} \@onlypreamble\bxjs@pandoc@babel@ja \def\bxjs@pandoc@babel@ja{% - \expandafter\let\csname ver@babel.sty\endcsname\@undefined + \bxjs@cslet{ver@babel.sty}\@undefined \edef\bxjs@next{% \noexpand\RequirePackage[\bxjs@babel@options,english]{babel}[]% }\bxjs@next @@ -10996,6 +11084,7 @@ \parindent=\the\parindent\relax \parskip=\the\parskip\relax}} \fi +% \end{macrocode} % % \paragraph{secnumdepthについて} % |secnumdepth| の値を決めるのはnumbersections変数 @@ -11003,13 +11092,18 @@ % やsecnumdepth変数であるが、何れにしても |secnumdepth| % の値は書き換えられる。 % そのため、|secnumdepth| を復帰させる。 +% \begin{macrocode} \ifbxjs@jp@or@secnumdepth\else \bxjs@info@or@ban{secnumdepth} \eappto\bxjs@endpreamble@hook{% \c@secnumdepth=\the\c@secnumdepth\relax} \fi +% \end{macrocode} % % \paragraph{block-headingについて} +% |\paragraph|、|\subparagraph| を別行見出しに変える処理を抑止する。 +% \Note 2.7.1版以前では別行見出し変更が既定で有効であった。 +% \begin{macrocode} \ifbxjs@jp@or@block@heading\else \let\bxjs@frozen@paragraph\paragraph \let\bxjs@frozen@subparagraph\subparagraph @@ -11019,6 +11113,10 @@ \let\paragraph\bxjs@frozen@paragraph \let\subparagraph\bxjs@frozen@subparagraph} \fi +% \end{macrocode} +% +% 以上。 +% \begin{macrocode} \fi % \end{macrocode} % @@ -11065,15 +11163,27 @@ %^^A---------------- % \subsection{全角空白文字} % +% {\LaTeX}でない入力では、全角空きを入れるために全角空白文字 +% (U+3000)が使われる可能性があるので、 +% 全角空白文字を和文文字でなく空きとして扱うようにしておく。 +% \Note {(u)\pLaTeX}では対応できないので対象外。 +% +% \begin{macro}{\pandocZWSpace} +% 全角空白文字の入力で実行されるコード。 +% \begin{macrocode} +\def\pandocZWSpace{\zwspace} +% \end{macrocode} +% \end{macro} +% 全角空白文字の入力で |\pandocZWSpace| が実行されるようにする。 % \begin{macrocode} \ifnum0\if x\jsEngine1\fi\if l\jsEngine1\fi>\z@ \catcode"3000=\active \begingroup \catcode`\!=7 - \protected\gdef!!!!3000{\zwspace} + \protected\gdef!!!!3000{\pandocZWSpace} \endgroup \else\ifx\DeclareUnicodeCharacter\@undefined\else \DeclareUnicodeCharacter{3000}{\bxjs@zsp@char} - \bxjs@protected\def\bxjs@zsp@char{\zwspace} + \bxjs@protected\def\bxjs@zsp@char{\pandocZWSpace} \fi\fi % \end{macrocode} % @@ -11099,13 +11209,13 @@ % \begin{macrocode} \ifbxjs@jp@fix@strong\ifbxjs@jp@strong@cmd \let\orgtextbf\textbf - \DeclareRobustCommand\bxjstextbf[1]{% + \DeclareRobustCommand\pandocTextbf[1]{% \begingroup \let\textbf\orgtextbf \strong{#1}% \endgroup}% \g@addto@macro\bxjs@begin@document@hook{% - \let\textbf\bxjstextbf} + \let\textbf\pandocTextbf} \fi\fi % \end{macrocode} % @@ -11124,8 +11234,18 @@ % % インラインコード(Code)要素に対する{\LaTeX}出力は |\texttt| となる。 % |\texttt| の両端に欧文ゴーストが入るようにする。 +% さらに |\verb| の外側にも欧文ゴーストが入るようにする。 +% % \begin{macrocode} \ifbxjs@jp@fix@code +% \end{macrocode} +% |bxghost| パッケージが利用できる場合はその機能を利用する。 +% 使えない場合は自前実装を用いる。 +% \begin{macrocode} + \ifbxjs@bxghost@available + \RequirePackage[verb]{bxghost}[2020/01/31]% v0.3.0 + \let\bxjs@eghostguarded\eghostguarded + \else \chardef\bxjs@eghost@c=23 \ifx j\jsEngine \xspcode\bxjs@eghost@c=3 \else\ifx l\jsEngine \ltjsetparameter{alxspmode={\bxjs@eghost@c,3}} @@ -11135,24 +11255,29 @@ \ifx\bxjs@eghost@c\@undefined\else \font\bxjs@eghost@f=ec-lmr10 at 1.23456pt \def\bxjs@pan@eghost{\bgroup\bxjs@eghost@f\bxjs@eghost@c\egroup} + \def\bxjs@eghostguarded#1{% + \bxjs@pan@eghost\null#1\null\bxjs@pan@eghost} + \fi + \fi + \ifx\bxjs@eghostguarded\@undefined\else \let\orgtexttt\texttt - \DeclareRobustCommand\bxjstexttt[1]{% + \DeclareRobustCommand\pandocTexttt[1]{% \ifmmode \nfss@text{\ttfamily #1}% \else \ifvmode \leavevmode \fi - \bxjs@pan@eghost\null - \begingroup \ttfamily #1\endgroup - \null\bxjs@pan@eghost + \bxjs@eghostguarded{\begingroup\ttfamily#1\endgroup}% \fi} \g@addto@macro\bxjs@begin@document@hook{% - \let\texttt\bxjstexttt} + \let\texttt\pandocTexttt} % \end{macrocode} -% さらに |\verb| の外側にも欧文ゴーストが入るようにする。 -% \Note |bxjaghost| の実装を参考にした。 +% |bxghost| を使わない場合の |\verb| の処理。 +% \Note |bxghost| の実装を参考にした。 % \begin{macrocode} + \ifbxjs@bxghost@available\else \expandafter\def\expandafter\verb\expandafter{% \expandafter\bxjs@pan@eghost\verb} \g@addto@macro\verb@egroup{\bxjs@pan@eghost} + \fi \fi \fi % \end{macrocode} @@ -12024,6 +12149,24 @@ FE70,FFF0,% % \end{macrocode} % \end{macro} % +% \begin{macro}{\bxjsp@begin@document@hook} +% 文書本体開始時フック。 +% \begin{macrocode} +\@onlypreamble\bxjsp@begin@document@hook +\let\bxjsp@begin@document@hook\@empty +\AtBeginDocument{\bxjsp@begin@document@hook} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ifbxjsp@babel@used} +% 〔スイッチ〕Babelが読み込まれたか。 +% \begin{macrocode} +\newif\ifbxjsp@babel@used +\g@addto@macro\bxjsp@begin@document@hook{% + \@ifpackageloaded{babel}{\bxjsp@babel@usedtrue}{}} +% \end{macrocode} +% \end{macro} +% %^^A---------------- %\subsection{パッケージオプション} % @@ -12151,20 +12294,36 @@ FE70,FFF0,% % 1.9f版で非数式の |\ldots| を全て |…| に戻す動作に変更した。 % \begin{macrocode} \DeclareRobustCommand{\pandocLdots}{% - \relax\ifmmode \expandafter\bxjsp@org@ldots - \else \expandafter\bxjsp@ja@ellipsis - \fi} + \let\bxjsp@do\bxjsp@ja@ellipsis + \ifmmode \let\bxjsp@do\bxjsp@org@ldots + \else\ifbxjsp@babel@used + \expandafter\ifx\csname bxjsp@ld/\languagename\endcsname\relax + \let\bxjsp@do\bxjsp@org@ldots \fi + \fi\fi \bxjsp@do} +\@namedef{bxjsp@ld/japanese}{1} \def\bxjsp@ja@ellipsis{…} \let\bxjsp@org@ldots\ldots % \end{macrocode} % \end{macro} % -% |\ldots| の実装を置き換える。 -% \Note B|english| オプション指定時は置き換えない。 +% |\ldots| の実装を |\pandocLdots| に置き換える。 % \begin{macrocode} -\AtBeginDocument{% +\g@addto@macro\bxjsp@begin@document@hook{% \let\bxjsp@org@ldots\ldots - \ifbxjsp@english\else \let\ldots\pandocLdots \fi} +% \end{macrocode} +% もしここで |\newcommand\pandocLdots{\ldots}| という定義である場合は +% 置き換えない。 +% \begin{macrocode} + \long\def\bxjsp@tmpa{\ldots}% + \ifx\pandocLdots\bxjsp@tmpa\else +% \end{macrocode} +% |english| オプションが指定されていてかつBabelが読み込まれていない場合も +% 置き換えない。 +% \begin{macrocode} + \ifnum0\ifbxjsp@english\ifbxjsp@babel@used\else1\fi\fi=0 + \let\ldots\pandocLdots + \fi + \fi} % \end{macrocode} % % |\ldots| の直後の文字が非英字の場合、Pandocは「|\ldots。|」の diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls b/Master/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls index 7032930c8fd..bfc345c0b3c 100644 --- a/Master/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls +++ b/Master/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls @@ -22,7 +22,7 @@ %% in the same archive or directory.) \NeedsTeXFormat{LaTeX2e} \ProvidesClass{bxjsarticle} - [2021/05/18 v2.5a BXJS document classes] + [2022/03/20 v2.6 BXJS document classes] %% このファイルは日本語文字を含みます. \def\bxjs@clsname{bxjsarticle} \newif\ifjsc@needsp@tch @@ -87,6 +87,8 @@ \let\PackageWarningNoLine\bxjs@tmpa \@nameuse{RevokeOldLuaTeXBehavior} \let\ifjsInPdfMode\ifpdf +\newif\ifbxjs@explIII +\@ifl@t@r\fmtversion{2020/02/02}{\bxjs@explIIItrue}{} \newif\ifbxjs@TUenc \def\bxjs@tmpa{TU}\edef\bxjs@tmpb{\f@encoding} \ifx\bxjs@tmpa\bxjs@tmpb @@ -94,6 +96,11 @@ \fi \newif\ifbxjs@old@hook@system \@ifl@t@r\fmtversion{2020/10/01}{}{\bxjs@old@hook@systemtrue} +\@ifl@t@r\fmtversion{2021/11/15}{% + \def\bxjs@CGHN#1{#1}% +}{%else + \def\bxjs@CGHN#1{\bxjs@CGHN@a#1//}% + \def\bxjs@CGHN@a#1/#2/#3//{#1/#3/#2}} \@gobbletwo\if\if \def\bxjs@cond#1\fi{% #1\expandafter\@firstoftwo \else\expandafter\@secondoftwo @@ -105,6 +112,21 @@ \def\bxjs@catopt#1#2{% #1\if\relax#1\relax\else\if\relax#2\relax\else,\fi\fi#2} \def\bxjs@ifplus#1{\@ifnextchar+{\@firstoftwo{#1}}} +\def\bxjs@trim#1{\expandafter\bxjs@trim@a#1\@nil#1} +\def\bxjs@trim@a{\futurelet\bxjs@tmpb\bxjs@trim@b} +\def\bxjs@trim@b{\bxjs@cond\ifx\bxjs@tmpb\@sptoken\fi + {\bxjs@trim@c\bxjs@trim@a}{\bxjs@trim@d}} +\def\bxjs@trim@c#1 {#1} +\def\bxjs@trim@d#1\@nil{\bxjs@trim@e#1\@nil: \@nil\@nnil} +\def\bxjs@trim@e#1 \@nil#2\@nnil{\bxjs@cond\ifx\@nnil#2\@nnil\fi + {\bxjs@trim@f#1\@nnil}{\bxjs@trim@e#1\@nil: \@nil\@nnil}} +\def\bxjs@trim@f#1\@nil#2\@nnil#3{\def#3{#1}} +\def\bxjs@set@array@from@clist#1#2{% + \@tempcnta\z@ + \@for\bxjs@tmpa:=\@empty#2\do{% + \bxjs@trim\bxjs@tmpa \bxjs@cslet{#1/\the\@tempcnta}\bxjs@tmpa + \advance\@tempcnta\@ne} + \bxjs@cslet{#1/\the\@tempcnta}\relax} \let\c@bxjs@tempcnta\@tempcnta \def\bxjs@gset@tempcnta{\setcounter{bxjs@tempcnta}} \def\jsSetQHLength#1#2{% @@ -730,10 +752,17 @@ \else \@tempswatrue \fi\fi\fi \if@tempswa - \ifx\bxjs@driver@opt\@undefined \ifx\bxjs@jadriver@opt\@undefined\else - \ClassWarningNoLine\bxjs@clsname - {No driver option is given} - \fi\fi + \ifx\bxjs@driver@opt\@undefined + \if \ifbxjs@explIII T\else\ifx\bxjs@jadriver@opt\@undefined F\else T\fi\fi T% + \ClassWarningNoLine\bxjs@clsname + {A driver option is MISSING!!\MessageBreak + You should properly specify one of the valid\MessageBreak + driver options according to the DVI driver\MessageBreak + that is in use:\MessageBreak + \@spaces dvips, dvipdfmx, dviout, xdvi,\MessageBreak + \@spaces nodvidriver} + \fi + \fi \ifbxjs@dvi@opt \edef\bxjs@next{% \let\noexpand\bxjs@driver@given diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls b/Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls index 62d6aec7f98..f320f016390 100644 --- a/Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls +++ b/Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls @@ -22,7 +22,7 @@ %% in the same archive or directory.) \NeedsTeXFormat{LaTeX2e} \ProvidesClass{bxjsbook} - [2021/05/18 v2.5a BXJS document classes] + [2022/03/20 v2.6 BXJS document classes] %% このファイルは日本語文字を含みます. \def\bxjs@clsname{bxjsbook} \newif\ifjsc@needsp@tch @@ -87,6 +87,8 @@ \let\PackageWarningNoLine\bxjs@tmpa \@nameuse{RevokeOldLuaTeXBehavior} \let\ifjsInPdfMode\ifpdf +\newif\ifbxjs@explIII +\@ifl@t@r\fmtversion{2020/02/02}{\bxjs@explIIItrue}{} \newif\ifbxjs@TUenc \def\bxjs@tmpa{TU}\edef\bxjs@tmpb{\f@encoding} \ifx\bxjs@tmpa\bxjs@tmpb @@ -94,6 +96,11 @@ \fi \newif\ifbxjs@old@hook@system \@ifl@t@r\fmtversion{2020/10/01}{}{\bxjs@old@hook@systemtrue} +\@ifl@t@r\fmtversion{2021/11/15}{% + \def\bxjs@CGHN#1{#1}% +}{%else + \def\bxjs@CGHN#1{\bxjs@CGHN@a#1//}% + \def\bxjs@CGHN@a#1/#2/#3//{#1/#3/#2}} \@gobbletwo\if\if \def\bxjs@cond#1\fi{% #1\expandafter\@firstoftwo \else\expandafter\@secondoftwo @@ -105,6 +112,21 @@ \def\bxjs@catopt#1#2{% #1\if\relax#1\relax\else\if\relax#2\relax\else,\fi\fi#2} \def\bxjs@ifplus#1{\@ifnextchar+{\@firstoftwo{#1}}} +\def\bxjs@trim#1{\expandafter\bxjs@trim@a#1\@nil#1} +\def\bxjs@trim@a{\futurelet\bxjs@tmpb\bxjs@trim@b} +\def\bxjs@trim@b{\bxjs@cond\ifx\bxjs@tmpb\@sptoken\fi + {\bxjs@trim@c\bxjs@trim@a}{\bxjs@trim@d}} +\def\bxjs@trim@c#1 {#1} +\def\bxjs@trim@d#1\@nil{\bxjs@trim@e#1\@nil: \@nil\@nnil} +\def\bxjs@trim@e#1 \@nil#2\@nnil{\bxjs@cond\ifx\@nnil#2\@nnil\fi + {\bxjs@trim@f#1\@nnil}{\bxjs@trim@e#1\@nil: \@nil\@nnil}} +\def\bxjs@trim@f#1\@nil#2\@nnil#3{\def#3{#1}} +\def\bxjs@set@array@from@clist#1#2{% + \@tempcnta\z@ + \@for\bxjs@tmpa:=\@empty#2\do{% + \bxjs@trim\bxjs@tmpa \bxjs@cslet{#1/\the\@tempcnta}\bxjs@tmpa + \advance\@tempcnta\@ne} + \bxjs@cslet{#1/\the\@tempcnta}\relax} \let\c@bxjs@tempcnta\@tempcnta \def\bxjs@gset@tempcnta{\setcounter{bxjs@tempcnta}} \def\jsSetQHLength#1#2{% @@ -739,10 +761,17 @@ \else \@tempswatrue \fi\fi\fi \if@tempswa - \ifx\bxjs@driver@opt\@undefined \ifx\bxjs@jadriver@opt\@undefined\else - \ClassWarningNoLine\bxjs@clsname - {No driver option is given} - \fi\fi + \ifx\bxjs@driver@opt\@undefined + \if \ifbxjs@explIII T\else\ifx\bxjs@jadriver@opt\@undefined F\else T\fi\fi T% + \ClassWarningNoLine\bxjs@clsname + {A driver option is MISSING!!\MessageBreak + You should properly specify one of the valid\MessageBreak + driver options according to the DVI driver\MessageBreak + that is in use:\MessageBreak + \@spaces dvips, dvipdfmx, dviout, xdvi,\MessageBreak + \@spaces nodvidriver} + \fi + \fi \ifbxjs@dvi@opt \edef\bxjs@next{% \let\noexpand\bxjs@driver@given diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty b/Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty index 5cf64e98d23..caf8065cae0 100644 --- a/Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty +++ b/Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty @@ -22,7 +22,7 @@ %% in the same archive or directory.) \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{bxjscjkcat} - [2021/05/18 v2.5a BXJS document classes] + [2022/03/20 v2.6 BXJS document classes] \def\bxjx@pkgname{bxjscjkcat} \newcount\bxjx@cnta \@onlypreamble\bxjx@tmpdo diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty b/Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty index a89c3a72729..d43fab9e3b9 100644 --- a/Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty +++ b/Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty @@ -22,7 +22,7 @@ %% in the same archive or directory.) \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{bxjscompat} - [2021/05/18 v2.5a BXJS document classes] + [2022/03/20 v2.6 BXJS document classes] \def\bxac@pkgname{bxjscompat} \let\bxac@engine=n \def\bxac@do#1#2{% diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjsja-minimal.def b/Master/texmf-dist/tex/latex/bxjscls/bxjsja-minimal.def index 1017aa84960..23b42ec2510 100644 --- a/Master/texmf-dist/tex/latex/bxjscls/bxjsja-minimal.def +++ b/Master/texmf-dist/tex/latex/bxjscls/bxjsja-minimal.def @@ -21,7 +21,7 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) \ProvidesFile{bxjsja-minimal.def} - [2021/05/18 v2.5a BXJS document classes] + [2022/03/20 v2.6 BXJS document classes] %% このファイルは日本語文字を含みます \def\DeclareJaTextFontCommand#1#2{% \DeclareRobustCommand#1[1]{% diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjsja-modern.def b/Master/texmf-dist/tex/latex/bxjscls/bxjsja-modern.def index a6c4f15f4e8..af5d120f4ea 100644 --- a/Master/texmf-dist/tex/latex/bxjscls/bxjsja-modern.def +++ b/Master/texmf-dist/tex/latex/bxjscls/bxjsja-modern.def @@ -21,7 +21,7 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) \ProvidesFile{bxjsja-modern.def} - [2021/05/18 v2.5a BXJS document classes] + [2022/03/20 v2.6 BXJS document classes] \input{bxjsja-standard.def} \ifnum0\if x\jsEngine1\fi\if l\jsEngine1\fi=\z@ \def\encodingdefault{T1}% diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjsja-pandoc.def b/Master/texmf-dist/tex/latex/bxjscls/bxjsja-pandoc.def index 8853a2d2eb7..551dfc43768 100644 --- a/Master/texmf-dist/tex/latex/bxjscls/bxjsja-pandoc.def +++ b/Master/texmf-dist/tex/latex/bxjscls/bxjsja-pandoc.def @@ -21,7 +21,7 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) \ProvidesFile{bxjsja-pandoc.def} - [2021/05/18 v2.5a BXJS document classes] + [2022/03/20 v2.6 BXJS document classes] \input{bxjsja-standard.def} \RequirePackage{bxjspandoc} \ifjsWitheTeX\else @@ -30,6 +30,18 @@ This engine does not support e-TeX extension!\MessageBreak Some feature might not work properly} \fi +\newif\ifbxjs@bxghost@available +\ifjsWitheTeX + \RequirePackage{pdftexcmds}[2009/09/22]% v0.5 + \IfFileExists{bxghost.sty}{% + \bxjs@bxghost@availabletrue + \@namedef{bxjs@bgbv/79E70A0991967E27981832C84DB5DF99}{1}%v0.2.0 + \ifx\pdf@filemdfivesum\@undefined\else + \expandafter\ifx\csname bxjs@bgbv/\pdf@filemdfivesum{bxghost.sty}% + \endcsname\relax\else \bxjs@bxghost@availablefalse \fi + \fi + }{} +\fi \@onlypreamble\bxjs@endpreamble@hook \let\bxjs@endpreamble@hook\@empty \RequirePackage{iftex}[2013/04/04]% v0.2 @@ -82,7 +94,7 @@ \def\bxjs@set@dupload@proc@a#1{% \@onlypreamble#1\def#1##1} \def\bxjs@unset@dupload@proc#1{% - \expandafter\let\csname bxjs@dlp/#1\endcsname\@undefined} + \bxjs@cslet{bxjs@dlp/#1}\@undefined} \@onlypreamble\bxjs@org@if@ptions \let\bxjs@org@if@ptions\@if@ptions \@onlypreamble\bxjs@org@reset@ptions @@ -115,29 +127,24 @@ \bxjs@set@dupload@proc{polyglossia.sty}{% \bxjs@unset@dupload@proc{polyglossia.sty}% \ClassWarning\bxjs@clsname - {Package polyglossia is required}% + {Package polyglossia is requested}% \def\bxjs@polyglossia@options{#1}% \newcommand*\setmainlanguage[2][]{% - \ifblank{##2}{% - \ClassWarning\bxjs@clsname - {Main language is invalid, thus the fallback\MessageBreak - definitions will be employed}% - \bxjs@pandoc@polyglossia@ja - }{\ifstrequal{##2}{japanese}{% + \ifboolexpr{test{\ifblank{##2}}or test{\ifstrequal{##2}{japanese}}}{% \ClassWarning\bxjs@clsname - {Main language is japanese, thus the fallback\MessageBreak + {Main language is 'japanese', thus fallback\MessageBreak definitions will be employed}% \bxjs@pandoc@polyglossia@ja }{%else \ClassWarning\bxjs@clsname - {Main language is valid (##2),\MessageBreak + {Main language is '##2',\MessageBreak thus polyglossia will be loaded}% \csundef{ver@polyglossia.sty}% \edef\bxjs@next{% \noexpand\RequirePackage[\bxjs@polyglossia@options]{polyglossia}[]% }\bxjs@next \setmainlanguage[##1]{##2}% - }}}} + }}} \g@addto@macro\bxjs@endpreamble@hook{% \ifx\bxjs@polyglossia@options\relax \csundef{ver@polyglossia.sty}% @@ -159,32 +166,34 @@ \bxjs@set@dupload@proc{babel.sty}{% \bxjs@unset@dupload@proc{babel.sty}% \ClassWarning\bxjs@clsname - {Package babel is required}% + {Package babel is requested}% \@tempswafalse \let\bxjs@babel@options\@empty \def\bxjs@tmpb{main=}% + \def\bxjs@next{main=japanese}% \@for\bxjs@tmpa:=#1\do{% \ifx\bxjs@tmpa\bxjs@tmpb \@tempswatrue + \else\ifx\bxjs@tmpa\bxjs@next \@tempswatrue \else \edef\bxjs@babel@options{\bxjs@babel@options,\bxjs@tmpa}% - \fi}% + \fi\fi}% \if@tempswa \ClassWarning\bxjs@clsname - {Main language is invalid, so fallback\MessageBreak + {Main language is 'japanese', thus fallback\MessageBreak definitions will be employed}% - \bxjs@pandoc@polyglossia@ja + \bxjs@pandoc@babel@ja \else \ClassWarning\bxjs@clsname - {Main language is valid,\MessageBreak + {Main language is not 'japanese',\MessageBreak thus babel will be loaded}% - \expandafter\let\csname ver@babel.sty\endcsname\@undefined + \bxjs@cslet{ver@babel.sty}\@undefined \RequirePackage[#1]{babel}[]% \fi} \g@addto@macro\bxjs@endpreamble@hook{% \ifx\bxjs@babel@options\relax - \expandafter\let\csname ver@babel.sty\endcsname\@undefined + \bxjs@cslet{ver@babel.sty}\@undefined \fi} \@onlypreamble\bxjs@pandoc@babel@ja \def\bxjs@pandoc@babel@ja{% - \expandafter\let\csname ver@babel.sty\endcsname\@undefined + \bxjs@cslet{ver@babel.sty}\@undefined \edef\bxjs@next{% \noexpand\RequirePackage[\bxjs@babel@options,english]{babel}[]% }\bxjs@next @@ -244,14 +253,15 @@ \if@tempswa\ifx\jsParagraphMark\bxjs@org@paragraph@mark \let\jsParagraphMark\@empty \fi\fi} +\def\pandocZWSpace{\zwspace} \ifnum0\if x\jsEngine1\fi\if l\jsEngine1\fi>\z@ \catcode"3000=\active \begingroup \catcode`\!=7 - \protected\gdef!!!!3000{\zwspace} + \protected\gdef!!!!3000{\pandocZWSpace} \endgroup \else\ifx\DeclareUnicodeCharacter\@undefined\else \DeclareUnicodeCharacter{3000}{\bxjs@zsp@char} - \bxjs@protected\def\bxjs@zsp@char{\zwspace} + \bxjs@protected\def\bxjs@zsp@char{\pandocZWSpace} \fi\fi \if j\jsEngine \bxjs@fix@hyperref@unicode{false} @@ -260,13 +270,13 @@ \fi \ifbxjs@jp@fix@strong\ifbxjs@jp@strong@cmd \let\orgtextbf\textbf - \DeclareRobustCommand\bxjstextbf[1]{% + \DeclareRobustCommand\pandocTextbf[1]{% \begingroup \let\textbf\orgtextbf \strong{#1}% \endgroup}% \g@addto@macro\bxjs@begin@document@hook{% - \let\textbf\bxjstextbf} + \let\textbf\pandocTextbf} \fi\fi \jsAtEndOfClass{% \ifx\strongfontdeclare\@undefined\else @@ -276,6 +286,10 @@ \fi \fi} \ifbxjs@jp@fix@code + \ifbxjs@bxghost@available + \RequirePackage[verb]{bxghost}[2020/01/31]% v0.3.0 + \let\bxjs@eghostguarded\eghostguarded + \else \chardef\bxjs@eghost@c=23 \ifx j\jsEngine \xspcode\bxjs@eghost@c=3 \else\ifx l\jsEngine \ltjsetparameter{alxspmode={\bxjs@eghost@c,3}} @@ -285,20 +299,25 @@ \ifx\bxjs@eghost@c\@undefined\else \font\bxjs@eghost@f=ec-lmr10 at 1.23456pt \def\bxjs@pan@eghost{\bgroup\bxjs@eghost@f\bxjs@eghost@c\egroup} + \def\bxjs@eghostguarded#1{% + \bxjs@pan@eghost\null#1\null\bxjs@pan@eghost} + \fi + \fi + \ifx\bxjs@eghostguarded\@undefined\else \let\orgtexttt\texttt - \DeclareRobustCommand\bxjstexttt[1]{% + \DeclareRobustCommand\pandocTexttt[1]{% \ifmmode \nfss@text{\ttfamily #1}% \else \ifvmode \leavevmode \fi - \bxjs@pan@eghost\null - \begingroup \ttfamily #1\endgroup - \null\bxjs@pan@eghost + \bxjs@eghostguarded{\begingroup\ttfamily#1\endgroup}% \fi} \g@addto@macro\bxjs@begin@document@hook{% - \let\texttt\bxjstexttt} + \let\texttt\pandocTexttt} + \ifbxjs@bxghost@available\else \expandafter\def\expandafter\verb\expandafter{% \expandafter\bxjs@pan@eghost\verb} \g@addto@macro\verb@egroup{\bxjs@pan@eghost} + \fi \fi \fi \if j\jsEngine diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def b/Master/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def index 29b7472c0fb..3b28255c80f 100644 --- a/Master/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def +++ b/Master/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def @@ -21,7 +21,7 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) \ProvidesFile{bxjsja-standard.def} - [2021/05/18 v2.5a BXJS document classes] + [2022/03/20 v2.6 BXJS document classes] %% このファイルは日本語文字を含みます \input{bxjsja-minimal.def} \bxjs@simplejasetupfalse @@ -86,10 +86,18 @@ \ifx\strong\@undefined\ifx\strongenv\@undefined \DeclareRobustCommand{\strongenv}{\bxjs@strong@font}% \DeclareTextFontCommand{\strong}{\strongenv}% - \@ifdefinable{\strongfontdeclare}{\bxjs@protected\def\strongfontdeclare#1{% - \bxjs@strong@font@declare@a#1,\@nil}}% - \def\bxjs@strong@font@declare@a#1,#2\@nil{\def\bxjs@strong@font{#1}}% - \def\bxjs@strong@font{\bfseries}% + \newcommand*{\strongfontdeclare}{\bxjs@strongfontdeclare}% + \newcount\bxjs@strong@level + \bxjs@protected\def\bxjs@strongfontdeclare#1{% + \bxjs@set@array@from@clist{bxjs@strong}{#1}% + \bxjs@strong@level\z@}% + \bxjs@strongfontdeclare{\bfseries}% + \def\bxjs@strong@font{% + \bxjs@csletcs{bxjs@tmpa}{bxjs@strong/\the\bxjs@strong@level}% + \ifx\bxjs@tmpa\relax + \advance\bxjs@strong@level\m@ne \bxjs@strong@font + \else \advance\bxjs@strong@level\@ne \bxjs@tmpa + \fi}% \fi\fi }\fi \ifjsWitheTeX @@ -399,7 +407,7 @@ \bxjs@check@hyperref@unicode{false} \ifjsWithupTeX\ifbxjs@old@hook@system\else \IfFileExists{pxjahyper-uni.def}{% - \AddToHook{package/after/hyperref}{\input{pxjahyper-uni.def}} + \AddToHook{\bxjs@CGHN{package/hyperref/after}}{\input{pxjahyper-uni.def}} }{} \fi\fi \fi diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjspandoc.sty b/Master/texmf-dist/tex/latex/bxjscls/bxjspandoc.sty index d3d6d416bf2..cec84841e02 100644 --- a/Master/texmf-dist/tex/latex/bxjscls/bxjspandoc.sty +++ b/Master/texmf-dist/tex/latex/bxjscls/bxjspandoc.sty @@ -22,7 +22,7 @@ %% in the same archive or directory.) \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{bxjspandoc} - [2021/05/18 v2.5a BXJS document classes] + [2022/03/20 v2.6 BXJS document classes] %% このファイルは日本語文字を含みます. \def\bxjsp@pkgname{bxjscjkcat} \let\bxjsp@engine=n @@ -35,6 +35,12 @@ \bxjsp@do\XeTeXversion{\let\bxjsp@engine=x} \bxjsp@do\pdftexversion{\let\bxjsp@engine=p} \bxjsp@do\luatexversion{\let\bxjsp@engine=l} +\@onlypreamble\bxjsp@begin@document@hook +\let\bxjsp@begin@document@hook\@empty +\AtBeginDocument{\bxjsp@begin@document@hook} +\newif\ifbxjsp@babel@used +\g@addto@macro\bxjsp@begin@document@hook{% + \@ifpackageloaded{babel}{\bxjsp@babel@usedtrue}{}} \newif\ifbxjsp@english \DeclareOption{english}{\bxjsp@englishtrue} \ProcessOptions* @@ -64,14 +70,23 @@ \newcommand*\UseMicrotypeSet[2][]{} \fi \DeclareRobustCommand{\pandocLdots}{% - \relax\ifmmode \expandafter\bxjsp@org@ldots - \else \expandafter\bxjsp@ja@ellipsis - \fi} + \let\bxjsp@do\bxjsp@ja@ellipsis + \ifmmode \let\bxjsp@do\bxjsp@org@ldots + \else\ifbxjsp@babel@used + \expandafter\ifx\csname bxjsp@ld/\languagename\endcsname\relax + \let\bxjsp@do\bxjsp@org@ldots \fi + \fi\fi \bxjsp@do} +\@namedef{bxjsp@ld/japanese}{1} \def\bxjsp@ja@ellipsis{…} \let\bxjsp@org@ldots\ldots -\AtBeginDocument{% +\g@addto@macro\bxjsp@begin@document@hook{% \let\bxjsp@org@ldots\ldots - \ifbxjsp@english\else \let\ldots\pandocLdots \fi} + \long\def\bxjsp@tmpa{\ldots}% + \ifx\pandocLdots\bxjsp@tmpa\else + \ifnum0\ifbxjsp@english\ifbxjsp@babel@used\else1\fi\fi=0 + \let\ldots\pandocLdots + \fi + \fi} \chardef\bxjsp@cc@other=12 \@onlypreamble\bxjsp@makeother@range \def\bxjsp@makeother@range#1#2{% diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls b/Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls index 4d49391eb16..7ed66aab6c2 100644 --- a/Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls +++ b/Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls @@ -22,7 +22,7 @@ %% in the same archive or directory.) \NeedsTeXFormat{LaTeX2e} \ProvidesClass{bxjsreport} - [2021/05/18 v2.5a BXJS document classes] + [2022/03/20 v2.6 BXJS document classes] %% このファイルは日本語文字を含みます. \def\bxjs@clsname{bxjsreport} \newif\ifjsc@needsp@tch @@ -87,6 +87,8 @@ \let\PackageWarningNoLine\bxjs@tmpa \@nameuse{RevokeOldLuaTeXBehavior} \let\ifjsInPdfMode\ifpdf +\newif\ifbxjs@explIII +\@ifl@t@r\fmtversion{2020/02/02}{\bxjs@explIIItrue}{} \newif\ifbxjs@TUenc \def\bxjs@tmpa{TU}\edef\bxjs@tmpb{\f@encoding} \ifx\bxjs@tmpa\bxjs@tmpb @@ -94,6 +96,11 @@ \fi \newif\ifbxjs@old@hook@system \@ifl@t@r\fmtversion{2020/10/01}{}{\bxjs@old@hook@systemtrue} +\@ifl@t@r\fmtversion{2021/11/15}{% + \def\bxjs@CGHN#1{#1}% +}{%else + \def\bxjs@CGHN#1{\bxjs@CGHN@a#1//}% + \def\bxjs@CGHN@a#1/#2/#3//{#1/#3/#2}} \@gobbletwo\if\if \def\bxjs@cond#1\fi{% #1\expandafter\@firstoftwo \else\expandafter\@secondoftwo @@ -105,6 +112,21 @@ \def\bxjs@catopt#1#2{% #1\if\relax#1\relax\else\if\relax#2\relax\else,\fi\fi#2} \def\bxjs@ifplus#1{\@ifnextchar+{\@firstoftwo{#1}}} +\def\bxjs@trim#1{\expandafter\bxjs@trim@a#1\@nil#1} +\def\bxjs@trim@a{\futurelet\bxjs@tmpb\bxjs@trim@b} +\def\bxjs@trim@b{\bxjs@cond\ifx\bxjs@tmpb\@sptoken\fi + {\bxjs@trim@c\bxjs@trim@a}{\bxjs@trim@d}} +\def\bxjs@trim@c#1 {#1} +\def\bxjs@trim@d#1\@nil{\bxjs@trim@e#1\@nil: \@nil\@nnil} +\def\bxjs@trim@e#1 \@nil#2\@nnil{\bxjs@cond\ifx\@nnil#2\@nnil\fi + {\bxjs@trim@f#1\@nnil}{\bxjs@trim@e#1\@nil: \@nil\@nnil}} +\def\bxjs@trim@f#1\@nil#2\@nnil#3{\def#3{#1}} +\def\bxjs@set@array@from@clist#1#2{% + \@tempcnta\z@ + \@for\bxjs@tmpa:=\@empty#2\do{% + \bxjs@trim\bxjs@tmpa \bxjs@cslet{#1/\the\@tempcnta}\bxjs@tmpa + \advance\@tempcnta\@ne} + \bxjs@cslet{#1/\the\@tempcnta}\relax} \let\c@bxjs@tempcnta\@tempcnta \def\bxjs@gset@tempcnta{\setcounter{bxjs@tempcnta}} \def\jsSetQHLength#1#2{% @@ -738,10 +760,17 @@ \else \@tempswatrue \fi\fi\fi \if@tempswa - \ifx\bxjs@driver@opt\@undefined \ifx\bxjs@jadriver@opt\@undefined\else - \ClassWarningNoLine\bxjs@clsname - {No driver option is given} - \fi\fi + \ifx\bxjs@driver@opt\@undefined + \if \ifbxjs@explIII T\else\ifx\bxjs@jadriver@opt\@undefined F\else T\fi\fi T% + \ClassWarningNoLine\bxjs@clsname + {A driver option is MISSING!!\MessageBreak + You should properly specify one of the valid\MessageBreak + driver options according to the DVI driver\MessageBreak + that is in use:\MessageBreak + \@spaces dvips, dvipdfmx, dviout, xdvi,\MessageBreak + \@spaces nodvidriver} + \fi + \fi \ifbxjs@dvi@opt \edef\bxjs@next{% \let\noexpand\bxjs@driver@given diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls b/Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls index 19ad80f2e48..f29e623436b 100644 --- a/Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls +++ b/Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls @@ -22,7 +22,7 @@ %% in the same archive or directory.) \NeedsTeXFormat{LaTeX2e} \ProvidesClass{bxjsslide} - [2021/05/18 v2.5a BXJS document classes] + [2022/03/20 v2.6 BXJS document classes] %% このファイルは日本語文字を含みます. \def\bxjs@clsname{bxjsslide} \newif\ifjsc@needsp@tch @@ -87,6 +87,8 @@ \let\PackageWarningNoLine\bxjs@tmpa \@nameuse{RevokeOldLuaTeXBehavior} \let\ifjsInPdfMode\ifpdf +\newif\ifbxjs@explIII +\@ifl@t@r\fmtversion{2020/02/02}{\bxjs@explIIItrue}{} \newif\ifbxjs@TUenc \def\bxjs@tmpa{TU}\edef\bxjs@tmpb{\f@encoding} \ifx\bxjs@tmpa\bxjs@tmpb @@ -94,6 +96,11 @@ \fi \newif\ifbxjs@old@hook@system \@ifl@t@r\fmtversion{2020/10/01}{}{\bxjs@old@hook@systemtrue} +\@ifl@t@r\fmtversion{2021/11/15}{% + \def\bxjs@CGHN#1{#1}% +}{%else + \def\bxjs@CGHN#1{\bxjs@CGHN@a#1//}% + \def\bxjs@CGHN@a#1/#2/#3//{#1/#3/#2}} \@gobbletwo\if\if \def\bxjs@cond#1\fi{% #1\expandafter\@firstoftwo \else\expandafter\@secondoftwo @@ -105,6 +112,21 @@ \def\bxjs@catopt#1#2{% #1\if\relax#1\relax\else\if\relax#2\relax\else,\fi\fi#2} \def\bxjs@ifplus#1{\@ifnextchar+{\@firstoftwo{#1}}} +\def\bxjs@trim#1{\expandafter\bxjs@trim@a#1\@nil#1} +\def\bxjs@trim@a{\futurelet\bxjs@tmpb\bxjs@trim@b} +\def\bxjs@trim@b{\bxjs@cond\ifx\bxjs@tmpb\@sptoken\fi + {\bxjs@trim@c\bxjs@trim@a}{\bxjs@trim@d}} +\def\bxjs@trim@c#1 {#1} +\def\bxjs@trim@d#1\@nil{\bxjs@trim@e#1\@nil: \@nil\@nnil} +\def\bxjs@trim@e#1 \@nil#2\@nnil{\bxjs@cond\ifx\@nnil#2\@nnil\fi + {\bxjs@trim@f#1\@nnil}{\bxjs@trim@e#1\@nil: \@nil\@nnil}} +\def\bxjs@trim@f#1\@nil#2\@nnil#3{\def#3{#1}} +\def\bxjs@set@array@from@clist#1#2{% + \@tempcnta\z@ + \@for\bxjs@tmpa:=\@empty#2\do{% + \bxjs@trim\bxjs@tmpa \bxjs@cslet{#1/\the\@tempcnta}\bxjs@tmpa + \advance\@tempcnta\@ne} + \bxjs@cslet{#1/\the\@tempcnta}\relax} \let\c@bxjs@tempcnta\@tempcnta \def\bxjs@gset@tempcnta{\setcounter{bxjs@tempcnta}} \def\jsSetQHLength#1#2{% @@ -730,10 +752,17 @@ \else \@tempswatrue \fi\fi\fi \if@tempswa - \ifx\bxjs@driver@opt\@undefined \ifx\bxjs@jadriver@opt\@undefined\else - \ClassWarningNoLine\bxjs@clsname - {No driver option is given} - \fi\fi + \ifx\bxjs@driver@opt\@undefined + \if \ifbxjs@explIII T\else\ifx\bxjs@jadriver@opt\@undefined F\else T\fi\fi T% + \ClassWarningNoLine\bxjs@clsname + {A driver option is MISSING!!\MessageBreak + You should properly specify one of the valid\MessageBreak + driver options according to the DVI driver\MessageBreak + that is in use:\MessageBreak + \@spaces dvips, dvipdfmx, dviout, xdvi,\MessageBreak + \@spaces nodvidriver} + \fi + \fi \ifbxjs@dvi@opt \edef\bxjs@next{% \let\noexpand\bxjs@driver@given -- cgit v1.2.3