summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2024-01-30 21:07:59 +0000
committerKarl Berry <karl@freefriends.org>2024-01-30 21:07:59 +0000
commita49f9d08021990c92110e43b4dc073e3638c366b (patch)
treed58e4dde6100231cddf34ce2aef465398f63b73a /Master/texmf-dist/source
parentfd74b232df8bff4305cfbc279c83539b1e955959 (diff)
bxjscls (29jan24)
git-svn-id: svn://tug.org/texlive/trunk@69637 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source')
-rw-r--r--Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx776
1 files changed, 445 insertions, 331 deletions
diff --git a/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx b/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx
index 99eb85ec9ef..d8708af2d9f 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-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}
%</driver>
- [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}
-%</class>
+\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}
+%</class>
+% \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}
%</minimal>
@@ -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}