From 4f3140ae411ed163ddb5a960b9827e4f1b53ebec Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Tue, 30 Jan 2018 00:02:50 +0000
Subject: bxjscls (29jan18)

git-svn-id: svn://tug.org/texlive/trunk@46475 c570f23f-e606-0410-a88d-b1316a301751
---
 Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx | 93 +++++++++++++++++++---
 1 file changed, 80 insertions(+), 13 deletions(-)

(limited to 'Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx')

diff --git a/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx b/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx
index 3c39b42b9c5..18662da1b67 100644
--- a/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx
+++ b/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx
@@ -68,7 +68,8 @@
 %<*driver>
 \ProvidesFile{bxjscls.dtx}
 %</driver>
-  [2017/12/09 v1.7a BXJS document classes]
+  [2018/01/28 v1.7b BXJS document classes]
+% [2017/12/09 v1.7a BXJS document classes]
 % [2017/10/21 v1.7 BXJS document classes]
 % [2017/09/28 v1.6b BXJS document classes]
 % [2017/09/24 v1.6a BXJS document classes]
@@ -2594,6 +2595,14 @@
 \else
   \def\jsc@setfontsize#1#2#3{%
     \@setfontsize#1{#2\jsc@mpt}{#3\jsc@mpt}}
+% microtype対策
+  \ifjsWitheTeX\if j\jsEngine\else
+    \def\jsc@setfontsize#1#2#3{%
+      \edef\bxjs@sfs@next{%
+        \unexpanded{\@setfontsize#1}%
+           {\the\dimexpr#2\jsc@mpt\relax}{\the\dimexpr#3\jsc@mpt\relax}%
+      }\bxjs@sfs@next}
+  \fi\fi
 \fi
 %    \end{macrocode}
 % \end{macro}
@@ -8562,7 +8571,7 @@
 % |japaram| の値をkey-valueリストとして解釈する。
 % keyvalのファミリは |bxjsStd| とする。
 %
-% \begin{macro}{\bxjs@jp@jismmiv}
+% \begin{macro}{\ifbxjs@jp@jismmiv}
 % 2004JIS字形を優先させるか。
 %    \begin{macrocode}
 \newif\ifbxjs@jp@jismmiv
@@ -8577,6 +8586,22 @@
   \bxjs@set@keyval{jis2004}{#1}{}}
 %    \end{macrocode}
 %
+% \begin{macro}{\ifbxjs@jp@units}
+% 和文用単位（|zw|、|zh|、|(true)Q|、|(true)H|）を
+% 使えるようにするか。
+%    \begin{macrocode}
+\newif\ifbxjs@jp@units
+%    \end{macrocode}
+% \end{macro}
+%
+% |units| オプションの処理。
+%    \begin{macrocode}
+\let\bxjs@kv@units@true\bxjs@jp@unitstrue
+\let\bxjs@kv@units@false\bxjs@jp@unitsfalse
+\define@key{bxjsStd}{units}[true]{%
+  \bxjs@set@keyval{units}{#1}{}}
+%    \end{macrocode}
+%
 % \begin{macro}{\bxjs@jp@font}
 % フォントパッケージの追加オプション。
 %    \begin{macrocode}
@@ -8584,7 +8609,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% |jis2004| オプションの処理。
+% |font| オプションの処理。
 %    \begin{macrocode}
 \define@key{bxjsStd}{font}{%
   \edef\bxjs@jp@font{#1}}
@@ -8610,6 +8635,28 @@
 \fi
 %    \end{macrocode}
 %
+% \paragraph{和文用単位のサポート}
+%
+% |units| パラメタが有効の場合は、|bxcalc| パッケージを読みこんで、
+% |\usepTeXunits| 命令を実行する。
+%    \begin{macrocode}
+\ifbxjs@jp@units\if j\jsEngine\else
+  \IfFileExists{bxcalc.sty}{%
+    \RequirePackage{bxcalc}[2018/01/28]%v1.0a
+    \ifx\usepTeXunits\@undefined
+      \PackageWarningNoLine\bxjs@clsname
+       {Cannot support pTeX units (zw etc.), since\MessageBreak
+        the package 'bxcalc' is too old}%
+    \else \usepTeXunits
+    \fi
+  }{%else
+    \PackageWarningNoLine\bxjs@clsname
+     {Cannot support pTeX units (zw etc.), since\MessageBreak
+      the package 'bxcalc' is unavailable}%
+  }
+\fi\fi
+%    \end{macrocode}
+%
 % \paragraph{共通命令の実装}
 %
 % |\jQ| 等の「単位」系の共通命令を実装する。
@@ -8696,6 +8743,9 @@
 %    \end{macrocode}
 % {(u)\pLaTeX}ではこの処理は不要なので無効化する。
 %    \begin{macrocode}
+\def\bxjs@parse@qh#1{%
+  \let\bxjs@tmpb\relax}
+\else\ifbxjs@jp@units
 \def\bxjs@parse@qh#1{%
   \let\bxjs@tmpb\relax}
 \else
@@ -8712,7 +8762,7 @@
   \fi}
 \def\bxjs@parse@qh@b#1#2#3{%
   \ifx\@nnil#2\@nnil\else \def\bxjs@tmpb{#1#3}\fi}
-\fi
+\fi\fi
 %    \end{macrocode}
 % \end{macro}
 %
@@ -9045,6 +9095,21 @@
 %    \end{macrocode}
 % \end{macro}
 %
+% \begin{macro}{\bxjs@resolve@jafont@paren}
+% |jafont|パラメタ値内の|()|を解決する。
+%    \begin{macrocode}
+\def\bxjs@resolve@jafont@paren#1{%
+  \def\bxjs@tmpb{\let#1}%
+  \expandafter\bxjs@resolve@jafont@paren@a#1\@nil()\@nil\relax}
+\def\bxjs@resolve@jafont@paren@a#1(#2)#3\@nil#4\relax{%
+  \ifx\relax#4\relax \bxjs@tmpb\jsJaFont
+  \else
+    \edef\bxjs@tmpa{#1\bxjs@jafont@paren{#2}#3}%
+    \bxjs@tmpb\bxjs@tmpa
+  \fi}
+%    \end{macrocode}
+% \end{macro}
+%
 %^^A----------------
 % \subsection{{\pTeX}用設定}
 %
@@ -9131,12 +9196,14 @@
 % ここで、和文ドライバパラメタ |font| が指定されいる場合は、
 % その値を |pxchfon| のオプションに追加する。
 %    \begin{macrocode}
+\let\bxjs@jafont@paren\@firstofone
 \let\bxjs@tmpa\jsJaFont
 \ifx\bxjs@tmpa\bxjs@@auto
   \let\bxjs@tmpa\@empty
 \else\ifx\bxjs@tmpa\bxjs@@noEmbed
   \def\bxjs@tmpa{noembed}
 \fi\fi
+\bxjs@resolve@jafont@paren\bxjs@tmpa
 \edef\bxjs@tmpa{\bxjs@catopt\bxjs@tmpa\bxjs@jp@font}
 \ifx\bxjs@tmpa\@empty\else
   \edef\bxjs@next{%
@@ -9256,6 +9323,8 @@
 % \Note Pandocモードでは |autotilde| を指定しない。
 %    \begin{macrocode}
 \bxjs@adjust@jafont{f}
+\let\bxjs@jafont@paren\@firstofone
+\bxjs@resolve@jafont@paren\bxjs@tmpa
 \edef\bxjs@tmpa{\bxjs@catopt\bxjs@tmpa\bxjs@jp@font}
 \edef\bxjs@tmpa{\bxjs@catopt\bxjs@tmpa{whole}}
 \def\bxjs@tmpb{pandoc}\ifx\bxjs@tmpb\bxjs@jadriver\else
@@ -9389,6 +9458,8 @@
 % 非指定の場合はIPAexフォントを使用する。
 %    \begin{macrocode}
 \bxjs@adjust@jafont{f}
+\let\bxjs@jafont@paren\@gobble
+\bxjs@resolve@jafont@paren\bxjs@tmpa
 \edef\bxjs@tmpa{\bxjs@catopt\bxjs@tmpa\bxjs@jp@font}
 \ifx\bxjs@tmpa\@empty
   \setCJKmainfont[BoldFont=IPAexGothic]{IPAexMincho}
@@ -9536,19 +9607,13 @@
 %    \begin{macrocode}
 \let\zw\@undefined
 \RequirePackage{luatexja}
-\RequirePackage{luatexja-fontspec}
+\edef\bxjs@next{%
+  \noexpand\RequirePackage[scale=\jsScale]{luatexja-fontspec}[2015/08/26]%
+}\bxjs@next
 %    \end{macrocode}
 %
 % \paragraph{和文フォント定義}
 %
-% |luatexja-fontspec| で使用する和文スケール値を |\jsScale| と合致
-% させたいのだが……もっと良い方法はないのか？
-%    \begin{macrocode}
-\ExplSyntaxOn
-\fp_gset:Nn \g_ltj_fontspec_scale_fp { \jsScale }
-\ExplSyntaxOff
-%    \end{macrocode}
-%
 % |\jsJaFont| が指定された場合は、その値をオプションと
 % して |luatexja-preset| を読み込む。
 % 非指定の場合は、|luatexja-preset| パッケージの |ipaex|
@@ -9559,6 +9624,8 @@
 \ifx\bxjs@tmpa\bxjs@@noEmbed
   \def\bxjs@tmpa{noembed}
 \fi
+\let\bxjs@jafont@paren\@gobble
+\bxjs@resolve@jafont@paren\bxjs@tmpa
 \edef\bxjs@tmpa{\bxjs@catopt\bxjs@tmpa\bxjs@jp@font}
 \ifx\bxjs@tmpa\@empty
   \defaultjfontfeatures{ Kerning=Off }
-- 
cgit v1.2.3

