From 4f8b3e4ed4705d02b41abf5a895611ea067f1802 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 5 Mar 2018 22:10:32 +0000 Subject: bxjscls (5mar18) git-svn-id: svn://tug.org/texlive/trunk@46845 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx | 479 +++++++++++++-------- 1 file changed, 291 insertions(+), 188 deletions(-) (limited to 'Master/texmf-dist/source') diff --git a/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx b/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx index b95badcba4a..20f53aab985 100644 --- a/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx +++ b/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx @@ -20,24 +20,12 @@ % provided by the original authors.) %--------------------------------------- % -% pLaTeX2ε新ドキュメントクラス -% -% これは LaTeX3 Project の classes.dtx と株式会社アスキーの jclasses.dtx -% に基づいて,もともと奥村晴彦 により -% 作成されたものです。 -% 現在は日本語\TeX 開発コミュニティにより管理されています。 -% -% [2002-12-19] いろいろなものに収録していただく際にライセンスを明確にする -% 必要が生じてきました。アスキーのものが最近はmodified BSDライセンスになっ -% ていますので,私のものもそれに準じてmodified BSDとすることにします。 -% -% [2016-07-11] abenoriさんによる\texttt{nomag}オプションをマージしました。 -% なお,ソースコードの管理はGitHubで行うことにしました。 -% -% [2016-07-13] 日本語\TeX 開発コミュニティによる管理に移行しました。 +% pLaTeX2ε新ドキュメントクラス(日本語 TeX 開発コミュニティ版) +% 原作者:奥村晴彦 % %--------------------------------------- -% Copyright 1993 1994 1995 1996 1997 1998 1999 +% +% Copyright 1993-2016 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -45,7 +33,7 @@ % Copyright 1999-2016 Haruhiko Okumura % Copyright 2016-2017 Japanese TeX Development Community % -% Copyright 2013-2017 Takayuki YATO (aka. "ZR") +% Copyright 2013-2018 Takayuki YATO (aka. "ZR") % % \fi % \CheckSum{0} @@ -68,7 +56,8 @@ %<*driver> \ProvidesFile{bxjscls.dtx} % - [2018/02/04 v1.7c BXJS document classes] + [2018/03/03 v1.8 BXJS document classes] +% [2018/02/04 v1.7c 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] @@ -196,13 +185,20 @@ % % これは\LaTeX3 Projectの \texttt{classes.dtx} と % 株式会社アスキーの \texttt{jclasses.dtx} に基づいて -% 奥村が改変したものです。 -% 権利については両者のものに従います。 -% 奥村は何の権利も主張しません。 +% もともと奥村晴彦により作成されたものです。 +% 現在は日本語\TeX 開発コミュニティによりGitHubで管理されています。 +% \begin{quote} +% |https://github.com/texjporg/jsclasses| +% \end{quote} +% +% [2002-12-19] いろいろなものに収録していただく際にライセンスを明確にする +% 必要が生じてきました。アスキーのものが最近はmodified BSDライセンスになっ +% ていますので,私のものもそれに準じてmodified BSDとすることにします。 +% +% [2016-07-13] 日本語\TeX 開発コミュニティによる管理に移行しました。 % % [2009-02-22] 田中琢爾氏によるup\LaTeX 対応パッチを取り込みました。 % -% \iffalse % ここでは次のドキュメントクラス(スタイルファイル)を作ります。 % % [2017-02-13] forum:2121の議論を機に,jsreportクラスを新設しました。 @@ -219,6 +215,8 @@ % \end{tabular} % \end{quote} % +% \iffalse +% % \LaTeXe あるいは\pLaTeXe 標準のドキュメントクラスとの違いを説明してお % きます。 % @@ -468,6 +466,81 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\bxjs@ifplus} +% |\@ifstar| の |+| 版。 +% \begin{macrocode} +\def\bxjs@ifplus#1{\@ifnextchar+{\@firstoftwo{#1}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bxjs@gset@tempcnta} +% |calc| の整数式を用いて |\@tempcnta| の値を設定する。 +% \begin{macrocode} +\let\c@bxjs@tempcnta\@tempcnta +\def\bxjs@gset@tempcnta{\setcounter{bxjs@tempcnta}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\jsSetQHLength} +% |\jsSetQHLength\CS{|\Meta{長さ式}|}|\Means +% |\setlength| の変種で、通常の |calc| の長さ式の代わりに、 +% 「|Q|/|H|/|trueQ|/|trueH|/|zw|/|zh| の単位付きの実数」 +% が記述できる(この場合は式は使えない)。 +% \begin{macrocode} +\def\jsSetQHLength#1#2{% + \begingroup + \bxjs@parse@qh{#2}% + \ifx\bxjs@tmpb\relax + \setlength\@tempdima{#2}% + \xdef\bxjs@g@tmpa{\the\@tempdima}% + \else \global\let\bxjs@g@tmpa\bxjs@tmpb + \fi + \endgroup + #1=\bxjs@g@tmpa\relax} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bxjs@parse@qh} +% |#1| が |Q|/|H|/|trueQ|/|trueH|/|zw|/|zh| で終わる場合、 +% 単位用の寸法値マクロ |\bxjs@unit@XXX| が定義済なら、 +% |\bxjs@tmpb| に |#1| に等しい寸法の表現を返し、 +% そうでないならエラーを出す。 +% それ以外では、|\bxjs@tmpb| は |\relax| になる。 +% \Note {(u)\pLaTeX}の場合はこれらの和文単位はエンジンでサポートされる。 +% しかし和文フォントの設定が完了するまでは |zw|/|zh| の値は正しくない。 +% \begin{macrocode} +\if j\jsEngine \def\bxjs@parse@qh@all{zw,zh} +\else \def\bxjs@parse@qh@all{trueQ,trueH,Q,H,zw,zh} +\fi +\def\bxjs@parse@qh#1{% + \let\bxjs@tmpb\relax + \@for\bxjs@tmpa:=\bxjs@parse@qh@all\do{% + \ifx\bxjs@tmpb\relax + \edef\bxjs@next{{\bxjs@tmpa}{#1}}% + \expandafter\bxjs@parse@qh@a\csname bxjs@unit@\bxjs@tmpa\expandafter + \endcsname\bxjs@next + \fi}} +\def\bxjs@parse@qh@a#1#2#3{% + \def\bxjs@next##1#2\@nil##2\@nnil{\bxjs@parse@qh@b{##1}{##2}#1}% + \bxjs@next#3\@nil#2\@nil\@nnil} +\def\bxjs@parse@qh@b#1#2#3{% + \ifx\@nnil#2\@nnil\else + \ifx#3\relax + \ClassError\bxjs@clsname + {You cannot use '\bxjs@tmpa' here}{\@ehc}% + \def\bxjs@tmpb{0pt}% + \else + \@tempdimb#3\relax \@tempdimb#1\@tempdimb + \edef\bxjs@tmpb{\the\@tempdimb}% + \fi + \fi} +% \end{macrocode} +% 今の段階では |Q|/|H| だけが使用可能。 +% \begin{macrocode} + \def\bxjs@unit@Q{0.25mm}\let\bxjs@unit@H\bxjs@unit@Q +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\jsAtEndOfClass} % このクラスの読込終了時に対するフック。 % (補助パッケージ中で用いられる。) @@ -709,50 +782,19 @@ % 基底フォントサイズを実際に変更する。 % \begin{macrocode} \def\bxjs@setbasefontsize#1{% - \bxjs@setbasefontlength\@tempdima{#1}% - \edef\bxjs@param@basefontsize{\the\@tempdima}% - \ifdim\@tempdima=10pt \long\def\@ptsize{0}% - \else\ifdim\@tempdima=10.95pt \long\def\@ptsize{1}% - \else\ifdim\@tempdima=12pt \long\def\@ptsize{2}% - \else \long\edef\@ptsize{\jsUnusualPtSize}\fi\fi\fi} % \end{macrocode} -% \end{macro} -% \begin{macro}{\bxjs@setbasefontlength} -% |base|、|jbase| で指定される長さ(式)のための -% 特別な |\setlength|。 -% 与えられた式が“\Meta{実数}|Q|”の形の場合、Q単位の長さを -% 代入する(この場合“式”は使えない)。 +% Q単位の長さ指定をサポートするため |\jsSetQHLength| を使う。 % \Note クラスオプションのトークン列の中に展開可能なトークンが -% ある場合、{\LaTeX}はファイルの読込の前にそれを展開しようとする。 +% ある場合、{\LaTeX}はクラスファイルの読込の前にそれを展開しようとする。 % このため、この位置で |\jQ| をサポートすることは % 原理的に不可能である。 % \begin{macrocode} -\def\bxjs@setbasefontlength#1#2{% -% \end{macrocode} -% ここで |true| の長さが使われるのは不合理なので、 -% 式が“|true|”を含む場合には警告を出す。 -% \begin{macrocode} - \bxjs@setbasefontlength@a#2true\@nnil -% \end{macrocode} -% 式の末尾が“|Q|”である時は特別に扱い、 -% それ以外は |\setlength| に移譲する。 -% \begin{macrocode} - \ifx j\jsEngine \setlength#1{#2}% - \else - \bxjs@setbasefontlength@b#2\@nil Q\@nil\@nnil - \ifx\bxjs@tmpa\relax \setlength#1{#2}% - \else \@tempdimc0.25mm #1=\bxjs@tmpa\@tempdimc - \fi - \fi} -\def\bxjs@setbasefontlength@b#1Q\@nil#2\@nnil{% - \ifx\@nnil#2\@nnil \let\bxjs@tmpa\relax - \else \def\bxjs@tmpa{#1}% - \fi} -\def\bxjs@setbasefontlength@a#1true#2\@nnil{% - \ifx\@nnil#2\@nnil\else - \ClassWarningNoLine\bxjs@clsname - {You should not use 'true' lengths here}% - \fi} + \jsSetQHLength\@tempdima{#1}% + \edef\bxjs@param@basefontsize{\the\@tempdima}% + \ifdim\@tempdima=10pt \long\def\@ptsize{0}% + \else\ifdim\@tempdima=10.95pt \long\def\@ptsize{1}% + \else\ifdim\@tempdima=12pt \long\def\@ptsize{2}% + \else \long\edef\@ptsize{\jsUnusualPtSize}\fi\fi\fi} % \end{macrocode} % \end{macro} % @@ -1511,13 +1553,6 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\ifbxjs@scaleset} -% 和文スケール値が指定されたか。 -% \begin{macrocode} -\newif\ifbxjs@scaleset -% \end{macrocode} -% \end{macro} -% % \begin{macro}{\jsScale} % 〔実数値マクロ〕 % 和文スケール値。 @@ -1526,38 +1561,52 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\bxjs@base@opt} +% |base| オプションの値(そのもの)。 +% \begin{macrocode} +%\let\bxjs@base@opt\@undefined +% \end{macrocode} +% \end{macro} +% % |base| オプションの処理。 % \begin{macrocode} -\define@key{bxjs}{base}{\bxjs@setbasefontsize{#1}} +\define@key{bxjs}{base}{% + \edef\bxjs@base@opt{#1}% + \bxjs@setbasefontsize{#1}} +\define@key{bxjs}{fontsize}{\setkeys{bxjs}{base=#1}} +% \end{macrocode} +% +% \begin{macro}{\bxjs@jbase@opt} +% |jbase| オプションの値。 +% \begin{macrocode} +%\let\bxjs@jbase@opt\@undefined % \end{macrocode} +% \end{macro} % % |jbase| オプションの処理。 -% ここでは |\jsScale| の値を使用する。 -% |scale| の処理との順序依存を消すため、 -% |jbase| の処理の実行を遅延させている。 % \begin{macrocode} -\@onlypreamble\bxjs@do@opt@jbase -\let\bxjs@do@opt@jbase\relax -\define@key{bxjs}{jbase}{\bxjs@setjbasefontsize{#1}} -\def\bxjs@setjbasefontsize#1{% - \def\bxjs@do@opt@jbase{% - \bxjs@setbasefontlength\@tempdima{#1}% - \bxjs@invscale\@tempdima\jsScale - \bxjs@setbasefontsize{\@tempdima}}} +\define@key{bxjs}{jbase}{\edef\bxjs@jbase@opt{#1}} +\define@key{bxjs}{jafontsize}{\setkeys{bxjs}{jbase=#1}} +% \end{macrocode} +% +% \begin{macro}{\bxjs@scale@opt} +% |scale| オプションの値。 +% \begin{macrocode} +%\let\bxjs@jbase@opt\@undefined % \end{macrocode} +% \end{macro} % % |scale| オプションの処理。 % \begin{macrocode} \define@key{bxjs}{scale}{% - \bxjs@scalesettrue - \edef\jsScale{#1}} + \edef\bxjs@scale@opt{#1}% + \let\jsScale\bxjs@scale@opt} +\define@key{bxjs}{jsfontscale}{\setkeys{bxjs}{scale=#1}} % \end{macrocode} % % |noscale| オプションの処理。 % \begin{macrocode} -\DeclareOption{noscale}{% - \bxjs@scalesettrue - \def\jsScale{1}} +\DeclareOption{noscale}{\setkeys{bxjs}{scale=1}} % \end{macrocode} % % \begin{macro}{\bxjs@param@mag} @@ -1773,6 +1822,24 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\bxjs@textwidth@opt} +% |textwidth| の指定値。 +% \begin{macrocode} +%\let\bxjs@textwidth@opt\@undefined +\define@key{bxjs}{textwidth}{\edef\bxjs@textwidth@opt{#1}} +\define@key{bxjs}{line_length}{\setkeys{bxjs}{textwidth=#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bxjs@number@of@lines@opt} +% |number-of-lines| の指定値。 +% \begin{macrocode} +%\let\bxjs@number@of@lines@opt\@undefined +\define@key{bxjs}{number-of-lines}{\edef\bxjs@number@of@lines@opt{#1}} +\define@key{bxjs}{number_of_lines}{\setkeys{bxjs}{number-of-lines=#1}} +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\bxjs@paragraph@mark} % |paragraph-mark| の指定値。 % パラグラフのマーク。 @@ -1905,7 +1972,7 @@ % \end{macrocode} % % \paragraph{グローバルオプションの整理 \ZRX} -% +% \mbox{} % \begin{ZRnote} % % グローバルオプションのトークン列に |{ }| が含まれていると、 @@ -2152,9 +2219,36 @@ \fi % \end{macrocode} % -% オプション処理時に遅延させていた |jbase| の処理をここで実行する。 +% |base|、|jbase|、|scale| の値を用いて和文スケール値を解決する。 +% \Note |\bxjs@param@basefontsize| と |\jsScale| へのオプション値の反映は +% 既に実施されていることに注意。 +% |jbase| 非指定の場合はこのままでよい。 +% \begin{macrocode} +\ifx\bxjs@jbase@opt\@undefined\else + \ifx\bxjs@base@opt\@undefined +% \end{macrocode} +% |jbase| 指定済で |base| 未指定の場合は、|\jsScale| の値を採用して +% 和文基底サイズを決定する。 % \begin{macrocode} -\bxjs@do@opt@jbase + \jsSetQHLength\@tempdima{\bxjs@jbase@opt}% + \bxjs@invscale\@tempdima\jsScale + \bxjs@setbasefontsize{\@tempdima}% + \else +% \end{macrocode} +% |jbase| と |base| がともに指定済の場合は、それらの値から +% 和文スケール値を決定する。 +% \begin{macrocode} + \ifx\bxjs@scale@opt\@undefined\else + \ClassWarningNoLine\bxjs@clsname + {Redundant 'scale' option is ignored}% + \fi + \jsSetQHLength\@tempdima{\bxjs@jbase@opt}% + \@tempdimb=\bxjs@param@basefontsize\relax + \edef\jsScale{\strip@pt\@tempdimb}% + \bxjs@invscale\@tempdima\jsScale + \edef\jsScale{\strip@pt\@tempdima}% + \fi +\fi % \end{macrocode} % % \begin{macro}{\Cjascale} @@ -2298,8 +2392,7 @@ \edef\bxjs@param@mag{\the\@tempcnta} \else % mag値が直接指定された場合 - \let\c@bxjs@cnta\@tempcnta - \setcounter{bxjs@cnta}{\bxjs@param@mag} + \bxjs@gset@tempcnta{\bxjs@param@mag} \ifnum\@tempcnta<\z@ \@tempcnta=\z@ \fi % 有効なmag値の範囲は1--32768 \edef\bxjs@param@mag{\the\@tempcnta} @@ -3064,6 +3157,12 @@ \setlength{\topskip}{10\p@?} % \end{macrocode} % +% |\jsSetQHLength| のための和文単位の定義。 +% \begin{macrocode} +\def\bxjs@unit@trueQ{0.25truemm}\let\bxjs@unit@trueH\bxjs@unit@trueQ +\def\bxjs@unit@zw{\jsZw}\let\bxjs@unit@zh\bxjs@unit@zw +% \end{macrocode} +% % |\bxjs@param@paper| が長さ指定(|{W}{H}|)の場合、 % |geometry| の形式(|papersize={W,H}|)に変換する。 % \begin{macrocode} @@ -3071,9 +3170,11 @@ \def\bxjs@read@b{% \ifx\bxjs@tmpa\bgroup \expandafter\bxjs@read@c \else \expandafter\bxjs@read@d \fi} -\def\bxjs@read@c#1#2#3\@nil{\def\bxjs@param@paper{papersize={#1,#2}}} -\def\bxjs@read@d#1\@nil{} -\expandafter\bxjs@read@a\bxjs@param@paper\@nil +\def\bxjs@read@c#1#2#3\@nil{\edef\bxjs@param@paper{papersize={#1,#2}}} +\def\bxjs@read@d#1\@nil{\bxjs@read@e#1,,\@nil} +\def\bxjs@read@e#1,#2,#3\@nil{% + \ifx\@nil#3\@nil\else \edef\bxjs@param@paper{papersize={#1,#2}}\fi} +\expandafter\bxjs@read@a\bxjs@param@paper\@empty\@empty\@nil % \end{macrocode} % % \begin{macro}{\bxjs@layout@paper} @@ -3091,33 +3192,38 @@ % 文書クラス毎に異なる。 % \begin{macrocode} %<*article|report> -\def\bxjs@layout{% +\def\bxjs@layout@base{% headheight=\topskip,footskip=0.03367\paperheight,% headsep=\footskip-\topskip,includeheadfoot,% +} +\edef\bxjs@layout{\bxjs@layout@base hscale=0.76,hmarginratio=1:1,% vscale=0.83,vmarginratio=1:1,% } % %<*book> +\def\bxjs@layout@base{% + headheight=\topskip,headsep=6\jsc@mmm,nofoot,includeheadfoot,% +} \ifbxjs@layout@buggyhmargin %--- % アレ -\def\bxjs@layout{% - headheight=\topskip,headsep=6\jsc@mmm,nofoot,includeheadfoot,% +\edef\bxjs@layout{\bxjs@layout@base hmargin=36\jsc@mmm,hmarginratio=1:1,% vscale=0.83,vmarginratio=1:1,% } \else %--- % 非アレ -\def\bxjs@layout{% - headheight=\topskip,headsep=6\jsc@mmm,nofoot,includeheadfoot,% +\edef\bxjs@layout{\bxjs@layout@base hmargin=18\jsc@mmm,% vscale=0.83,vmarginratio=1:1,% } \fi %--- % %<*slide> -\def\bxjs@layout{% +\def\bxjs@layout@base{% noheadfoot,% +} +\edef\bxjs@layout{\bxjs@layout@base hscale=0.9,hmarginratio=1:1,% vscale=0.944,vmarginratio=1:1,% } @@ -3125,6 +3231,20 @@ % \end{macrocode} % \end{macro} % +% |textwidth| オプションの設定を反映する。 +% \begin{macrocode} +%<*!book> +\ifx\bxjs@textwidth@opt\@undefined\else + \jsSetQHLength\@tempdima{\bxjs@textwidth@opt} + \edef\bxjs@layout{\bxjs@layout width=\the\@tempdima,} +\fi +% +\ifx\bxjs@number@of@lines@opt\@undefined\else + \bxjs@gset@tempcnta{\bxjs@number@of@lines@opt} + \edef\bxjs@layout{\bxjs@layout lines=\the\@tempcnta,} +\fi +% \end{macrocode} +% % \begin{macro}{\fullwidth} % 〔寸法レジスタ〕 % ヘッダ・フッタ領域の横幅。 @@ -3140,8 +3260,7 @@ %<*book> \newcommand\jsTextWidthLimit{40} \ifx\bxjs@textwidth@limit\@undefined\else - \let\c@bxjs@cnta\@tempcnta - \setcounter{bxjs@cnta}{\bxjs@textwidth@limit} + \bxjs@gset@tempcnta{\bxjs@textwidth@limit} \long\edef\jsTextWidthLimit{\the\@tempcnta} \fi % @@ -3160,6 +3279,7 @@ \ifbxjs@whole@zw@lines \@tempdimb=\textwidth \if@twocolumn \@tempdima=2\Cwd \else \@tempdima=1\Cwd \fi + \advance\textwidth.005pt\relax \divide\textwidth\@tempdima \multiply\textwidth\@tempdima \advance\@tempdimb-\textwidth \advance\oddsidemargin 0.5\@tempdimb @@ -3167,14 +3287,19 @@ \fi \fullwidth=\textwidth %<*book> - \ifdim\textwidth>\jsTextWidthLimit\Cwd - \textwidth=\jsTextWidthLimit\Cwd + \@tempdima=\jsTextWidthLimit\Cwd + \ifx\bxjs@textwidth@opt\@undefined\else + \jsSetQHLength\@tempdima{\bxjs@textwidth@opt} + \fi + \ifdim\textwidth>\@tempdima + \textwidth=\@tempdima \addtolength\evensidemargin{\fullwidth-\textwidth} \fi % % textheight 調整 \@tempdimb=\textheight \advance\textheight-\topskip + \advance\textheight.005pt\relax \divide\textheight\baselineskip \multiply\textheight\baselineskip \advance\textheight\topskip \advance\@tempdimb-\textheight @@ -3223,11 +3348,10 @@ % ようにする自動調整を行うが、これをどうするかは未検討。 % 今のところ、単純に回避(無効化)している。 % \begin{macrocode} -\@onlypreamble\bxjs@revert -\let\bxjs@revert\@empty -\edef\bxjs@tmpa{\the\ht\strutbox} -\ht\strutbox=10\p@? -\g@addto@macro\bxjs@revert{\ht\strutbox=\bxjs@tmpa\relax} +\def\bxjs@geometry@guard@on{% + \edef\bxjs@gg@tmp{\the\ht\strutbox}\ht\strutbox=10\jsc@mpt} +\def\bxjs@geometry@guard@off{% + \ht\strutbox=\bxjs@gg@tmp\relax} % \end{macrocode} % % |geometry| のドライバオプション指定。 @@ -3253,11 +3377,13 @@ % \Note |geometry| のbegin-documentフックにおいて、Lua{\TeX}の % 旧版互換を有効にする。 % \begin{macrocode} -\edef\bxjs@nxt{% - \noexpand\RequirePackage[\bxjs@layout@paper,\bxjs@layout]{geometry}} \AtBeginDocument{\bxjs@pre@geometry@hook} \AtBeginDocument{\ImposeOldLuaTeXBehavior} -\bxjs@nxt \bxjs@revert +\bxjs@geometry@guard@on +\edef\bxjs@next{% + \noexpand\RequirePackage[\bxjs@layout@paper,\bxjs@layout]{geometry}% +}\bxjs@next +\bxjs@geometry@guard@off \AtBeginDocument{\RevokeOldLuaTeXBehavior} % \end{macrocode} % @@ -3307,14 +3433,23 @@ % \end{itemize} % どちらも設定の後で後処理 |\bxjs@postproc@layout| を実行する。 % \begin{macrocode} -\def\setpagelayout{\@ifstar - {\bxjs@reset@layout}{\bxjs@modify@layout}} -\def\bxjs@modify@layout#1{% - \edef\bxjs@nxt{\noexpand\geometry{#1,truedimen}}% - \bxjs@nxt\bxjs@postproc@layout} -\def\bxjs@reset@layout#1{% - \edef\bxjs@nxt{\noexpand\geometry{reset,\bxjs@layout@paper,#1,truedimen}}% - \bxjs@nxt\bxjs@postproc@layout} +\def\setpagelayout{% + \bxjs@ifplus{\bxjs@setpagelayout@a\tw@}{%else + \@ifstar{\bxjs@setpagelayout@a\@ne}{\bxjs@setpagelayout@a\z@}}} +\def\bxjs@setpagelayout@a#1#2{% + \ifcase#1% modify + \def\bxjs@next{\ifjsc@mag truedimen,\fi #2}% + \or% reset(*) + \def\bxjs@next{reset,\bxjs@layout@paper,#2}% + \or% semireset(+) + \def\bxjs@next{reset,\bxjs@layout@paper,\bxjs@layout@base,#2}% + \fi + \bxjs@geometry@guard@on + \edef\bxjs@next{% + \noexpand\geometry{\bxjs@next}% + }\bxjs@next + \bxjs@geometry@guard@off + \bxjs@postproc@layout} % \end{macrocode} % \end{macro} % @@ -3347,8 +3482,9 @@ % |\setpagelayout| はとりあえず無効にしておく。 % \begin{macrocode} \let\bxjs@geometry@driver\relax -\def\setpagelayout{\@ifstar - {\bxjs@pagelayout@a}{\bxjs@pagelayout@a}} +\def\setpagelayout{% + \bxjs@ifplus{\bxjs@pagelayout@a}{%else + \@ifstar{\bxjs@pagelayout@a}{\bxjs@pagelayout@a}}} \def\bxjs@pagelayout@a#1{% \ClassError\bxjs@clsname {Command '\string\setpagelayout' is not supported,\MessageBreak @@ -3371,7 +3507,9 @@ % \Note diffが崩壊するのを避けるためオリジナルのコードを無効化した状態で % 挿入しておく。 % \end{ZRnote} +% \begin{macrocode} %<*jsclasses> +% \end{macrocode} % % \paragraph{縦方向のスペース} % @@ -3744,7 +3882,9 @@ % \end{macrocode} % \end{macro} % +% \begin{macrocode} % +% \end{macrocode} % % \paragraph{脚注} % @@ -6387,7 +6527,6 @@ % \end{macro} % \end{macro} % -% \Note 1.x版ではWarningではなくInfoに留めておく。 % \begin{macrocode} \let\bxjs@oldfontcmd@list\@empty \def\bxjs@oldfontcmd#1{% @@ -6410,18 +6549,13 @@ \bxjs@oldfontcmd@list \ifx\@tempa\@empty\else \ClassWarningNoLine\bxjs@clsname - {Some old font commands were used in text\MessageBreak - (see the log file for detail)}% - \ClassInfo\bxjs@clsname {Some old font commands were used in text:\MessageBreak \space\@tempa\MessageBreak You should note, that since 1994 LaTeX2e provides a\MessageBreak new font selection scheme called NFSS2 with several\MessageBreak new, combinable font commands. The class provides\MessageBreak - the old font commands - only for compatibility% - \@gobble}% + the old font commands only for compatibility} \fi} % \end{macrocode} % 単純に |\AtEndDocument| のフックの中で |\bxjs@warnoldfontcmd@final| を @@ -8075,14 +8209,14 @@ % % |\jsLetHeadChar| を和文文字トークンに対応させる。 % \begin{macrocode} -\def\bxjs@let@hchar@chr@pp#1{% - \expandafter\bxjs@let@hchar@chr@pp@a\meaning#1\relax#1} -\def\bxjs@let@hchar@chr@pp@a#1#2\relax#3{% -%\message{(#1)}% - \bxjs@cond\if#1t\fi{% - \bxjs@let@hchar@chr@ue#3% +\def\bxjs@let@hchar@chr@pp#1#2{% + \expandafter\bxjs@let@hchar@chr@pp@a\meaning#2\relax#1#2} +\def\bxjs@let@hchar@chr@pp@a#1#2\relax#3#4{% +%\message{(\meaning#3:\meaning#4)}% + \bxjs@cond\if#1k\fi{% + \bxjs@let@hchar@out\def{{#4}}% }{%else - \bxjs@let@hchar@out\def{{#3}}% + \bxjs@let@hchar@chr@ue#3#4% }} \let\bxjs@let@hchar@chr\bxjs@let@hchar@chr@pp % \end{macrocode} @@ -8228,6 +8362,13 @@ \selectfont % \end{macrocode} % +% |\bxjs@parse@qh| の処理は不要になるので無効化する。 +% \begin{macrocode} +\def\bxjs@parse@qh#1{\let\bxjs@tmpb\relax} +\let\bxjs@parse@qh@a\@undefined +\let\bxjs@parse@qh@b\@undefined +% \end{macrocode} +% % \paragraph{パラメタの設定} % % \begin{macrocode} @@ -8709,8 +8850,8 @@ \fi % \end{macrocode} % -% |units| パラメタが有効の場合は、|bxcalc| パッケージを読みこんで、 -% |\usepTeXunits| 命令を実行する。 +% |units| パラメタが有効の場合は、|bxcalc| パッケージの |\usepTeXunits| 命令 +% を実行して和文用単位を有効化する。 % \begin{macrocode} \ifbxjs@jp@units \IfFileExists{bxcalc.sty}{% @@ -8719,16 +8860,28 @@ \PackageWarningNoLine\bxjs@clsname {Cannot support pTeX units (zw etc.), since\MessageBreak the package 'bxcalc' is too old}% + \bxjs@jp@unitsfalse \else \usepTeXunits \fi }{%else \PackageWarningNoLine\bxjs@clsname {Cannot support pTeX units (zw etc.), since\MessageBreak the package 'bxcalc' is unavailable}% + \bxjs@jp@unitsfalse } \fi % \end{macrocode} % +% |bxcalc| で和文用単位をサポートした場合は、|\bxjs@parse@qh| の処理は不要に +% なるので無効化する。 +% \begin{macrocode} +\ifbxjs@jp@units +\def\bxjs@parse@qh#1{\let\bxjs@tmpb\relax} +\let\bxjs@parse@qh@a\@undefined +\let\bxjs@parse@qh@b\@undefined +\fi +% \end{macrocode} +% % \begin{macro}{\bxjs@let@lenexpr} % |\bxjs@let@lenexpr\CS{|\Meta{長さ式}|}|\Means % 長さ式に |bxcalc| の展開を適用した結果のトークン列を |\CS| に代入する。 @@ -8801,57 +8954,6 @@ % \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\ifbxjs@jp@units -\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\fi -% \end{macrocode} -% \end{macro} -% % \begin{macro}{\jafontsize} % |\jafontsize{|\Meta{フォントサイズ}|}{|\Meta{行送り}|}|\Means % 和文フォント規準で、すなわち、1\,zwが\Meta{フォントサイズ}に @@ -9302,6 +9404,7 @@ % % インストールされている |otf| パッケージが |scale| オプションに % 対応している場合は |scale=(\jsScaleの値)| を事前に |otf| に渡す。 +% \Note |scale| 対応は1.7b6版 [2013/11/17] から。 % \Note otf.sty の中に「|\RequirePackage{keyval}|」の行が存在する % かにより判定している。 % (もっといい方法はないのか……。) -- cgit v1.2.3