From 084f5d8435744b7ea7ef487ec111a7bfd100ed62 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Tue, 30 Jan 2024 03:00:44 +0000 Subject: CTAN sync 202401300300 --- language/japanese/BX/bxjscls/LICENSE | 2 +- language/japanese/BX/bxjscls/README-ja.md | 5 + language/japanese/BX/bxjscls/README.md | 2 + language/japanese/BX/bxjscls/bxjscls-manual.pdf | Bin 397614 -> 407611 bytes language/japanese/BX/bxjscls/bxjscls-manual.tex | 272 ++++++--- language/japanese/BX/bxjscls/bxjscls.dtx | 776 ++++++++++++++---------- language/japanese/BX/bxjscls/bxjscls.pdf | Bin 880781 -> 884432 bytes 7 files changed, 632 insertions(+), 425 deletions(-) (limited to 'language/japanese') diff --git a/language/japanese/BX/bxjscls/LICENSE b/language/japanese/BX/bxjscls/LICENSE index 56cb62927a..f3f3f80f7e 100644 --- a/language/japanese/BX/bxjscls/LICENSE +++ b/language/japanese/BX/bxjscls/LICENSE @@ -3,7 +3,7 @@ The BSD 2-Clause License Copyright 1995-1999 ASCII Corporation. Copyright 1999-2016 Haruhiko Okumura Copyright 2016-2023 Japanese TeX Development Community -Copyright 2013-2023 Takayuki YATO (aka. "ZR") +Copyright 2013-2024 Takayuki YATO (aka. "ZR") All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/language/japanese/BX/bxjscls/README-ja.md b/language/japanese/BX/bxjscls/README-ja.md index f0767616f6..1b91f19f95 100644 --- a/language/japanese/BX/bxjscls/README-ja.md +++ b/language/japanese/BX/bxjscls/README-ja.md @@ -111,6 +111,11 @@ XeLaTeX / LuaLaTeX の上でも日本語処理パッケージと連携して使 更新履歴 -------- + * Version 2.9b 〈2024/01/22〉 + - bm パッケージとの併用で起こる不具合を回避した。 + * Version 2.9a 〈2023/08/02〉 + - 一部の standard ドライバの機能(`\jQ` 等)を本体に移動。 + - バグ修正。 * Version 2.9 〈2023/07/17〉 - LaTeX の未使用グローバルオプション検査を稼働するようにした。 - 和文パラメタ指定の代替表記(`ja:`)をサポートした。 diff --git a/language/japanese/BX/bxjscls/README.md b/language/japanese/BX/bxjscls/README.md index 39e1cdab42..b42534e38c 100644 --- a/language/japanese/BX/bxjscls/README.md +++ b/language/japanese/BX/bxjscls/README.md @@ -102,6 +102,8 @@ This package is distributed under the BSD 2-Clause License. Revision History ---------------- + * Version 2.9b 〈2024/01/22〉 + * Version 2.9a 〈2023/08/02〉 * Version 2.9 〈2023/07/17〉 * Version 2.8b 〈2023/07/01〉 * Version 2.8a 〈2023/06/20〉 diff --git a/language/japanese/BX/bxjscls/bxjscls-manual.pdf b/language/japanese/BX/bxjscls/bxjscls-manual.pdf index b7905c84af..29812903d4 100644 Binary files a/language/japanese/BX/bxjscls/bxjscls-manual.pdf and b/language/japanese/BX/bxjscls/bxjscls-manual.pdf differ diff --git a/language/japanese/BX/bxjscls/bxjscls-manual.tex b/language/japanese/BX/bxjscls/bxjscls-manual.tex index 33f0cb700e..aee9ffd06b 100644 --- a/language/japanese/BX/bxjscls/bxjscls-manual.tex +++ b/language/japanese/BX/bxjscls/bxjscls-manual.tex @@ -12,8 +12,8 @@ \bxtexlogoimport{*} \usepackage{shortvrb} \MakeShortVerb{\|} -\newcommand{\PkgVersion}{2.9} -\newcommand{\PkgDate}{2023/07/17} +\newcommand{\PkgVersion}{2.9b} +\newcommand{\PkgDate}{2024/01/22} \newcommand{\Pkg}[1]{\textsf{#1}} \newcommand{\Meta}[1]{$\langle$\mbox{}\nobr#1\nobr\mbox{}$\rangle$} \newcommand{\Note}{\par\noindent ※} @@ -67,7 +67,7 @@ JSクラスのレイアウトデザインと機能をほぼ踏襲しているが 以下の点で改良が加えられている。 \begin{itemize} \item JSクラスは{\pLaTeX}と{\upLaTeX}のみをサポートするが、 - BXJSクラスはこれらに加えて{\pdfLaTeX}と{\XeLaTeX}と{\LuaLaTeX}を + BXJSクラスはこれらに加えて{(pdf)\LaTeX}と{\XeLaTeX}と{\LuaLaTeX}を サポートしており主要エンジンの全てで使用可能である。 \item (u){\pLaTeX}以外では各々のエンジンの日本語処理パッケージを 利用するが、“標準設定”を用いることで、それらのパッケージの @@ -129,7 +129,8 @@ JSクラスのレイアウトデザインと機能をほぼ踏襲しているが \end{itemize} \end{itemize} -{\XeLaTeX}で\Pkg{bxjsarticle}クラスを用いた文書の例を示す。 +{\XeLaTeX}で\Pkg{bxjsarticle}クラスを用いた +完全な文書ソースの例を示す。 \footnote{組版結果における日付の出力はJSクラスと同様の 「2015年7月3日」の形式になる。}% @@ -221,7 +222,7 @@ JSクラスのレイアウトデザインと機能をほぼ踏襲しているが \end{verbatim}\end{quote} その値が\Pkg{bxcjkjatype}のフォントプリセットになる。 \begin{quote}\small\begin{verbatim} -\documentclass[a4paper]{article} +\documentclass[a4paper]{article}%ただしレイアウトはjsarticle相当 \usepackage[whole,autotilde,ipaex]{bxcjkjatype} \end{verbatim}\end{quote} @@ -459,6 +460,7 @@ Pandocモードを使う場合はクラスオプションを以下のように BXJSクラスを用いる場合のPandocの設定について、以下で例を示す。 \Note なお、以下の記述はPandoc 2.x版に従う。 +(3,x版でも通用すると思われる。) Pandocのオプション体系は2.x版と1.x版とでかなり異なることに 注意されたい。 @@ -473,8 +475,7 @@ Pandocのオプション体系は2.x版と1.x版とでかなり異なること この場合のコマンド行は次のようになる: \footnote{もちろん、実際には改行を含めず1行で書く。 - なお、日本語文書の場合、変換先書式(|-t|)は |latex| - でなく |lates-smart|(|smart| 機能を無効化)とすべきである。} + 以降の例でも同様。} \begin{quote} |pandoc| \Meta{入力ファイル名}\ |-o| \Meta{出力ファイル名}|.pdf| @@ -492,6 +493,14 @@ Pandocのオプション体系は2.x版と1.x版とでかなり異なること |\documentclass[a4paper,jafont=ipaex,pandoc]{bxjsarticle}| \end{quote} +\Note 注意事項: + \begin{itemize} + \item Pandocの |latex| 出力の |smart| 機能は + 普通の日本語文書においては悪影響を及ぼすので、 + 変換先書式(|-t|)の値は |latex| + でなく |latex-smart|(|smart| 機能を無効化)とすべきである。 + \end{itemize} + \paragraph{bxjsbookの例} 以下の設定で\Pkg{bxjsbook}クラスを使用したい。 @@ -527,6 +536,14 @@ Pandocのオプション体系は2.x版と1.x版とでかなり異なること \item \Pkg{bxjsbook}クラスは「章(|\chapter|)」をもつクラスなので、 Pandocで |--top-level-division=|\linebreak[0]|chapter| の指定 が必要。 + \item 既定テンプレート使用時は、|papersize=~| の指定は + 「クラスオプションに |~paper| を指定する」 + という形で反映される。 + BXJSクラスでは |b~paper| はJISのB列を表すので、 + |papersize=b5| でJIS~B5判に設定される。 + 出力形式を{\LaTeX}以外にする(あるいは他の文書クラスを利用する) + 場合は |papersize=b5| でISO~B5判に設定される可能性が + あることに注意。 \end{itemize} \paragraph{(u)\pLaTeX の使用} @@ -614,14 +631,19 @@ JSクラスには無くBXJSクラスで追加されたクラスオプション の指定は必須である。 \footnote{ただし現状では、ドライバオプションが無い場合には エラーではなく警告が出る。} -\item |nodvidriver|\Means +\item |nodvidriver|/|class-nodvidriver|\Means 特殊なドライバオプションの一種で、BXJSクラスが持つ ドライバ依存の機能を全て抑止することを指定する。 \footnote{従って、別にドライバ依存の機能を使用しなければ、 出力されるDVIファイルは特定のDVIウェアに依存しないものになる。 ただし最近の{\LaTeX}カーネルはそれ自身がドライバ依存をもつ ことに注意。} -\item |dvi=|\Meta{ドライバ名}\Means + \Note BXJSクラス内では |nodvidriver| と |class-nodvidriver| は + 等価であるが、「何がグローバルオプションにあるか」という観点で + 両者は異なる。 + 現状で |nodvidriver| オプションを認識するパッケージがあり、 + |nodvidriver| の方はそれらのパッケージについても有効になる。 +\item |dvi=|\Meta{ドライバオプション名}\Means エンジンがDVI出力の場合に限り、指定のドライバオプションを 有効にする。 \footnote{実際にドライバオプションが有効化された場合は、 @@ -659,7 +681,7 @@ JSクラスには無くBXJSクラスで追加されたクラスオプション \item |jafont=|\Meta{名前}\Means 「和文フォントプリセット指定」の名前を設定する。 既定値は空。 - \Note 詳細は\ref{ssec:ja-font-settings}節を参照。 + \Note 詳細については\ref{ssec:ja-font-settings}節を参照。 \par プリセット指定の値が丸括弧を含む(例えば“|sourcehan(-otc)|”)場合、 以下のように解釈される。 @@ -672,7 +694,7 @@ JSクラスには無くBXJSクラスで追加されたクラスオプション \item |japaram={|\Meta{キー}|=|\Meta{値}|,...}|\Means 「和文ドライバパラメタ」の値を設定する。 既定値は空。 - \Note 詳細は\ref{sec:Ja-Driver-Param}節を参照。 + \Note 詳細については\ref{sec:Ja-Driver-Param}節を参照。 \Note |japaram| を複数回指定した場合は各々の指定内容 (キーと値の組の列)が累積する。 \Note |jafont| と |japaram| の値がどのように解釈されるかは @@ -695,7 +717,7 @@ JSクラスには無くBXJSクラスで追加されたクラスオプション 基底フォントサイズに14\,ptを設定する。 \item |jbase=|\Meta{長さ\xast}\Means 和文を基準にして基底フォントサイズを指定する。 - すなわち和文フォントの |\normalsize| のサイズを指定の長さとする。 + すなわち、和文フォントの |\normalsize| のサイズを指定の長さとする。 \footnote{この場合に決定されるmag値は和文スケール値にも依存する ことに注意。} \Note 1.8版から、|base| と |jbase| の両方の指定が可能になった。 @@ -765,7 +787,7 @@ JSクラスには無くBXJSクラスで追加されたクラスオプション エンジンや和文ドライバの種類により、 既定値が有効・無効の何れになるかは異なり、また、 そもそも有効・無効の一方しか選択できない場合もある。 - 詳細については\ref{sec:Ja-math-fonts}節を参照されたい。 + \Note 詳細については\ref{sec:Ja-math-fonts}節を参照。 \item |textwidth=|\Meta{長さ}\Means 行長(本文領域の横幅;|\textwidth|)を指定する。 \Note 実際には全角の整数倍に丸めた値が使われる @@ -784,7 +806,7 @@ JSクラスには無くBXJSクラスで追加されたクラスオプション \item |number-of-lines=|\Meta{整数}\Means 1ページあたりの行数を指定する。 \Pkg{geometry}で |lines| を指定したのと同値。 - 既定では |lines| を指定しない。 + 既定では\Pkg{geometry}の |lines| は指定されない。 \end{itemize} \paragraph{上級者向けのオプション}\mbox{} @@ -841,7 +863,7 @@ JSクラスには無くBXJSクラスで追加されたクラスオプション \item |magstyle=|\Meta{値}\Means “版面拡大”の実現方法を指定する。 有効な値は |usemag|、|nomag|、|nomag*| の何れか。 - 詳細は\ref{ssec:magstyle}節を参照。 + \Note 詳細については\ref{ssec:magstyle}節を参照。 \item |geometry=|\Meta{値}\Means \Pkg{geometry}パッケージの読込に対する制御。 \begin{itemize} @@ -864,7 +886,7 @@ JSクラスには無くBXJSクラスで追加されたクラスオプション |\bf| 等の“二文字フォント命令”の使用を許容する。 \item |nooldfontcommands|(既定)\Means “二文字フォント命令”の使用に対して警告を出す。 - 詳細については\ref{sec:Old-font-commands}節を参照されたい。 + \Note 詳細については\ref{sec:Old-font-commands}節を参照。 \item |fancyhdr=|\Meta{真偽値}\Means \Pkg{fancyhdr}パッケージの機能に対する補正を行うか。 真の場合、以下の補正が行われる。既定値は真。 @@ -888,11 +910,11 @@ JSクラスには無くBXJSクラスで追加されたクラスオプション を行うか否か。 既定値は真。 \item |jaspace-cmd=|\Meta{真偽値}\Means - 以下に挙げる和文空白命令を定義するか否か。 - (詳しくは\ref{ssec:ja-settings}節を参照。) + 以下に挙げる和文空白命令 + (\ref{ssec:ja-settings}節を参照)を定義するか否か。 \begin{quote} |\jaenspace|、|\jathinspace|、|\>|、 - |\|\JSS(|\|\,+\,全角空白) + |\|\JSS(|\|\,+\,全角空白)、|\jaspace| \end{quote} 既定値は真。 \item |fix-at-cmd=|\Meta{真偽値}\Means @@ -1186,7 +1208,7 @@ keyval形式(例えば|magstyle=nomag*|)で書くこともできる。} 当然、NFSSのパッチのせいで別の不具合が起こる可能性はある。 \end{itemize} -\Note Lua{\TeX}の0.87版以降では(PDF出力時の)「mag設定」の機能が +\Note Lua{\TeX}の0.87版以降では「PDF出力時のmag設定」の機能が 廃止されている。 そのため、そのようなエンジンでは |usemag| はサポートされない (エラーになる)。 @@ -1225,10 +1247,10 @@ BXJSクラスでは様々なエンジンについて、そのエンジンおよ \item pandoc和文ドライバ\Means 「Pandocモード」で使用される和文ドライバ。 standardドライバの機能を継承するが、 -「Pandocの既定のlatexテンプレート」が使われることを前提として、 +「Pandocの既定の |latex| テンプレート」が使われることを前提として、 それとBXJSの設定を整合させるための措置を加えている。 \Note 本マニュアルで「standard和文ドライバの場合」という場合、 -特に明示がない限りはpandoc和文ドライバも含まれる。 +特に明示されない限りはpandoc和文ドライバも含まれる。 \end{itemize} 和文ドライバは自分で作製することも可能である。 @@ -1242,22 +1264,19 @@ standardドライバの機能を継承するが、 )の名前のファイルに実装コードを書いてそのファイルを配置すると、 |ja=XXX| のオプション指定でその和文ドライバを利用できる。 -なお、和文ドライバ指定(|ja| オプション)の既定値は |minimal| -である。 -現実には、ほとんど全ての場合に |standard| が用いられると思われるが、 -種々の理由があって、これを既定値にはしていない。 +なお、和文ドライバの指定(|ja| オプション)は\jemph{必須}である。 +現状では |minimal| が既定値となっているが、 +2.0版より省略は\jemph{非推奨}の扱いであり、 +% (既に1.8版で明示指定が推奨されていた。) +3.0版で\jemph{禁止}される予定である。 \Note ただし、(u){\pLaTeX}については、日本語処理機能がエンジン自体に -備わっていて不可分なため少し異なる扱いになっている。 +備わっていて不可分なため例外的な扱いになっていて、 \footnote{JSクラスの実装から分離した「日本語処理関連」のコードを minimalに配置している。}% -|minimal| を用いる意義がほとんどないため、 +和文ドライバ指定は省略可能で % |standard| が既定値になっている。 -\Note 2.0版より、(u){\pLaTeX}以外のエンジンについては、 -和文ドライバ指定を省略することは非推奨の扱いとなった。 -(既に1.8版で明示指定が推奨されていた。) - %------------------- \subsection{standardドライバで用いられる日本語処理機構} \label{ssec:ja-package} @@ -1266,7 +1285,7 @@ minimalに配置している。}% \item \pLaTeX、\upLaTeX(および{\pLaTeX-ng})の場合\Means エンジン自体が日本語処理の能力を持っているので それが常に用いられる。 -\item \pdfLaTeX{}の場合\Means +\item (pdf){\LaTeX}の場合\Means \Pkg{bxcjkjatype}パッケージが |whole| と |autotilde| の オプション付で読み込まれる。 \item \XeLaTeX{}の場合\Means @@ -1288,50 +1307,49 @@ minimalに配置している。}% 明朝・ゴシックのファミリとして用いられる物理フォントの 割当(マッピング)は以下のようになる: \begin{itemize} -\item \pLaTeX、\upLaTeX{}\Means +\item \pLaTeX、{\upLaTeX}の場合\Means クラスでは何もマッピングを設定しない。 従って、DVIウェアでの設定が適用される。 -\item \pdfLaTeX\Means +\item pdf{\LaTeX}の場合\Means \Pkg{bxcjkjatype}パッケージの既定設定となり、 従って、Type1形式のIPAexフォント(\Pkg{ipaex-type1}で提供される) が使用される。 -\item \XeLaTeX\Means +\item \XeLaTeX{}の場合\Means 「原ノ味フォント」が使用される。 \Pkg{zxjafont}パッケージの |haranoaji| プリセットの 単ウェイト使用と同等であるが、パッケージが読み込まれるわけではない。 -\item \LuaLaTeX\Means +\item \LuaLaTeX{}の場合\Means 「原ノ味フォント」が使用される。 \Pkg{luatexja-preset}パッケージの |haranoaji| プリセットの 単ウェイト使用と同等であるが、パッケージが読み込まれるわけではない。 \end{itemize} -\Note {\TeX} Live 2019(およびその前の数年間)では、DVIウェアにおける -和文フォントマッピングの既定設定は「IPAexフォント」であった。 -(つまり、(u){\pLaTeX}では既定で「IPAexフォント」が使われる。) -これに合わせる形で、{\XeLaTeX}・{\LuaLaTeX}での既定設定も、 -以前は「IPAexフォント」としていた。 -ところが、{\TeX} Live 2020において、DVIウェアの既定のマッピングが +\Note DVIウェアにおける既定の和文フォントマッピング +(すなわち(u){\pLaTeX}における既定の和文フォント) +の設定は、昔は「IPAexフォント」であったが +{\TeX} Live 2020において 「原ノ味フォント」に変更された。 -従って、{\XeLaTeX}・{\LuaLaTeX}での既定設定についても、 +これに追随する形で、 +BXJSクラスの{\XeLaTeX}・{\LuaLaTeX}での既定設定についても、 2.0版より「原ノ味フォント」に変更された。 ただしType1形式の原ノ味フォントは存在しないため、 -{\pdfLaTeX}では\Pkg{ipaex-type1}のフォントが引き続き使用される。 +(pdf){\LaTeX}では\Pkg{ipaex-type1}のフォントが引き続き使用される。 \par\medskip 和文フォントプリセット(|jafont|)を指定した場合、 具体的には以下のように処理される: \begin{itemize} -\item \pLaTeX、\upLaTeX\Means - \Pkg{pxchfon}パッケージが「|jafont| の値」をオプション - に指定した形で読み込まれる。 -\item \pdfLaTeX\Means - \Pkg{bxcjkjatype}のオプションに「|jafont| の値」が指定される。 -\item \XeLaTeX\Means - \Pkg{zxjafont}パッケージが「|jafont| の値」をオプション - に指定した形で読み込まれる。 -\item \LuaLaTeX\Means - \Pkg{luatexja-preset}パッケージが「|jafont| の値」をオプション - に指定した形で読み込まれる。 +\item \pLaTeX、{\upLaTeX}の場合\Means + 「|jafont| の値」をオプションにして + \Pkg{pxchfon}パッケージを読み込む。 +\item (pdf){\LaTeX}の場合\Means + \Pkg{bxcjkjatype}のオプションに「|jafont| の値」を追加する。 +\item \XeLaTeX{}の場合\Means + 「|jafont| の値」をオプションにして + \Pkg{zxjafont}パッケージを読み込む。 +\item \LuaLaTeX{}の場合\Means + 「|jafont| の値」をオプションにして + \Pkg{luatexja-preset}パッケージを読み込む。 \end{itemize} ただし、|jafont| の値として |auto| は特別な意味をもち、 @@ -1371,6 +1389,52 @@ minimalに配置している。}% minimal和文ドライバには有効な和文ドライバパラメタは存在しない。 +\paragraph{和文ドライバパラメタの代替表記} +Pandoc(の{\LaTeX}出力の既定テンプレート)では、 +|classoption| というパラメタで任意のクラスオプションを指定できるが、 +この際に波括弧 |{…}| の扱いがしばしば厄介なことになる。 +例えば和文パラメタ指定の +\begin{quote}\small\begin{verbatim} +japaram={jis2004} +\end{verbatim}\end{quote} +という値をYAMLメタデータブロックで指定したいとする。 +この場合、単純に +\begin{quote}\small\begin{verbatim} +classoption: japaram={jis2004} +\end{verbatim}\end{quote} +と書いたのでは、 +|{jis2004}| の部分が |\{jis2004\}| のように“エスケープ”されて +しまって失敗する。 +所望の指定をするには代わりに +\begin{quote}\small\begin{verbatim} +classoption: "`japaram={jis2004}`{=latex}" +\end{verbatim}\end{quote} +のような複雑怪奇な書き方をする必要がある。% +\footnote{YAMLメタデータブロックで指定された + 文字列(YAMLの文字列型の値)について、Pandocでは + 「Markdownソースとして解釈される」 + という奇妙な仕様を(歴史的経緯のため)採用している。 + このため、|{jis2004}| は + 「Markdown→{\LaTeX}の変換」 + が適用されて |\{jis2004\}| となってしまう。 + 余計な変換を回避するためにはPandoc MarkdownのRawInLine要素を + 利用して |`japaram={jis2004}`{=latex}| と書く必要がある。 + さらに、YAMLの文法規則として、 + 文字列が |`| で始まる場合には |"…"| で全体を囲わなければならない。} + +この問題に対処するため、2.9版において +「和文ドライバパラメタ代替表記」をサポートすることにした。 +クラスオプションに |ja:| で始まる文字列を書くと、 +以下のように解釈される。 +\begin{itemize} +\item |ja:XXX| と書くと、|japaram={XXX}| を指定したことになる。 +\item |ja:XXX=YYY| と書くと、|japaram={XXX=YYY}| を指定したことになる。 +\end{itemize} +代替表記を利用すると、先ほどの例は以下のように書くことができる。 +\begin{quote}\small\begin{verbatim} +classoption: ja:jis2004 +\end{verbatim}\end{quote} + %------------------- \subsection{standard和文ドライバの場合} @@ -1433,9 +1497,9 @@ standard用のものに加えて、以下の和文ドライバパラメタが存 和文フォントを単ウェイトで用いている場合、生の |\textbf| は体裁 が悪い(ゴシックの和文とセリフの欧文の組み合わせになる)ため、 |\strong| に移譲して調整ができるようにしている。 - \footnote{|\strong| に適用される書体は、|strong| パラメタで選択 - できるが、その他に({\XeLaTeX}・{\LuaLaTeX}の場合は) - \Pkg{fontspec}の |\strongfontdeclare| 命令でも設定できる。} + \footnote{|\strong| に適用される書体は |strong| パラメタで選択 + できるが、|\strongfontdeclare| 命令 + (\ref{ssec:markup}節)でも設定できる。} \Note |\bfseries| 命令の動作は変わらない。 \item |fix-code=|\Meta{真偽値}\Means |\texttt| 命令と周囲の和文の間に和欧文間空白が常に入るようにするか。 @@ -1539,6 +1603,7 @@ vscale=0.944, vmarginratio=1:1 %------------------- \subsection{構造マークアップ関連} +\label{ssec:markup} \begin{itemize} \item |\subtitle{|\Meta{テキスト}|}|\Means @@ -1632,16 +1697,16 @@ vscale=0.944, vmarginratio=1:1 \item |\zw|\Means |\jsZw| の別名。 \footnote{\Pkg{\LuaTeX-ja}では「実際の全角幅」を表す - 命令 |\zw|({\pLaTeX}の |zw| と本当に等価)が規定されている。 - |lualatex| エンジン指定かつ和文ドライバが |standard| の場合は + 長さ命令 |\zw|({\pLaTeX}の |zw| と本当に等価)が規定されている。 + |lualatex| エンジン指定かつ和文ドライバがstandardの場合は この |\zw| の定義がそのまま使われる。 - (従って |use-zw| は実質的に意味を持たない。) + (従って |use-zw| は実質的に無意味である。) なお、|\jsZw| は「規約上の全角幅」であり、「実際の全角幅」と本来は 一致するはずだが、実際には計算誤差のせいで僅かに値が異なる。}% ただし |use-zw=false| 指定時は定義されない。 \item |\zwspace|\Means 全角(|\jsZw|)幅の水平空き。 -\item |\|\JSS(|\|\,の後に全角空白文字)\Means +\item |\|\JSS(|\|\,+\,全角空白)\Means |\zwspace| の別名。 全角幅の水平空き。 \Note \Pkg{jlreq}クラスと互換の命令。 @@ -1649,11 +1714,54 @@ vscale=0.944, vmarginratio=1:1 この命令は単純に |\hspace|\wbr|{\jsZw}| と等価である。 \item |\jaenspace|\Means 半角(0.5\,|\jsZw|)幅の水平空き。 +\item |\jathinspace|\Means + 和欧文間空白を挿入する。 +\item |\>|\Means + (非数式モードで + \footnote{|\>| という命令名は、plain {\TeX}では数式中の空白 + ({\LaTeX}の |\:| と同等)を表す。 + このため、実際には{\LaTeX}でも |\>| は |\:| と同等の命令として + 定義されている。 + この「plain互換の |\>|」を利用したコードが影響を受けるのを避ける + ため、数式中では |\>| は従来通り |\:| と同等の動作を行う。}% + )和欧文間空白を挿入する。 +\item |\jaspace{|\Meta{値}|}|\Means + 引数の値に応じて水平空きを挿入する。% + \footnote{\Pkg{jlreq}クラスに同様の命令が実装されているが、 + なぜかundocumentedになっている。}% + 可能な値は以下の通り: + \begin{itemize} + \item |zenkaku|\Means 全角幅。(|\zwspace| と同じ。) + \item |nibu|\Means 半角幅。(|\jaenspace| と同じ。) + \item |shibu|\Means 四分幅(0.25\,|\jsZw|)。% + \footnote{和欧文間空白(|\jathinspace|)とは必ずしも + 一致\jemph{しない}ことに注意。} + \end{itemize} + \Note ただし |jaspace-cmd=false| 指定時は |\|\JSS・ + |\jaenspace|・|\jathinspace|・|\>|・|\jaspace| + は定義されない。% + \footnote{ただし |\>| については注意が必要で、 + standard和文ドライバで自動的に読み込まれる + \Pkg{zxjatype}や\Pkg{bxcjkjatype}のパッケージは、 + それ自体が同様の機能の |\>| を提供する。} \item |\allowoldfontcommands|\Means これ以降に実行される二文字フォント命令を警告の対象にしない。 \item |\disallowoldfontcommands|\Means これ以降に実行される二文字フォント命令を警告の対象にする。 -\Note 詳細については\ref{sec:Old-font-commands}節を参照されたい。 + \Note 詳細については\ref{sec:Old-font-commands}節を参照。 +\item |\jQ|、|\jH|、|\trueQ|、|\trueH|\Means + それぞれ{\pLaTeX}の単位Q、H、true\,Q、true\,Hに相当する長さ命令。 +\item |\ascQ|\Means + 1\,true\,Qを和文スケール値で割った長さを表す長さ命令。 + \footnote{命令名は“anti-scaled Q”の略。}% + \Note 例えば、|\fontsize{10\ascQ}{16\trueH}| + で和文のサイズが10\,Qになる。% + \footnote{1.5c版で導入された |\jafontsize| 命令を用いて % + |\jafontsize{10trueQ}{16trueH}| としてもよい。} +\item |\ascpt|\Means + 1\,true\,ptを和文スケール値で割った長さを表す長さ命令。 + \Note 例えば、|\fontsize{9\ascpt}{13truept}| + で和文のサイズが9ポイントになる。 \item \mbox{\pLaTeX}カーネルで規定される 「基底フォントサイズパラメタ」の 長さ命令 |\Cwd|\JSl|\Cht|\JSl|\Cdp|\JSl|\Cvs|\JSl|\Chs| が @@ -1664,7 +1772,7 @@ vscale=0.944, vmarginratio=1:1 \subsubsection{standard和文ドライバで追加される命令} -standard和文ドライバ(およびそれを継承するドライバ)では和文に関連する +standard和文ドライバでは和文に関連する 文書ソース記述をエンジンに依らずに共通になることを目指している。 従って、和文関連の組版パラメタの設定についても 「共通の命令」が提供される。 @@ -1679,19 +1787,6 @@ standard和文ドライバ(およびそれを継承するドライバ)では \footnote{ちなみに、(u){\pLaTeX}の既定ではこの連動は起こらない。}% に、|\rmfamily| で和文が「明朝」、 |\sffamily| および |\ttfamily| で和文が「ゴシック」に変更される。 -\item |\jQ|、|\jH|、|\trueQ|、|\trueH|\Means - それぞれ{\pLaTeX}の単位Q、H、true\,Q、true\,Hに相当する長さ。 -\item |\ascQ|\Means - 1\,true\,Qを和文スケール値で割った長さ。 - \footnote{命令名は“anti-scaled Q”の略。}% - 例えば、|\fontsize{10\ascQ}{16\trueH}| - で和文のサイズが10\,Qになる。% - \footnote{1.5c版で導入された |\jafontsize| 命令を用いて % - |\jafontsize{10trueQ}{16trueH}| としてもよい。} -\item |\ascpt|\Means - 1\,true\,ptを和文スケール値で割った長さ。 - 例えば、|\fontsize{9\ascpt}{13truept}| - で和文のサイズが9ポイントになる。 \item |\setxkanjiskip{|\Meta{長さ}|}|\Means 和欧文間空白の量を指定する。 {\pLaTeX}での % @@ -1718,21 +1813,6 @@ standard和文ドライバ(およびそれを継承するドライバ)では \item |\autospacing|\JSl|\noautospacing|\Means 和文間空白の挿入を有効/無効にする。 {\pLaTeX}の同名の命令と同等。 -\item |\jathinspace|\Means - 和欧文間空白を挿入する。 -\item |\>|\Means - (非数式モードで - \footnote{|\>| という命令名は、plain {\TeX}では数式中の空白 - ({\LaTeX}の |\:| と同等)を表す。 - このため、実際には{\LaTeX}でも |\>| は |\:| と同等の命令として - 定義されている。 - この「plain互換の |\>|」を利用したコードが影響を受けるのを避ける - ため、数式中では |\>| は従来通り |\:| と同等の動作を行う。}% - )和欧文間空白を挿入する。 - \Note |jaspace-cmd=false| 指定時は定義されない。% - \footnote{ただし、standard和文ドライバで自動的に読み込まれる - \Pkg{zxjatype}や\Pkg{bxcjkjatype}のパッケージは、 - それ自体が同様の機能の |\>| を提供することにも注意を要する。} \item |\jachar{|\Meta{文字1つ}|}|\Means 指定の文字を和文文字として(現在の和文フォントで)出力する。 \item |\jafontsize{|\Meta{フォントサイズ\xast}|}{|\Meta{行送り\xast}|}|\Means @@ -1746,6 +1826,12 @@ standard和文ドライバ(およびそれを継承するドライバ)では \item 欧文数式フォント命令での和文の連動\Means |\mathrm| で和文が「明朝」、 |\mathsf| および |\mathtt| で和文が「ゴシック」に指定される。 + \footnote{和文連動の対象となる欧文数式フォント命令を + \Pkg{bm}パッケージの |\bm| 命令の中で使う + (例えば |\bm{\mathsf{A}}| 等) + と正常に動作しないことが判明している。 + 暫定対処として、2.9b版以降では\Pkg{bm}パッケージが読み込まれて + いる場合には欧文数式フォント命令の和文連動が無効になる。}% \Note JSクラスとは異なり、連動の組合せは テキストと同一であることに注意。 \end{itemize} diff --git a/language/japanese/BX/bxjscls/bxjscls.dtx b/language/japanese/BX/bxjscls/bxjscls.dtx index 99eb85ec9e..d8708af2d9 100644 --- a/language/japanese/BX/bxjscls/bxjscls.dtx +++ b/language/japanese/BX/bxjscls/bxjscls.dtx @@ -33,7 +33,7 @@ % Copyright 1999-2016 Haruhiko Okumura % Copyright 2016-2023 Japanese TeX Development Community % -% Copyright 2013-2023 Takayuki YATO (aka. "ZR") +% Copyright 2013-2024 Takayuki YATO (aka. "ZR") % % \fi % \CheckSum{0} @@ -56,7 +56,9 @@ %<*driver> \ProvidesFile{bxjscls.dtx} % - [2023/07/17 v2.9 BXJS document classes] + [2024/01/22 v2.9b BXJS document classes] +% [2023/08/02 v2.9a BXJS document classes] +% [2023/07/17 v2.9 BXJS document classes] % [2023/07/01 v2.8b BXJS document classes] % [2023/06/20 v2.8a BXJS document classes] % [2023/06/14 v2.8 BXJS document classes] @@ -793,6 +795,34 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\bxjs@advance@qc} +% |\bxjs@advance@qc\CS{|\Meta{値}|}|\Means +% 擬似整数レジスタに値を加算する。 +% \begin{macrocode} +\def\bxjs@advance@qc#1#2{% + \begingroup + \@tempcnta=#1\relax \advance\@tempcnta by#2\relax + \global\chardef\bxjs@g@tmpa\@tempcnta + \endgroup \let#1\bxjs@g@tmpa} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bxjs@new@count} +% \begin{macro}{\bxjs@advance@count} +% {\eTeX}拡張が有効なら通常の整数レジスタ、 +% 無効なら擬似整数レジスタを用いる。 +% \begin{macrocode} +\ifjsWitheTeX + \let\bxjs@new@count\newcount + \def\bxjs@advance@count#1#2{\advance#1by#2\relax} +\else + \def\bxjs@new@count#1{\chardef#1\z@} + \let\bxjs@advance@count\bxjs@advance@qc +\fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% % \begin{macro}{\jsSetQHLength} % |\jsSetQHLength\CS{|\Meta{長さ式}|}|\Means % |\setlength| の変種で、通常の |calc| の長さ式の代わりに、 @@ -3583,7 +3613,7 @@ % % \begin{macrocode} \chardef\bxjs@periodchar=`\. -\bxjs@protected\def\bxjs@SE{% +\bxjs@robust@def\bxjs@SE{% \ifnum\spacefactor<\@m \spacefactor\@m \else \spacefactor\sfcode\bxjs@periodchar \fi} @@ -7615,9 +7645,9 @@ % \begin{macro}{\disallowoldfontcommands} % “二文字フォント命令”の使用に対して警告を出す。 % \begin{macrocode} -\newcommand*{\allowoldfontcommands}{% +\DeclareRobustCommand*{\allowoldfontcommands}{% \@jsc@warnoldfontcmdexceptiontrue} -\newcommand*{\disallowoldfontcommands}{% +\DeclareRobustCommand*{\disallowoldfontcommands}{% \@jsc@warnoldfontcmdexceptionfalse} % \end{macrocode} % \end{macro} @@ -9140,17 +9170,6 @@ % \end{macrocode} % % -% \paragraph{BXJS独自の追加処理 \ZRX} -% -% フックを実行する。 -% \begin{macrocode} -\bxjs@pre@jadriver@hook -% \end{macrocode} -% 和文ドライバのファイルを読み込む。 -% \begin{macrocode} -\input{bxjsja-\bxjs@jadriver.def} -% \end{macrocode} -% % \section{実験的コード} % % \begin{ZRnote} @@ -9164,11 +9183,359 @@ % exppl2eパッケージが読みこまれていない場合は通常版として動作しますので, % ここで終了します。 % +% 以上です。 +% +% \section{BXJS独自の追加処理 \ZRX} +% +% \paragraph{\textbackslash strong命令の補填} +% +% |fontspec| で提供される |\strong| 命令と |strongenv| 環境を +% 全てのエンジンで使えるようにする。 +% \Note この実装は特にエンジンや和文処理パッケージに依存しないはず +% であるが、現状ではstandard和文ドライバでの提供となっていて、 +% そこで有効化のオプションが定義されている。 +% ここでは |\js~| の名前で定義することにする。 +% +% \begin{macro}{\jsStrongText} +% 強調用の宣言型命令。 % \begin{macrocode} -% +\bxjs@robust@def\jsStrongText{\bxjs@strong@text}% % \end{macrocode} +% |fontspec| と互換の |\strongfontdeclare| 命令も提供する。 +% 既定の設定は |\bfseries|(太字)である。 +% \Note |\strongfontdeclare| は試験的機能とする。 +% \begin{macrocode} +\chardef\bxjs@strong@level=0 +\DeclareRobustCommand*\jsStrongDeclare[1]{% + \bxjs@set@array@from@clist{bxjs@strong}{#1}% + \chardef\bxjs@strong@level\z@} +\jsStrongDeclare{\bfseries} +\def\bxjs@strong@text{% + \bxjs@csletcs{bxjs@tmpa}{bxjs@strong/\the\bxjs@strong@level}% + \ifx\bxjs@tmpa\relax + \bxjs@advance@qc\bxjs@strong@level\m@ne \bxjs@strong@text + \else \bxjs@advance@qc\bxjs@strong@level\@ne \bxjs@tmpa + \fi} +% \end{macro} % -% 以上です。 +% \paragraph{共通命令の実装} +% +% |\jQ| 等の「単位」系の共通命令を実装する。 +% +% \begin{macro}{\bxjs@const@unit} +% 固定値の単位として使える制御綴を定義する。 +% +% {\eTeX}拡張が使える場合は、 +% 「|\dimexpr|外部寸法表記|\relax|」の形式 +% (これは内部値なので単位として使える) +% に展開されるマクロとして定義する。 +% \begin{macrocode} +\@onlypreamble\bxjs@const@unit +\@onlypreamble\bxjs@const@unit@a +\ifjsWitheTeX + \def\bxjs@const@unit#1#2#3{% + \protected\edef#1{\dimexpr\the\dimexpr#3\relax\relax}} +% \end{macrocode} +% {\eTeX}拡張が使えない場合は、何らかの寸法パラメタに値を保持する必要が +% あるが、レジスタは貴重なので代わりに +% 「ダミーのTFMを定義してその |\fontdimen| を使う」 +% というテクニックを用いる(アレ)。 +% \begin{macrocode} +\else + \let\bxjs@Ct\fontdimen \font\bxjs@Ut=cmtex9 at 0.98245pt + \bxjs@Ct8\bxjs@Ut=8sp \bxjs@Ct16\bxjs@Ut=\z@ + \def\bxjs@const@unit#1#2{% + \expandafter\bxjs@const@unit@a\csname bxjs@#2@\endcsname#1} + \def\bxjs@const@unit@a#1#2#3{% + \chardef#1\bxjs@Ct8\bxjs@Ut \bxjs@advance@qc#1\@ne \bxjs@Ct8\bxjs@Ut#1sp + \bxjs@Ct#1\bxjs@Ut=#3\relax \def#2{\bxjs@Ct#1\bxjs@Ut}} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\jQ} +% \begin{macro}{\jH} +% |\jQ| と |\jH| はともに0.25\,mmに等しい。 +% \begin{macrocode} +\bxjs@const@unit\jQ{jQ}{0.25mm} +\let\jH\jQ +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\trueQ} +% \begin{macro}{\trueH} +% |\trueQ| と |\trueH| はともに0.25\,true\,mmに等しい。 +% \begin{macrocode} +\ifjsc@mag + \@tempdimb=\jsBaseFontSize\relax + \edef\bxjs@tmpa{\strip@pt\@tempdimb}% + \@tempdima=2.5mm + \bxjs@invscale\@tempdima\bxjs@tmpa + \bxjs@const@unit\trueQ{trueQ}{\@tempdima} + \@tempdima=10pt + \bxjs@invscale\@tempdima\bxjs@tmpa + \bxjs@const@unit\bxjs@truept{truept}{\@tempdima} +\else \let\trueQ\jQ \let\bxjs@truept\p@ +\fi +\let\trueH\trueQ +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\ascQ} +% \begin{macro}{\ascpt} +% |\ascQ| は |\trueQ| を和文スケール値で割った値。 +% 例えば、|\fontsize{12\ascQ}{16\trueH}| とすると、 +% 和文が12Qになる。 +% +% 同様に、|\ascpt| は |truept| を和文スケールで割った値。 +% \begin{macrocode} +\@tempdima\trueQ \bxjs@invscale\@tempdima\jsScale +\bxjs@const@unit\ascQ{ascQ}{\@tempdima} +\@tempdima\bxjs@truept \bxjs@invscale\@tempdima\jsScale +\bxjs@const@unit\ascpt{ascpt}{\@tempdima} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\jafontsize} +% |\jafontsize{|\Meta{フォントサイズ}|}{|\Meta{行送り}|}|\Means +% 和文フォント規準で、すなわち、1\,zwが\Meta{フォントサイズ}に +% 等しくなるようにフォントサイズを指定する。 +% この命令の引数では、|Q|/|H| の単位が使用できる。 +% \begin{macrocode} +\DeclareRobustCommand*\jsJaFontSize[2]{% + \begingroup + \bxjs@jafontsize@a{#1}% + \@tempdimb\jsInverseScale\@tempdima + \bxjs@jafontsize@a{#2}% + \xdef\bxjs@g@tmpa{% + \noexpand\fontsize{\the\@tempdimb}{\the\@tempdima}}% + \endgroup\bxjs@g@tmpa} +\def\bxjs@jafontsize@a#1{% + \bxjs@parse@qh{#1}% + \ifx\bxjs@tmpb\relax \def\bxjs@tmpb{#1}\fi + \@defaultunits\@tempdima\bxjs@tmpb pt\relax\@nnil} +% \end{macrocode} +% \end{macro} +% +% 続いて、和文間空白・和欧文間空白関連の命令を実装する。 +% この実装はエンジンや和文処理パッケージに依存するが、 +% ここでは共通の基盤となる部分を実装する。 +% +% \begin{macrocode} +\def\bxjs@let@lenexpr{\edef} +% \end{macrocode} +% +% \begin{macro}{\bxjs@kanjiskip} +% 和文間空白の量を表すテキスト。 +% \begin{macrocode} +\def\bxjs@kanjiskip{0pt} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\jsSetKanjiSkip} +% 和文間空白の量を設定する。 +% \Note |\setkanjiskip| の実体。 +% \begin{macrocode} +\DeclareRobustCommand*\jsSetKanjiSkip[1]{% + \bxjs@let@lenexpr\bxjs@kanjiskip{#1}% + \bxjs@reset@kanjiskip} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\jsGetKanjiSkip} +% 和文間空白の量を表すテキストに展開する。 +% \Note |\getkanjiskip| の実体。 +% \begin{macrocode} +\newcommand*\jsGetKanjiSkip{% + \bxjs@kanjiskip} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ifbxjs@kanjiskip@enabled} +% 和文間空白の挿入が有効か。 +% \Note エンジン側の機能で制御する場合は、 +% このスイッチは常に真にしておく。 +% \begin{macrocode} +\newif\ifbxjs@kanjiskip@enabled \bxjs@kanjiskip@enabledtrue +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\jsEnableKanjiSkip} +% \begin{macro}{\jsDisableKanjiSkip} +% 和文間空白の挿入を有効/無効にする。 +% \Note {\pTeX}系のエンジンや |luatexja| のパッケージを使用する場合は +% それ自体がもつ制御機能を利用するため、これらの命令は使わない。 +% \begin{macrocode} +\bxjs@robust@def\jsEnableKanjiSkip{% + \bxjs@kanjiskip@enabledtrue + \bxjs@reset@kanjiskip} +\bxjs@robust@def\jsDisableKanjiSkip{% + \bxjs@kanjiskip@enabledfalse + \bxjs@reset@kanjiskip} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\bxjs@reset@kanjiskip} +% 現在の和文間空白の設定を実際に反映させる。 +% \begin{macrocode} +\bxjs@robust@def\bxjs@reset@kanjiskip{% + \ifbxjs@kanjiskip@enabled + \setlength{\@tempskipa}{\bxjs@kanjiskip}% + \else \@tempskipa\z@ + \fi + \jsApplyKanjiSkip\@tempskipa} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\jsApplyKanjiSkip} +% |\jsApplyKanjiSkip{|\Meta{グルー値}|}|\Means +% 和文間空白を実際に設定するためのエンジン依存のコード。 +% \begin{macrocode} +\let\jsApplyKanjiSkip\@gobble +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bxjs@xkanjiskip} +% \begin{macro}{\jsSetXKanjiSkip} +% \begin{macro}{\jsGetXKanjiSkip} +% \begin{macro}{\ifbxjs@xkanjiskip@enabled} +% \begin{macro}{\jsEnableXKanjiSkip} +% \begin{macro}{\jsDisableXKanjiSkip} +% \begin{macro}{\bxjs@reset@xkanjiskip} +% \begin{macro}{\jsApplyXKanjiSkip} +% 和欧文間空白について同様のものを用意する。 +% \begin{macrocode} +\def\bxjs@xkanjiskip{0pt} +\DeclareRobustCommand*\jsSetXKanjiSkip[1]{% + \bxjs@let@lenexpr\bxjs@xkanjiskip{#1}% + \bxjs@reset@xkanjiskip} +\newcommand*\jsGetXKanjiSkip{% + \bxjs@xkanjiskip} +\newif\ifbxjs@xkanjiskip@enabled \bxjs@xkanjiskip@enabledtrue +\bxjs@robust@def\jsEnableXKanjiSkip{% + \bxjs@xkanjiskip@enabledtrue + \bxjs@reset@xkanjiskip} +\bxjs@robust@def\jsDisableXKanjiSkip{% + \bxjs@xkanjiskip@enabledfalse + \bxjs@reset@xkanjiskip} +\bxjs@robust@def\bxjs@reset@xkanjiskip{% + \ifbxjs@xkanjiskip@enabled + \setlength{\@tempskipa}{\bxjs@xkanjiskip}% + \else \@tempskipa\z@ + \fi + \jsApplyXKanjiSkip\@tempskipa} +\let\jsApplyXKanjiSkip\@gobble +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% |\jsResetDimen| を用いて、フォントサイズが変更された時に +% 空白の量が追随するようにする。 +% \begin{macrocode} +\g@addto@macro\jsResetDimen{% + \bxjs@reset@kanjiskip + \bxjs@reset@xkanjiskip} +% \end{macrocode} +% +% 和文・和欧文間空白の初期値。 +% +% \begin{macrocode} +\AtEndOfPackage{% +\jsSetKanjiSkip{0pt plus.1\jsZw minus.01\jsZw}% +\ifx\jsDocClass\jsSlide \jsSetXKanjiSkip{0.1em}% +\else \jsSetXKanjiSkip{0.25em plus 0.15em minus 0.06em}% +\fi +} +% \end{macrocode} +% +% \paragraph{和文空白命令} +% \begin{macrocode} +\ifbxjs@jaspace@cmd +% \end{macrocode} +% +% \begin{macro}{\jaenspace} +% 半角幅の水平空き。 +% \begin{macrocode} + \def\jaenspace{\hskip.5\jsZw\relax} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\jathinspace} +% 和欧文間空白を入れるユーザ命令。 +% \begin{macrocode} + \def\jathinspace{\hskip\bxjs@xkanjiskip\relax} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\_} +% 全角空白文字1つからなる名前の制御綴。 +% |\zwspace| と等価になる。 +% \begin{macrocode} + \def\ {\zwspace} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\>} +% 非数式中では |\jathinspace| と等価になるように再定義する。 +% \Note 数式中では従来通り(|\:| と等価)。 +% \begin{macrocode} + \bxjs@protected\def\bxjs@choice@jathinspace{% + \relax\ifmmode \mskip\medmuskip + \else \jathinspace\ignorespaces + \fi} + \jsAtEndOfClass{% + \ifjsWitheTeX \let\>\bxjs@choice@jathinspace + \else \def\>{\protect\bxjs@choice@jathinspace}% + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\jaspace} +% |jlreq| クラスと互換の命令。 +% \begin{macrocode} + \DeclareRobustCommand*{\jaspace}[1]{% + \expandafter\ifx\csname bxjs@jaspace@@#1\endcsname\relax + \ClassError\bxjs@clsname + {Unknown jaspace: #1}{\@eha}% + \else + \csname bxjs@jaspace@@#1\endcsname + \fi} + \def\bxjs@jaspace@@zenkaku{\hskip 1\jsZw\relax} + \def\bxjs@jaspace@@nibu{\hskip .5\jsZw\relax} + \def\bxjs@jaspace@@shibu{\hskip .25\jsZw\relax} +% \end{macrocode} +% \end{macro} +% +% 終わり。 +% \begin{macrocode} +\fi +% \end{macrocode} +% +% \paragraph{和文ドライバ読込} +% +% フックを実行する。 +% \begin{macrocode} +\bxjs@pre@jadriver@hook +% \end{macrocode} +% 和文ドライバのファイルを読み込む。 +% \begin{macrocode} +\input{bxjsja-\bxjs@jadriver.def} +% \end{macrocode} +% +% おしまい。 +% \begin{macrocode} +% +% \end{macrocode} % %^^A//////////////////////////////////////////////////////// % \clearpage @@ -9989,55 +10356,6 @@ \fi % \end{macrocode} % -% \paragraph{和文空白命令} -% \begin{macrocode} -\ifbxjs@jaspace@cmd -% \end{macrocode} -% -% \begin{macro}{\jaenspace} -% 半角幅の水平空き。 -% \begin{macrocode} - \def\jaenspace{\hskip.5\jsZw\relax} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\jathinspace} -% 和欧文間空白を入れるユーザ命令。 -% \Note minimalではダミー定義。 -% \begin{macrocode} - \def\jathinspace{\hskip\z@skip} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\_} -% 全角空白文字1つからなる名前の制御綴。 -% |\zwspace| と等価になる。 -% \begin{macrocode} - \def\ {\zwspace} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\jaspace} -% |jlreq| クラスと互換の命令。 -% \begin{macrocode} - \DeclareRobustCommand*{\jaspace}[1]{% - \expandafter\ifx\csname bxjs@jaspace@@#1\endcsname\relax - \ClassError\bxjs@clsname - {Unknown jaspace: #1}{\@eha}% - \else - \csname bxjs@jaspace@@#1\endcsname - \fi} - \def\bxjs@jaspace@@zenkaku{\hskip 1\jsZw\relax} - \def\bxjs@jaspace@@nibu{\hskip .5\jsZw\relax} - \def\bxjs@jaspace@@shibu{\hskip .25\jsZw\relax} -% \end{macrocode} -% \end{macro} -% -% 終わり。 -% \begin{macrocode} -\fi -% \end{macrocode} -% % 以上で終わり。 % \begin{macrocode} % @@ -10053,9 +10371,6 @@ % 和文ファミリ連動 % \item |\mcfamily|/|\gtfamily| % \item |\textmc|/|\textgt| -% \item |\zw| -% \item |\jQ|/|\jH| -% \item |\trueQ|/|\trueH|/|\ascQ| % \item |\setkanjiskip|/|\getkanjiskip| % \item |\setxkanjiskip|/|\getxkanjiskip| % \item |\autospacing|/|\noautospacing| @@ -10187,6 +10502,10 @@ %^^A---------------- % \subsection{共通処理(1)} % +% \begin{macrocode} +\let\jafontsize\jsJaFontSize +% \end{macrocode} +% % \paragraph{jis2004パラメタ} % % |jis2004| パラメタが有効の場合は、グローバルオプションに |jis2004| @@ -10262,225 +10581,20 @@ % % \begin{macro}{\strong} % \begin{environment}{strongenv} -% |fontspec| で提供される |\strong| 命令と |strongenv| 環境を -% 全てのエンジンで使えるようにする。 -% \Note 既に利用可能である場合は何もしない。 +% 現在未定義(|fontspec| が未読込)である場合は、 +% クラス本体で定義した |\jsStrongText| を利用して定義する。 % \begin{macrocode} \ifbxjs@jp@strong@cmd\jsAtEndOfClass{% \ifx\strong\@undefined\ifx\strongenv\@undefined - \DeclareRobustCommand{\strongenv}{\bxjs@strong@font}% - \DeclareTextFontCommand{\strong}{\strongenv}% -% \end{macrocode} -% |fontspec| と互換の |\strongfontdeclare| 命令も提供する。 -% 既定の設定は |\bfseries|(太字)である。 -% \Note |\strongfontdeclare| は試験的機能とする。 -% \begin{macrocode} - \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}% + \newcommand*{\strongenv}{\jsStrongText}% + \DeclareTextFontCommand{\strong}{\jsStrongText}% + \newcommand*{\strongfontdeclare}{\jsStrongDeclare}% \fi\fi }\fi % \end{macrocode} % \end{environment} % \end{macro} % -% \paragraph{共通命令の実装} -% -% |\jQ| 等の「単位」系の共通命令を実装する。 -% まず{$\varepsilon$-\TeX}拡張が使えるか検査する。 -% \begin{macrocode} -\ifjsWitheTeX -% \end{macrocode} -% 使える場合は、「|\dimexpr|外部寸法表記|\relax|」の形式 -% (これは内部値なので単位として使える)で各命令定義する。 -% -% \begin{macro}{\jQ} -% \begin{macro}{\jH} -% |\jQ| と |\jH| はともに0.25\,mmに等しい。 -% \begin{macrocode} - \@tempdima=0.25mm - \protected\edef\jQ{\dimexpr\the\@tempdima\relax} - \let\jH\jQ -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\trueQ} -% \begin{macro}{\trueH} -% |\trueQ| と |\trueH| はともに0.25\,true\,mmに等しい。 -% \begin{macrocode} - \ifjsc@mag - \@tempdimb=\jsBaseFontSize\relax - \edef\bxjs@tmpa{\strip@pt\@tempdimb}% - \@tempdima=2.5mm - \bxjs@invscale\@tempdima\bxjs@tmpa - \protected\edef\trueQ{\dimexpr\the\@tempdima\relax} - \@tempdima=10pt - \bxjs@invscale\@tempdima\bxjs@tmpa - \protected\edef\bxjs@truept{\dimexpr\the\@tempdima\relax} - \else \let\trueQ\jQ \let\bxjs@truept\p@ - \fi - \let\trueH\trueQ -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\ascQ} -% \begin{macro}{\ascpt} -% |\ascQ| は |\trueQ| を和文スケール値で割った値。 -% 例えば、|\fontsize{12\ascQ}{16\trueH}| とすると、 -% 和文が12Qになる。 -% -% 同様に、|\ascpt| は |truept| を和文スケールで割った値。 -% \begin{macrocode} - \@tempdima\trueQ \bxjs@invscale\@tempdima\jsScale - \protected\edef\ascQ{\dimexpr\the\@tempdima\relax} - \@tempdima\bxjs@truept \bxjs@invscale\@tempdima\jsScale - \protected\edef\ascpt{\dimexpr\the\@tempdima\relax} -\fi -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\jafontsize} -% |\jafontsize{|\Meta{フォントサイズ}|}{|\Meta{行送り}|}|\Means -% 和文フォント規準で、すなわち、1\,zwが\Meta{フォントサイズ}に -% 等しくなるようにフォントサイズを指定する。 -% この命令の引数では、|Q|/|H| の単位が使用できる。 -% \begin{macrocode} -\def\jafontsize#1#2{% - \begingroup - \bxjs@jafontsize@a{#1}% - \@tempdimb\jsInverseScale\@tempdima - \bxjs@jafontsize@a{#2}% - \xdef\bxjs@g@tmpa{% - \noexpand\fontsize{\the\@tempdimb}{\the\@tempdima}}% - \endgroup\bxjs@g@tmpa} -\def\bxjs@jafontsize@a#1{% - \bxjs@parse@qh{#1}% - \ifx\bxjs@tmpb\relax \def\bxjs@tmpb{#1}\fi - \@defaultunits\@tempdima\bxjs@tmpb pt\relax\@nnil} -% \end{macrocode} -% \end{macro} -% -% 続いて、和文間空白・和欧文間空白関連の命令を実装する。 -% (エンジン依存のコード。) -% -% \begin{macro}{\bxjs@kanjiskip} -% 和文間空白の量を表すテキスト。 -% \begin{macrocode} -\def\bxjs@kanjiskip{0pt} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\setkanjiskip} -% 和文間空白の量を設定する。 -% \begin{macrocode} -\newcommand*\setkanjiskip[1]{% - \bxjs@let@lenexpr\bxjs@kanjiskip{#1}% - \bxjs@reset@kanjiskip} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\getkanjiskip} -% 和文間空白の量を表すテキストに展開する。 -% \begin{macrocode} -\newcommand*\getkanjiskip{% - \bxjs@kanjiskip} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\ifbxjs@kanjiskip@enabled} -% 和文間空白の挿入が有効か。 -% ただし{\pTeX}では自身の |\(no)autospacing| での制御を -% 用いるのでこの変数は常に真とする。 -% \begin{macrocode} -\newif\ifbxjs@kanjiskip@enabled \bxjs@kanjiskip@enabledtrue -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\bxjs@enable@kanjiskip} -% \begin{macro}{\bxjs@disable@kanjiskip} -% 和文間空白の挿入を有効/無効にする。({\pTeX}以外) -% \begin{macrocode} -\bxjs@robust@def\bxjs@enable@kanjiskip{% - \bxjs@kanjiskip@enabledtrue - \bxjs@reset@kanjiskip} -\bxjs@robust@def\bxjs@disable@kanjiskip{% - \bxjs@kanjiskip@enabledfalse - \bxjs@reset@kanjiskip} -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\bxjs@reset@kanjiskip} -% 現在の和文間空白の設定を実際にエンジンに反映させる。 -% \begin{macrocode} -\bxjs@robust@def\bxjs@reset@kanjiskip{% - \ifbxjs@kanjiskip@enabled - \setlength{\@tempskipa}{\bxjs@kanjiskip}% - \else \@tempskipa\z@ - \fi - \bxjs@apply@kanjiskip} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\bxjs@xkanjiskip} -% \begin{macro}{\setxkanjiskip} -% \begin{macro}{\getxkanjiskip} -% \begin{macro}{\ifbxjs@xkanjiskip@enabled} -% \begin{macro}{\bxjs@enable@xkanjiskip} -% \begin{macro}{\bxjs@disable@xkanjiskip} -% \begin{macro}{\bxjs@reset@xkanjiskip} -% 和欧文間空白について同様のものを用意する。 -% \begin{macrocode} -\def\bxjs@xkanjiskip{0pt} -\newcommand*\setxkanjiskip[1]{% - \bxjs@let@lenexpr\bxjs@xkanjiskip{#1}% - \bxjs@reset@xkanjiskip} -\newcommand*\getxkanjiskip{% - \bxjs@xkanjiskip} -\newif\ifbxjs@xkanjiskip@enabled \bxjs@xkanjiskip@enabledtrue -\bxjs@robust@def\bxjs@enable@xkanjiskip{% - \bxjs@xkanjiskip@enabledtrue - \bxjs@reset@xkanjiskip} -\bxjs@robust@def\bxjs@disable@xkanjiskip{% - \bxjs@xkanjiskip@enabledfalse - \bxjs@reset@xkanjiskip} -\bxjs@robust@def\bxjs@reset@xkanjiskip{% - \ifbxjs@xkanjiskip@enabled - \setlength{\@tempskipa}{\bxjs@xkanjiskip}% - \else \@tempskipa\z@ - \fi - \bxjs@apply@xkanjiskip} -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% -% |\jsResetDimen| を用いて、フォントサイズが変更された時に -% 空白の量が追随するようにする。 -% \begin{macrocode} -\g@addto@macro\jsResetDimen{% - \bxjs@reset@kanjiskip - \bxjs@reset@xkanjiskip} -\let\bxjs@apply@kanjiskip\relax -\let\bxjs@apply@xkanjiskip\relax -% \end{macrocode} -% % \paragraph{和文フォント指定の扱い} % % standard和文ドライバでは |\jsJaFont| の値を和文フォントの @@ -10743,10 +10857,14 @@ % \paragraph{共通命令の実装} % % \begin{macrocode} -\def\bxjs@apply@kanjiskip{% - \kanjiskip\@tempskipa} -\def\bxjs@apply@xkanjiskip{% - \xkanjiskip\@tempskipa} +\newcommand*{\setkanjiskip}{\jsSetKanjiSkip} +\newcommand*{\getkanjiskip}{\jsGetKanjiSkip} +\def\jsApplyKanjiSkip#1{% + \kanjiskip=#1\relax} +\newcommand*{\setxkanjiskip}{\jsSetXKanjiSkip} +\newcommand*{\getxkanjiskip}{\jsGetXKanjiSkip} +\def\jsApplyXKanjiSkip#1{% + \xkanjiskip=#1\relax} % \end{macrocode} % % |\jaJaChar| のサブマクロ。 @@ -11005,9 +11123,20 @@ \DeclareMathAlphabet{\mathgt}{\jsc@JYn}{gt}{m}{n} \g@addto@macro\bxjs@begin@document@hook{% \ifx\reDeclareMathAlphabet\@undefined\else +% \end{macrocode} +% |\reDeclareMathAlphabet| を適用した数式英字フォント命令は{\LaTeX}の +% 通常の命令とは定義文の形が異なる。 +% このため |bm| パッケージを読み込んで |\bm{\mathrm{A}}| を +% 実行するとエラーが発生する。 +% これを回避するための暫定対応として、|bm| が読み込まれた場合は +% 数式英字フォントの和文連動を無効にする。 +% \TODO ユーザが数式英字フォントの和文連動を制御できるようにする。 +% \begin{macrocode} + \@ifpackageloaded{bm}{}{%else \reDeclareMathAlphabet{\mathrm}{\@mathrm}{\@mathmc}% \reDeclareMathAlphabet{\mathbf}{\@mathbf}{\@mathgt}% \reDeclareMathAlphabet{\mathsf}{\@mathsf}{\@mathgt}% + }% \fi} \fi % \end{macrocode} @@ -11095,17 +11224,21 @@ \ifx\CJKecglue\@undefined \def\CJKtilde{\CJK@global\def~{\CJKecglue\ignorespaces}} \fi -\let\autospacing\bxjs@enable@kanjiskip -\let\noautospacing\bxjs@disable@kanjiskip +\newcommand*{\setkanjiskip}{\jsSetKanjiSkip} +\newcommand*{\getkanjiskip}{\jsGetKanjiSkip} +\newcommand*{\autospacing}{\jsEnableKanjiSkip} +\newcommand*{\noautospacing}{\jsDisableKanjiSkip} \protected\def\bxjs@CJKglue{\hskip\jsKanjiSkip} -\def\bxjs@apply@kanjiskip{% - \jsKanjiSkip\@tempskipa +\def\jsApplyKanjiSkip#1{% + \jsKanjiSkip=#1\relax \let\CJKglue\bxjs@CJKglue} -\let\autoxspacing\bxjs@enable@xkanjiskip -\let\noautoxspacing\bxjs@disable@xkanjiskip +\newcommand*{\setxkanjiskip}{\jsSetXKanjiSkip} +\newcommand*{\getxkanjiskip}{\jsGetXKanjiSkip} +\newcommand*{\autoxspacing}{\jsEnableXKanjiSkip} +\newcommand*{\noautoxspacing}{\jsDisableXKanjiSkip} \protected\def\bxjs@CJKecglue{\hskip\jsXKanjiSkip} -\def\bxjs@apply@xkanjiskip{% - \jsXKanjiSkip\@tempskipa +\def\jsApplyXKanjiSkip#1{% + \jsXKanjiSkip=#1\relax \let\CJKecglue\bxjs@CJKecglue} % \end{macrocode} % @@ -11241,17 +11374,21 @@ \ifx\CJKecglue\@undefined \def\CJKtilde{\CJK@global\def~{\CJKecglue\ignorespaces}} \fi -\let\autospacing\bxjs@enable@kanjiskip -\let\noautospacing\bxjs@disable@kanjiskip +\newcommand*{\setkanjiskip}{\jsSetKanjiSkip} +\newcommand*{\getkanjiskip}{\jsGetKanjiSkip} +\newcommand*{\autospacing}{\jsEnableKanjiSkip} +\newcommand*{\noautospacing}{\jsDisableKanjiSkip} \protected\def\bxjs@CJKglue{\hskip\jsKanjiSkip} -\def\bxjs@apply@kanjiskip{% - \jsKanjiSkip\@tempskipa +\def\jsApplyKanjiSkip#1{% + \jsKanjiSkip=#1\relax \xeCJKsetup{CJKglue={\bxjs@CJKglue}}} -\let\autoxspacing\bxjs@enable@xkanjiskip -\let\noautoxspacing\bxjs@disable@xkanjiskip +\newcommand*{\setxkanjiskip}{\jsSetXKanjiSkip} +\newcommand*{\getxkanjiskip}{\jsGetXKanjiSkip} +\newcommand*{\autoxspacing}{\jsEnableXKanjiSkip} +\newcommand*{\noautoxspacing}{\jsDisableXKanjiSkip} \protected\def\bxjs@CJKecglue{\hskip\jsXKanjiSkip} -\def\bxjs@apply@xkanjiskip{% - \jsXKanjiSkip\@tempskipa +\def\jsApplyXKanjiSkip#1{% + \jsXKanjiSkip=#1\relax \xeCJKsetup{CJKecglue={\bxjs@CJKecglue}}} % \end{macrocode} % @@ -11482,6 +11619,10 @@ % \paragraph{共通命令の実装} % % \begin{macrocode} +\newcommand*{\setkanjiskip}{\jsSetKanjiSkip} +\newcommand*{\getkanjiskip}{\jsGetKanjiSkip} +\newcommand*{\setxkanjiskip}{\jsSetXKanjiSkip} +\newcommand*{\getxkanjiskip}{\jsGetXKanjiSkip} \protected\def\autospacing{% \ltjsetparameter{autospacing=true}} \protected\def\noautospacing{% @@ -11490,10 +11631,10 @@ \ltjsetparameter{autoxspacing=true}} \protected\def\noautoxspacing{% \ltjsetparameter{autoxspacing=false}} -\def\bxjs@apply@kanjiskip{% - \ltjsetparameter{kanjiskip={\@tempskipa}}} -\def\bxjs@apply@xkanjiskip{% - \ltjsetparameter{xkanjiskip={\@tempskipa}}} +\def\jsApplyKanjiSkip#1{% + \ltjsetparameter{kanjiskip={#1}}} +\def\jsApplyXKanjiSkip#1{% + \ltjsetparameter{xkanjiskip={#1}}} % \end{macrocode} % % |\jachar| のサブマクロの実装。 @@ -11557,33 +11698,6 @@ % \end{macro} % \end{macro} % -% \paragraph{和文空白命令} -% \begin{macro}{\>} -% 非数式中では |\jathinspace| と等価になるように再定義する。 -% \Note 数式中では従来通り(|\:| と等価)。 -% \begin{macrocode} -\ifbxjs@jaspace@cmd - \bxjs@protected\def\bxjs@choice@jathinspace{% - \relax\ifmmode \mskip\medmuskip - \else \jathinspace\ignorespaces - \fi} - \jsAtEndOfClass{% - \ifjsWitheTeX \let\>\bxjs@choice@jathinspace - \else \def\>{\protect\bxjs@choice@jathinspace}% - \fi} -\fi -% \end{macrocode} -% \end{macro} -% -% \paragraph{和文・和欧文間空白の初期値} -% -% \begin{macrocode} -\setkanjiskip{0pt plus.1\jsZw minus.01\jsZw} -\ifx\jsDocClass\jsSlide \setxkanjiskip{0.1em} -\else \setxkanjiskip{0.25em plus 0.15em minus 0.06em} -\fi -% \end{macrocode} -% % 以上で終わり。 % % \begin{macrocode} diff --git a/language/japanese/BX/bxjscls/bxjscls.pdf b/language/japanese/BX/bxjscls/bxjscls.pdf index 3428f6592e..81899778a2 100644 Binary files a/language/japanese/BX/bxjscls/bxjscls.pdf and b/language/japanese/BX/bxjscls/bxjscls.pdf differ -- cgit v1.2.3