summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/bxjscls
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2018-03-05 22:10:32 +0000
committerKarl Berry <karl@freefriends.org>2018-03-05 22:10:32 +0000
commit4f8b3e4ed4705d02b41abf5a895611ea067f1802 (patch)
treed1b1dda195e8111c484f0f645fe15eec6fd51778 /Master/texmf-dist/source/latex/bxjscls
parent45b6a4705fb0917584f76cd9b3389ff3bd2822e4 (diff)
bxjscls (5mar18)
git-svn-id: svn://tug.org/texlive/trunk@46845 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/bxjscls')
-rw-r--r--Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx479
1 files changed, 291 insertions, 188 deletions
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
-% に基づいて,もともと奥村晴彦 <okumura@okumuralab.org> により
-% 作成されたものです。
-% 現在は日本語\TeX 開発コミュニティにより管理されています。
-%
-% [2002-12-19] いろいろなものに収録していただく際にライセンスを明確にする
-% 必要が生じてきました。アスキーのものが最近はmodified BSDライセンスになっ
-% ていますので,私のものもそれに準じてmodified BSDとすることにします。
-%
-% [2016-07-11] abenoriさんによる\texttt{nomag}オプションをマージしました。
-% なお,ソースコードの管理はGitHubで行うことにしました。
-%
-% [2016-07-13] 日本語\TeX 開発コミュニティによる管理に移行しました。
+% pLaTeX2ε新ドキュメントクラス(日本語 TeX 開発コミュニティ版)
+% 原作者:奥村晴彦 <okumura@okumuralab.org>
%
%---------------------------------------
-% 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}
%</driver>
- [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,%
}
%</article|report>
%<*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 %---
%</book>
%<*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
+%</!book>
+\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
%</book>
@@ -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
%</book>
% 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}
%</jsclasses>
+% \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}|」の行が存在する
% かにより判定している。
% (もっといい方法はないのか……。)