From c71ccc0e7d728e6bc090b846fc58559651e3f549 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 14 Jun 2017 21:15:05 +0000 Subject: bxjscls (14jun17) git-svn-id: svn://tug.org/texlive/trunk@44594 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx | 240 ++++++++++++++++++--- 1 file changed, 211 insertions(+), 29 deletions(-) (limited to 'Master/texmf-dist/source/latex/bxjscls') 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} % - [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} % -- cgit v1.2.3