summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx')
-rw-r--r--Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx240
1 files changed, 211 insertions, 29 deletions
diff --git a/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx b/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx
index 4498ec730aa..a0abe6479db 100644
--- a/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx
+++ b/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx
@@ -67,7 +67,8 @@
%<*driver>
\ProvidesFile{bxjscls.dtx}
%</driver>
- [2017/04/01 v1.5b BXJS document classes]
+ [2017/06/10 v1.5c BXJS document classes]
+% [2017/04/01 v1.5b BXJS document classes]
% [2017/03/14 v1.5a BXJS document classes]
% [2017/03/11 v1.5 BXJS document classes]
% based on jsclasses [2017/03/05]
@@ -407,6 +408,33 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\bxjs@cslet}
+% |\bxjs@cslet{|\Meta{名前1}|}\制御綴|\Means
+% \begin{macrocode}
+\def\bxjs@cslet#1{%
+ \expandafter\let\csname#1\endcsname}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@csletcs}
+% |\bxjs@csletcs{|\Meta{名前1}|}{|\Meta{名前2}|}|\Means
+% \begin{macrocode}
+\def\bxjs@csletcs#1#2{%
+ \expandafter\let\csname#1\expandafter\endcsname\csname#2\endcsname}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@catopt}
+% |\bxjs@catopt{|\Meta{文字列1}|}{|\Meta{文字列2}|}|\Means
+% 2つの文字列を |,| で繋いだ文字列。
+% ただし片方が空の場合は |,| を入れない。
+% 完全展開可能。
+% \begin{macrocode}
+\def\bxjs@catopt#1#2{%
+ #1\if\relax#1\relax\else\if\relax#2\relax\else,\fi\fi#2}
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\jsAtEndOfClass}
% このクラスの読込終了時に対するフック。
% (補助パッケージ中で用いられる。)
@@ -899,12 +927,12 @@
% \end{macrocode}
% \end{macro}
%
-% |fancyhdr| オプションの処理。
+% |enablejfam| オプションの処理。
% \begin{macrocode}
\def\bxjs@kv@enablejfam@true{\let\bxjs@enablejfam=t}
\def\bxjs@kv@enablejfam@false{\let\bxjs@enablejfam=f}
\def\bxjs@kv@enablejfam@default{\let\bxjs@enablejfam\@undefined}
-\define@key{bxjs}{enablejfam}{%
+\define@key{bxjs}{enablejfam}[true]{%
\bxjs@set@keyval{enablejfam}{#1}{}}
% \end{macrocode}
%
@@ -1588,7 +1616,7 @@
% \begin{macrocode}
\let\bxjs@kv@fancyhdr@true\bxjs@fancyhdrtrue
\let\bxjs@kv@fancyhdr@false\bxjs@fancyhdrfalse
-\define@key{bxjs}{fancyhdr}{%
+\define@key{bxjs}{fancyhdr}[true]{%
\bxjs@set@keyval{fancyhdr}{#1}{}}
% \end{macrocode}
%
@@ -1687,7 +1715,7 @@
\newif\ifbxjs@whole@zw@lines \bxjs@whole@zw@linestrue
\let\bxjs@kv@wholezwlines@true\bxjs@whole@zw@linestrue
\let\bxjs@kv@wholezwlines@false\bxjs@whole@zw@linesfalse
-\define@key{bxjs}{whole-zw-lines}{\bxjs@set@keyval{wholezwlines}{#1}{}}
+\define@key{bxjs}{whole-zw-lines}[true]{\bxjs@set@keyval{wholezwlines}{#1}{}}
% \end{macrocode}
% \end{macro}
%
@@ -1697,7 +1725,7 @@
\newif\ifbxjs@xkanjiskip@cmd \bxjs@xkanjiskip@cmdtrue
\let\bxjs@kv@xkanjiskipcmd@true\bxjs@xkanjiskip@cmdtrue
\let\bxjs@kv@xkanjiskipcmd@false\bxjs@xkanjiskip@cmdfalse
-\define@key{bxjs}{xkanjiskip-cmd}{\bxjs@set@keyval{xkanjiskipcmd}{#1}{}}
+\define@key{bxjs}{xkanjiskip-cmd}[true]{\bxjs@set@keyval{xkanjiskipcmd}{#1}{}}
% \end{macrocode}
% \end{macro}
%
@@ -1707,7 +1735,7 @@
\newif\ifbxjs@hyperref@enc \bxjs@hyperref@enctrue
\let\bxjs@kv@hyperrefenc@true\bxjs@hyperref@enctrue
\let\bxjs@kv@hyperrefenc@false\bxjs@hyperref@encfalse
-\define@key{bxjs}{hyperref-enc}{\bxjs@set@keyval{hyperrefenc}{#1}{}}
+\define@key{bxjs}{hyperref-enc}[true]{\bxjs@set@keyval{hyperrefenc}{#1}{}}
% \end{macrocode}
% \end{macro}
%
@@ -7180,6 +7208,16 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\jsInverseScale}
+% |\jsScale| の逆数。
+% \Note |\CS=\jsInverseScale\CS| は |\bxjs@invscale\CS\jsScale|
+% よりも精度が劣るが処理が軽い。
+% \begin{macrocode}
+\@tempdima\p@ \bxjs@invscale\@tempdima\jsScale
+\edef\jsInverseScale{\strip@pt\@tempdima}
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\jsLetHeadChar}
% |\jsLetHeadChar\CS{|\Meta{トークン列}|}|\Means
% トークン列の先頭の文字を抽出し、|\CS| をその文字トークン
@@ -7747,6 +7785,59 @@
\bxjs@simplejasetupfalse
% \end{macrocode}
%
+% \paragraph{japaramオプションの処理}
+%
+% |japaram| の値をkey-valueリストとして解釈する。
+% keyvalのファミリは |bxjsStd| とする。
+%
+% \begin{macro}{\bxjs@jp@jismmiv}
+% 2004JIS字形を優先させるか。
+% \begin{macrocode}
+\newif\ifbxjs@jp@jismmiv
+% \end{macrocode}
+% \end{macro}
+%
+% |jis2004| オプションの処理。
+% \begin{macrocode}
+\bxjs@cslet{bxjs@kv@jis2004@true}\bxjs@jp@jismmivtrue
+\bxjs@cslet{bxjs@kv@jis2004@false}\bxjs@jp@jismmivfalse
+\define@key{bxjsStd}{jis2004}[true]{%
+ \bxjs@set@keyval{jis2004}{#1}{}}
+% \end{macrocode}
+%
+% \begin{macro}{\bxjs@jp@font}
+% フォントパッケージの追加オプション。
+% \begin{macrocode}
+\let\bxjs@jp@font\@empty
+% \end{macrocode}
+% \end{macro}
+%
+% |jis2004| オプションの処理。
+% \begin{macrocode}
+\define@key{bxjsStd}{font}{%
+ \edef\bxjs@jp@font{#1}}
+% \end{macrocode}
+%
+% 実際の |japaram| の値を適用する。
+% \begin{macrocode}
+\def\bxjs@next#1{\bxjs@safe@setkeys{bxjsStd}{#1}}
+\expandafter\bxjs@next\expandafter{\jsJaParam}
+% \end{macrocode}
+%
+% \paragraph{jis2004パラメタ}
+%
+% |jis2004| パラメタが有効の場合は、グローバルオプションに |jis2004|
+% を追加する。
+% \Note |otf| や |luatexja-preset| 等のパッケージがこのオプションを
+% 利用する。
+% \begin{macrocode}
+\ifbxjs@jp@jismmiv
+ \g@addto@macro\@classoptionslist{,jis2004}
+% \@ifpackagewith 判定への対策
+ \PassOptionsToPackage{jis2004}{otf}
+\fi
+% \end{macrocode}
+%
% \paragraph{共通命令の実装}
%
% |\jQ| 等の「単位」系の共通命令を実装する。
@@ -7805,6 +7896,75 @@
% \end{macro}
% \end{macro}
%
+% \begin{macro}{\jsSetQHLength}
+% |\jsSetQHLength\CS{|\Meta{長さ式}|}|\Means
+% |\setlength| の変種で、通常の |calc| の長さ式の代わりに、
+% \Meta{実数}|Q|・\Meta{実数}|H|・\Meta{実数}|trueQ|・\Meta{実数}|trueH|
+% が記述できる。
+% \begin{macrocode}
+\def\jsSetQHLength#1#2{%
+ \begingroup
+ \bxjs@parse@qh{#2}%
+ \ifx\bxjs@tmpb\relax \setlength\@tempdima{#2}%
+ \else \@tempdima\bxjs@tmpb\relax
+ \fi
+ \xdef\bxjs@g@tmpa{\the\@tempdima}%
+ \endgroup
+ #1=\bxjs@g@tmpa\relax}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@parse@qh}
+% |jsSetQHLength| の下請け。
+% |#1| が |Q|/|H|/|trueQ|/|trueH| で終わる場合、
+% |\bxjs@tmpb| にそれに等しい寸法の表現を返す。
+% それ以外では、|\bxjs@tmpb| は |\relax| になる。
+% \begin{macrocode}
+\if j\jsEngine
+% \end{macrocode}
+% {(u)\pLaTeX}ではこの処理は不要なので無効化する。
+% \begin{macrocode}
+\def\bxjs@parse@qh#1{%
+ \let\bxjs@tmpb\relax}
+\else
+\def\bxjs@parse@qh#1{%
+ \def\bxjs@tmpa{#1}\let\bxjs@tmpb\relax
+ \bxjs@parse@qh@a{trueQ}\trueQ
+ \bxjs@parse@qh@a{trueH}\trueH
+ \bxjs@parse@qh@a{Q}\jQ
+ \bxjs@parse@qh@a{H}\jH}
+\def\bxjs@parse@qh@a#1#2{%
+ \ifx\bxjs@tmpb\relax
+ \def\bxjs@next##1#1\@nil##2\@nnil{\bxjs@parse@qh@b{##1}{##2}}%
+ \expandafter\bxjs@next\bxjs@tmpa\@nil#1\@nil\@nnil{#2}%
+ \fi}
+\def\bxjs@parse@qh@b#1#2#3{%
+ \ifx\@nnil#2\@nnil\else \def\bxjs@tmpb{#1#3}\fi}
+\fi
+% \end{macrocode}
+% \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}
+%
% 続いて、和文間空白・和欧文間空白関連の命令を実装する。
% (エンジン依存のコード。)
%
@@ -7976,8 +8136,13 @@
\loop\if@tempswa
\read\@inputcheck to\bxjs@tmpa
\expandafter\bxjs@get@ke@a\bxjs@tmpa\@nil kanjiEmbed \@nil\@nnil
- \ifx\bxjs@tmpa\relax\else
- \global\let\bxjs@g@tmpa\bxjs@tmpa
+ \ifx\bxjs@tmpb\relax\else
+ \global\let\bxjs@g@tmpa\bxjs@tmpb
+ \@tempswafalse
+ \fi
+ \expandafter\bxjs@get@ke@b\bxjs@tmpa\@nil jaEmbed \@nil\@nnil
+ \ifx\bxjs@tmpb\relax\else
+ \global\let\bxjs@g@tmpa\bxjs@tmpb
\@tempswafalse
\fi
\ifeof\@inputcheck \@tempswafalse \fi
@@ -7988,8 +8153,13 @@
}
\@onlypreamble\bxjs@get@ke@a
\def\bxjs@get@ke@a#1kanjiEmbed #2\@nil#3\@nnil{%
- \ifx$#1$\def\bxjs@tmpa{#2}%
- \else \let\bxjs@tmpa\relax
+ \ifx$#1$\def\bxjs@tmpb{#2}%
+ \else \let\bxjs@tmpb\relax
+ \fi}
+\@onlypreamble\bxjs@get@ke@b
+\def\bxjs@get@ke@b#1jaEmbed #2\@nil#3\@nnil{%
+ \ifx$#1$\def\bxjs@tmpb{#2}%
+ \else \let\bxjs@tmpb\relax
\fi}
% \end{macrocode}
% \end{macro}
@@ -8142,6 +8312,16 @@
\fi
% \end{macrocode}
%
+% \paragraph{jis2004パラメタ}
+%
+% |pxchfon| と |pxbabel| では2004JISを指定するオプションの
+% 名が |prefer2004jis| である。
+% \begin{macrocode}
+\ifbxjs@jp@jismmiv
+ \PassOptionsToPackage{prefer2004jis}{pxchfon}
+ \PassOptionsToPackage{prefer2004jis}{pxbabel}
+\fi
+% \end{macrocode}
%
% \paragraph{和文フォント指定の扱い}
%
@@ -8149,6 +8329,8 @@
% |\jsJaFont| が |auto| の場合は何もする必要がない。
% 無指定でも |auto| でもない場合は、|\jsJaFont| をオプションに
% して |pxchfon| パッケージを読み込む。
+% ここで、和文ドライバパラメタ |font| が指定されいる場合は、
+% その値を |pxchfon| のオプションに追加する。
% \begin{macrocode}
\let\bxjs@tmpa\jsJaFont
\ifx\bxjs@tmpa\bxjs@@auto
@@ -8156,11 +8338,11 @@
\else\ifx\bxjs@tmpa\bxjs@@noEmbed
\def\bxjs@tmpa{noembed}
\fi\fi
-\ifx\jsJaFont\@empty\else
- \edef\bxjs@nxt{%
- \noexpand\RequirePackage[\jsJaFont]
- {pxchfon}[2010/05/12]}% v0.5
- \bxjs@nxt
+\edef\bxjs@tmpa{\bxjs@catopt\bxjs@tmpa\bxjs@jp@font}
+\ifx\bxjs@tmpa\@empty\else
+ \edef\bxjs@next{%
+ \noexpand\RequirePackage[\bxjs@tmpa]{pxchfon}[2010/05/12]% v0.5
+ }\bxjs@next
\fi
% \end{macrocode}
%
@@ -8274,11 +8456,11 @@
% スケール値(|\jsScale|)の反映は bxcjkjatype の側で行われる。
% \begin{macrocode}
\bxjs@adjust@jafont{f}
-\edef\bxjs@nxt{%
- \noexpand\RequirePackage[%
- \ifx\bxjs@tmpa\@empty\else \bxjs@tmpa,\fi
- whole,autotilde]{bxcjkjatype}[2013/10/15]}% v0.2c
-\bxjs@nxt
+\edef\bxjs@tmpa{\bxjs@catopt\bxjs@tmpa\bxjs@jp@font}
+\edef\bxjs@tmpa{\bxjs@catopt\bxjs@tmpa{whole,autotilde}}
+\edef\bxjs@next{%
+ \noexpand\RequirePackage[\bxjs@tmpa]{bxcjkjatype}[2013/10/15]% v0.2c
+}\bxjs@next
\bxjs@cjk@loaded
% \end{macrocode}
%
@@ -8405,14 +8587,14 @@
% 非指定の場合はIPAexフォントを使用する。
% \begin{macrocode}
\bxjs@adjust@jafont{f}
+\edef\bxjs@tmpa{\bxjs@catopt\bxjs@tmpa\bxjs@jp@font}
\ifx\bxjs@tmpa\@empty
\setCJKmainfont[BoldFont=IPAexGothic]{IPAexMincho}
\setCJKsansfont[BoldFont=IPAexGothic]{IPAexGothic}
\else
- \edef\bxjs@nxt{%
- \noexpand\RequirePackage[\bxjs@tmpa]%
- {zxjafont}[2013/01/28]}% v0.2a
- \bxjs@nxt
+ \edef\bxjs@next{%
+ \noexpand\RequirePackage[\bxjs@tmpa]{zxjafont}[2013/01/28]}% v0.2a
+ }\bxjs@next
\fi
% \end{macrocode}
%
@@ -8566,15 +8748,15 @@
\ifx\bxjs@tmpa\bxjs@@noEmbed
\def\bxjs@tmpa{noembed}
\fi
+\edef\bxjs@tmpa{\bxjs@catopt\bxjs@tmpa\bxjs@jp@font}
\ifx\bxjs@tmpa\@empty
\defaultjfontfeatures{ Kerning=Off }
\setmainjfont[BoldFont=IPAexGothic,JFM=ujis]{IPAexMincho}
\setsansjfont[BoldFont=IPAexGothic,JFM=ujis]{IPAexGothic}
\else
- \edef\bxjs@nxt{%
- \noexpand\RequirePackage[\bxjs@tmpa]
- {luatexja-preset}}%
- \bxjs@nxt
+ \edef\bxjs@next{%
+ \noexpand\RequirePackage[\bxjs@tmpa]{luatexja-preset}%
+ }\bxjs@next
\fi
% \end{macrocode}
%