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/doc/latex/bxjscls/LICENSE | 41 +- Master/texmf-dist/doc/latex/bxjscls/README-ja.md | 9 + Master/texmf-dist/doc/latex/bxjscls/README.md | 1 + .../doc/latex/bxjscls/bxjscls-manual.pdf | Bin 617140 -> 625194 bytes .../doc/latex/bxjscls/bxjscls-manual.tex | 159 +++++-- Master/texmf-dist/doc/latex/bxjscls/bxjscls.pdf | Bin 1018337 -> 1020837 bytes Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx | 479 +++++++++++++-------- .../texmf-dist/tex/latex/bxjscls/bxjsarticle.cls | 189 +++++--- Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls | 201 +++++---- Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty | 2 +- Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty | 2 +- .../tex/latex/bxjscls/bxjsja-minimal.def | 17 +- .../texmf-dist/tex/latex/bxjscls/bxjsja-modern.def | 2 +- .../texmf-dist/tex/latex/bxjscls/bxjsja-pandoc.def | 2 +- .../tex/latex/bxjscls/bxjsja-standard.def | 39 +- Master/texmf-dist/tex/latex/bxjscls/bxjspandoc.sty | 2 +- Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls | 189 +++++--- Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls | 189 +++++--- 18 files changed, 968 insertions(+), 555 deletions(-) (limited to 'Master/texmf-dist') diff --git a/Master/texmf-dist/doc/latex/bxjscls/LICENSE b/Master/texmf-dist/doc/latex/bxjscls/LICENSE index fbe40a0146b..a99e300ec4a 100644 --- a/Master/texmf-dist/doc/latex/bxjscls/LICENSE +++ b/Master/texmf-dist/doc/latex/bxjscls/LICENSE @@ -1,21 +1,28 @@ -The MIT License +The BSD 2-Clause License -Copyright (c) 2018 Takayuki YATO (aka. "ZR") +Copyright 1995-1999 ASCII Corporation. +Copyright 1999-2016 Haruhiko Okumura +Copyright 2016-2017 Japanese TeX Development Community +Copyright 2013-2018 Takayuki YATO (aka. "ZR") +All rights reserved. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +1. Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/Master/texmf-dist/doc/latex/bxjscls/README-ja.md b/Master/texmf-dist/doc/latex/bxjscls/README-ja.md index 7c3f5fa3b6f..1ec1be6b1e6 100644 --- a/Master/texmf-dist/doc/latex/bxjscls/README-ja.md +++ b/Master/texmf-dist/doc/latex/bxjscls/README-ja.md @@ -98,10 +98,19 @@ XeLaTeX / LuaLaTeX の上でも日本語処理パッケージと連携して使 更新履歴 -------- + * Version 1.8 〈2018/03/03〉 + - `textwidth`、`number-of-lines` オプションを新設。 + - `\setpagelayout+` 命令をを新設。 + - jlreq 文書クラスとの互換用のオプション(`fontsize` 等)を追加。 + - (u)pLaTeX 以外のエンジンでは常に `ja` オプションを明示することを + 推奨する。 + - 二文字フォント命令の使用の警告を少し冗長にした。 + - バグ修正。 * Version 1.7c 〈2018/02/04〉 - オプション `label-section` を新設。 * Version 1.7b 〈2018/01/28〉 - 和文パラメタ `units` を新設。 + - `jafont` オプションの丸括弧記法。 - バグ修正。 * Version 1.7a 〈2017/12/09〉 - 〈試験的〉新元号対応の準備。`\jayear` 命令を追加。 diff --git a/Master/texmf-dist/doc/latex/bxjscls/README.md b/Master/texmf-dist/doc/latex/bxjscls/README.md index 9a0cdf9a464..a62411847a1 100644 --- a/Master/texmf-dist/doc/latex/bxjscls/README.md +++ b/Master/texmf-dist/doc/latex/bxjscls/README.md @@ -88,6 +88,7 @@ This package is distributed under the BSD 2-Clause License. Revision History ---------------- + * Version 1.8 〈2018/03/03〉 * Version 1.7c 〈2018/02/04〉 * Version 1.7b 〈2018/01/28〉 * Version 1.7a 〈2017/12/09〉 diff --git a/Master/texmf-dist/doc/latex/bxjscls/bxjscls-manual.pdf b/Master/texmf-dist/doc/latex/bxjscls/bxjscls-manual.pdf index 19cbaa6afc3..0050dbdef06 100644 Binary files a/Master/texmf-dist/doc/latex/bxjscls/bxjscls-manual.pdf and b/Master/texmf-dist/doc/latex/bxjscls/bxjscls-manual.pdf differ diff --git a/Master/texmf-dist/doc/latex/bxjscls/bxjscls-manual.tex b/Master/texmf-dist/doc/latex/bxjscls/bxjscls-manual.tex index b70c9cc2bb4..e61678ff65a 100644 --- a/Master/texmf-dist/doc/latex/bxjscls/bxjscls-manual.tex +++ b/Master/texmf-dist/doc/latex/bxjscls/bxjscls-manual.tex @@ -12,8 +12,8 @@ \renewcommand*{\XeLaTeX}{XeLaTeX}} \usepackage{shortvrb} \MakeShortVerb{\|} -\newcommand{\PkgVersion}{v1.7c} -\newcommand{\PkgDate}{2018/02/04} +\newcommand{\PkgVersion}{v1.8} +\newcommand{\PkgDate}{2018/03/03} \newcommand{\Pkg}[1]{\textsf{#1}} \newcommand{\Meta}[1]{$\langle$\mbox{}#1\mbox{}$\rangle$} \newcommand{\Note}{\par\noindent ※} @@ -396,17 +396,17 @@ JSクラスのレイアウトデザインと機能をほぼ踏襲しているが 「何も指定しない状態」(JSクラスと同様)である。 すなわち実際に使われる物理フォントの選択はDVIウェアの設定に 委ねられている。 -\item JSクラスは |\ifdraft| という公開名のスイッチ - \footnote{スイッチなので{\LaTeX}レベルの命令ではない。 - 標準クラスではこれに相当するものは |\if@draft| という非公開の - 制御綴で定義されている。}% - を用いているが、これは\Pkg{ifdraft}パッケージと衝突する。 - そこでBXJSクラスでは代わりに |\ifjsDraft| の名前を - 用い、本文開始時に |\ifdraft| が未定義の場合に限り、 - |\ifjsDraft| を |\ifdraft| にコピーする処理にしている。 - \Note JSクラスの |\ifdraft| は2016/07/13版で廃止された。 - 従って、BXJSクラスにおいて |\ifdraft| スイッチの使用を - 非推奨とし、将来的に廃止を予定する。 +%\item JSクラスは |\ifdraft| という公開名のスイッチ +% \footnote{スイッチなので{\LaTeX}レベルの命令ではない。 +% 標準クラスではこれに相当するものは |\if@draft| という非公開の +% 制御綴で定義されている。}% +% を用いているが、これは\Pkg{ifdraft}パッケージと衝突する。 +% そこでBXJSクラスでは代わりに |\ifjsDraft| の名前を +% 用い、本文開始時に |\ifdraft| が未定義の場合に限り、 +% |\ifjsDraft| を |\ifdraft| にコピーする処理にしている。 +% \Note JSクラスの |\ifdraft| は2016/07/13版で廃止された。 +% 従って、BXJSクラスにおいて |\ifdraft| スイッチの使用を +% 非推奨とし、将来的に廃止を予定する。 \item 1.2版より、|\bf| や |\it| 等の {\pLaTeX}\,2.09方式のフォント選択命令の使用が 非推奨となり、これらの命令を使うと警告が出るようになった。 @@ -445,6 +445,8 @@ Pandoc\footnote{\url{http://pandoc.org/}}% 以下でPandocでBXJSクラスを用いる例を示す。 +\Note なお、以下の記述はPandoc 2.x版に従う。 + \begin{itemize} \item \Pkg{bxjsarticle}クラスを使用する一例。 \begin{itemize} @@ -453,9 +455,8 @@ Pandoc\footnote{\url{http://pandoc.org/}}% \item 和文フォント設定は |ipaex| \end{itemize} - コマンド行は次のようになる - \footnote{もちろん、実際には改行を含めず1行で書く。 - なお、以下の記述はPandoc 2.x版に従う。} + コマンド行は次のようになる。 + \footnote{もちろん、実際には改行を含めず1行で書く。} \begin{quote} |pandoc| \Meta{入力ファイル名}\ |-o| \Meta{出力ファイル名}|.pdf| @@ -585,10 +586,6 @@ JSクラスには無くBXJSクラスで追加されたクラスオプション 例えば、DVI出力のエンジンで |dvi=dvipdfmx| が指定された場合は、 |dvipdfmx| がグローバルオプションに追加される。}% |autodetect-engine| と一緒に使うことが想定されている。 -\item |dvipdfmx-if-dvi|\Means - |dvi=dvipdfmx| と同値。 - \Note |dvi| オプションは1.2版で新設されたもので、以前は - このオプションのみが存在した。 \item |pandoc|\Means 「Pandocモード」(\ref{sec:Pandoc-mode}節)を指定する。 以下の設定が行われる: @@ -609,20 +606,29 @@ JSクラスには無くBXJSクラスで追加されたクラスオプション (詳細は\ref{sec:Ja-Driver}節を参照。) 標準で提供されている和文ドライバには |minimal|、 |standard|、|pandoc| がある。 - 既定値は、エンジンが |platex| か |uplatex| の時は |standard|、 - それ以外は |minimal|。 -\item |jadriver=|\Meta{名前}\Means - 「|ja=|\Meta{名前}」の(0.9版以前で使われていた)別名。 + エンジンが |platex| か |uplatex| の時は |ja| の + 既定値は |standard| である。 + それ以外の場合は、一応 |minimal| とするが、 + 明示的な指定が推奨される。 \item |jafont=|\Meta{名前}\Means “和文フォントプリセット指定”の名雨を設定する。 \Note \ref{sec:Basic}節で解説した通り、standard和文ドライバでは |jafont| の値が利用される。 + \par + プリセット指定の値が丸括弧を含む(例えば“|sourcehan(-otc)|”)場合、 + 以下のように解釈される。 + \begin{itemize} + \item エンジンが{\XeLaTeX}/{\LuaLaTeX}の場合は、 + 丸括弧囲いの部分を削除した文字列(“sourcehan”)が使われる。 + \item それ以外の場合は、 + 丸括弧だけ削除した文字列(“sourcehan-otc”)が使われる。 + \end{itemize} \item |japaram={|\Meta{キー}|=|\Meta{値}|,...}|\Means “和文ドライバパラメタ”の値を設定する。 詳しくは\ref{sec:Ja-Driver-Param}節を参照。 \Note |jafont| と |japaram| の値がどのように解釈されるかは 和文ドライバの仕様次第である。 - minimal和文ドライバではこの2つの値は全く参照されない。 +% minimal和文ドライバではこの2つの値は全く参照されない。 \item |base=|\Meta{長さ}\Means 基底フォントサイズ(|\normalsize| のフォントのサイズ)を指定する。 JSクラスの |10pt|、|11pt| 等と同じ役割で、任意の値を指定できる。 @@ -668,9 +674,19 @@ JSクラスには無くBXJSクラスで追加されたクラスオプション \item |disablejfam|\Means |enablejfam=false| と同値。 \Note JSクラスとの互換のため存在する。 +\item |textwidth=|\Meta{長さ}\Means + 行長(本文領域の横幅;|\textwidth|)を指定する。 + \begin{itemize} + \item \Pkg{bxjsbook}以外では、\Pkg{geometry}で |textwidth| を + 指定したのと同値。 + \item \Pkg{bxjsbook}では、後述の |textwidth-limit| と同様に扱われる。 + \end{itemize} +\item |number-of-lines=|\Meta{整数}\Means + 1ページあたりの行数を指定する。 + \Pkg{geometry}で |lines| を指定したのと同値。 \end{itemize} -以下に挙げるのは上級者向けのオプションである。 +\paragraph{上級者向けのオプション}\mbox{} \begin{itemize} \item |zw|(既定)\Means @@ -836,6 +852,35 @@ JSクラスには無くBXJSクラスで追加されたクラスオプション \end{itemize} \end{itemize} +\paragraph{jlreq文書クラスとの互換用のオプション}\mbox{} + +\begin{itemize} +\item |paper={|\Meta{横幅}|,|\Meta{縦幅}|}|\Means + |paper={|\Meta{横幅}|}{|\Meta{縦幅}|}| と同値(用紙サイズ設定)。 +\item |fontsize=|\Meta{長さ}\Means + |base=|\Meta{長さ} と同値(基底フォントサイズ)。 +\item |jafontsize=|\Meta{長さ}\Means + |jbase=|\Meta{長さ} と同値(和文基底フォントサイズ)。 +\item |line_length=|\Meta{長さ}\Means + |textwidth=|\Meta{長さ} と同値(行長指定)。 +\item |number_of_lines=|\Meta{整数}\Means + |number-of-lines=|\Meta{整数} と同値(行数指定)。 +\end{itemize} + +\paragraph{旧版との互換用のオプション}\mbox{} + +\begin{itemize} +\item |dvipdfmx-if-dvi|\Means + |dvi=dvipdfmx| と同値。 + \Note 1.2版より前で使われた。 +\item |magstyle=mag|/|real|/|xreal|\Means + それぞれ |magstyle=usemag|/|nomag|/|nomag*| と同値。 + \Note 1.1f版より前で使われた。 +\item |jadriver=|\Meta{名前}\Means + |ja=|\Meta{名前} と同値(和文ドライバ指定)。 + \Note 1.0版より前で使われた。 +\end{itemize} + %------------------- \subsection{JSクラスのオプションで使用可能なもの} \label{ssec:JS-inherited-option} @@ -934,7 +979,7 @@ JSクラスには無くBXJSクラスで追加されたクラスオプション \Note これは{\pLaTeX}のカーネル命令を利用しているので とりあえず除外。 \item 和文フォントメトリック指定\Means - |jis|、|winjis|、|mingoth|。 + |jis|、|mingoth|。 \Note 異なるエンジンで汎用的に扱うのが難しい。 \end{itemize} @@ -1088,6 +1133,9 @@ minimalに配置している。}% |minimal| を用いる意義がほとんどないため、 |standard| が既定値になっている。 +\Note 1.8版より、(u){\pLaTeX}以外のエンジンについては、 +和文ドライバを明示指定することを推奨する。 + %=========================================================== \section{和文ドライバパラメタ} @@ -1207,6 +1255,9 @@ vscale=0.944, vmarginratio=1:1 具体的には、\ref{itm:pl-parama}と\Meta{設定}の 内容を用いて\Pkg{geometry}が再設定を行った後、 再び\ref{itm:pl-post}の後処理が行われる。 +\item |\setpagelayout+{|\Meta{設定}|}|\Means + |\setpagelayout*| の変種で、「本文領域のサイズと位置」の設定のみを + リセットして改めてページレイアウトの設定を行う。 \end{itemize} なお、|\geometry| 命令を直接呼び出すことも可能である。 @@ -1245,6 +1296,34 @@ vscale=0.944, vmarginratio=1:1 のテキストを表すマクロ。 \end{itemize} +|label-section=modern| の場合に限り、以下の命令が利用できる。 + +\begin{itemize} +\item |\labelsection|\Means + 節見出し(|\section|)における節番号の表示形式を表すマクロ。 + 通常、|\thesection|(|section| カウンタの出力形式)に + 必要な装飾(“節”や“§”など)を加えたテキストを指定する。 + \par + 既定値は以下に示すものと同等になっている。 + \begin{itemize} + \item 文書開始時は“|\presectionname\thesection\postsectionname|”。 + \item 付録開始時(|\appendix| 実行時)に + “|\appendixname\thesection|”に切り替わる。 + \footnote{|\labelsection| を実際に再定義するわけではないので、 + ユーザが独自の |\labelsection| を設定している場合は + 切替は発生しなくなる。} + \end{itemize} + \Note |label-section=compat| の場合は(JSクラスと同様に) + 付録開始時に + 「|\presectionname| を |\appendixname| で上書きする」 + という動作が発生するが、|label-section=compat| では + これは起こらない。 +\item |\labelsubsection|/|\labelsubsubsection|\Means + これらのマクロが定義されている場合は、各々の内容のテキストが + 小節見出しおよび小々節見出しの表示形式として利用される。 + 未定義の場合は |\thesub(sub)section| で代用される。 +\end{itemize} + %------------------- \subsection{和文用設定関連} \label{ssec:ja-settings} @@ -1273,6 +1352,11 @@ vscale=0.944, vmarginratio=1:1 この命令は単純に |\hspace|\wbr|{\jsZw}| と等価である。 \item |\jaenspace|\Means 半角(0.5|\jsZw|)幅の水平空き。 +\item |\allowoldfontcommands|\Means + これ以降に実行される二文字フォント命令を警告の対象にしない。 +\item |\disallowoldfontcommands|\Means + これ以降に実行される二文字フォント命令を警告の対象にする。 +\Note 詳細については\ref{sec:Old-font-commands}節を参照されたい。 \end{itemize} \subsubsection{standard和文ドライバの場合} @@ -1298,7 +1382,9 @@ standard和文ドライバ(およびそれを継承するドライバ)では |\trueQ| を和文スケール値で割った長さ。 \footnote{命令名は“anti-scaled Q”の略。}% 例えば、|\fontsize{10\ascQ}{16\trueH}| - で和文のサイズが10\,Qになる。 + で和文のサイズが10\,Qになる。% + \footnote{1.5c版で導入された |\jafontsize| 命令を用いて % + |\jafontsize{10trueQ}{16trueH}| としてもよい。} \item |\ascpt|\Means 1\,true\,ptを和文スケール値で割った長さ。 例えば、|\fontsize{9\ascpt}{13truept}| @@ -1467,18 +1553,19 @@ BXJSクラスもその例に含まれる。 %------------------- \subsection{警告の内容} -現状では警告はとても控えめに出される。 -すなわち、文書中で |\bf| などの二文字フォント命令が呼び出された場合、 +文書中で |\bf| などの二文字フォント命令が呼び出された場合、 コンパイルの最後に(一度だけ)以下の警告メッセージが表示される。 \begin{quote}\small\begin{verbatim} -Class bxjsarticle Warning: Some old font commands were used in text -(bxjsarticle) (see the log output for detail). +Class bxjsarticle Warning: Some old font commands were used in text: +(bxjsarticle) \bf \it +(bxjsarticle) You should note, that since 1994 LaTeX2e provides a +(bxjsarticle) new font selection scheme called NFSS2 with several +(bxjsarticle) new, combinable font commands. The class provides +(bxjsarticle) the old font commands only for compatibility. \end{verbatim} \end{quote} -少し詳細な注意メッセージが、ログファイルのみに書き出される。 - なお、この警告は、パッケージの機能の実装として用いられたものも含めて 全ての二文字フォント命令の呼出が対象になる。 ただし例外として、thebibliography環境の内部で呼び出されたものだけは @@ -1515,8 +1602,8 @@ Class bxjsarticle Warning: Some old font commands were used in text %------------------- \subsection{将来的な二文字フォント命令の扱い} -\Note 以下の記述は現在存在する和文ドライバを使用する場合に -ついてのものである。 +\jemph{現在の版で存在する}和文ドライバを使用する場合には、 +将来的に以下の方針が維持される。 \begin{itemize} \item 二文字フォント命令に対する警告の様式は、 diff --git a/Master/texmf-dist/doc/latex/bxjscls/bxjscls.pdf b/Master/texmf-dist/doc/latex/bxjscls/bxjscls.pdf index a11b409f78b..f287278cc30 100644 Binary files a/Master/texmf-dist/doc/latex/bxjscls/bxjscls.pdf and b/Master/texmf-dist/doc/latex/bxjscls/bxjscls.pdf differ 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}|」の行が存在する % かにより判定している。 % (もっといい方法はないのか……。) diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls b/Master/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls index 99867ff3506..5fad2575f07 100644 --- a/Master/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls +++ b/Master/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls @@ -22,7 +22,7 @@ %% in the same archive or directory.) \NeedsTeXFormat{LaTeX2e} \ProvidesClass{bxjsarticle} - [2018/02/04 v1.7c BXJS document classes] + [2018/03/03 v1.8 BXJS document classes] %% このファイルは日本語文字を含みます. \def\bxjs@clsname{bxjsarticle} \newif\ifjsc@needsp@tch @@ -94,6 +94,45 @@ \expandafter\let\csname#1\expandafter\endcsname\csname#2\endcsname} \def\bxjs@catopt#1#2{% #1\if\relax#1\relax\else\if\relax#2\relax\else,\fi\fi#2} +\def\bxjs@ifplus#1{\@ifnextchar+{\@firstoftwo{#1}}} +\let\c@bxjs@tempcnta\@tempcnta +\def\bxjs@gset@tempcnta{\setcounter{bxjs@tempcnta}} +\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} +\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} + \def\bxjs@unit@Q{0.25mm}\let\bxjs@unit@H\bxjs@unit@Q \def\jsAtEndOfClass{% \expandafter\g@addto@macro\csname\bxjs@clsname.cls-h@@k\endcsname} \@onlypreamble\bxjs@restore@jltrcc @@ -150,30 +189,12 @@ \def\bxjs@param@basefontsize{10pt} \def\jsUnusualPtSize{-20} \def\bxjs@setbasefontsize#1{% - \bxjs@setbasefontlength\@tempdima{#1}% + \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} -\def\bxjs@setbasefontlength#1#2{% - \bxjs@setbasefontlength@a#2true\@nnil - \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} \newif\ifjsc@mag \newif\ifjsc@mag@xreal \DeclareOption{8pt}{\bxjs@setbasefontsize{8pt}} @@ -442,23 +463,18 @@ \def\bxjs@error@keyval#1#2{% \ClassError\bxjs@clsname {Invalid value '#2' for option #1}\@ehc} -\newif\ifbxjs@scaleset \def\jsScale{0.924715} -\define@key{bxjs}{base}{\bxjs@setbasefontsize{#1}} -\@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}{base}{% + \edef\bxjs@base@opt{#1}% + \bxjs@setbasefontsize{#1}} +\define@key{bxjs}{fontsize}{\setkeys{bxjs}{base=#1}} +\define@key{bxjs}{jbase}{\edef\bxjs@jbase@opt{#1}} +\define@key{bxjs}{jafontsize}{\setkeys{bxjs}{jbase=#1}} \define@key{bxjs}{scale}{% - \bxjs@scalesettrue - \edef\jsScale{#1}} -\DeclareOption{noscale}{% - \bxjs@scalesettrue - \def\jsScale{1}} + \edef\bxjs@scale@opt{#1}% + \let\jsScale\bxjs@scale@opt} +\define@key{bxjs}{jsfontscale}{\setkeys{bxjs}{scale=#1}} +\DeclareOption{noscale}{\setkeys{bxjs}{scale=1}} \let\bxjs@param@mag\relax \define@key{bxjs}{mag}{\edef\bxjs@param@mag{#1}} \define@key{bxjs}{paper}{\edef\bxjs@param@paper{#1}} @@ -535,6 +551,10 @@ \bxjs@set@keyval{layout}{#1}{}} \define@key{bxjs}{textwidth-limit}{% \edef\bxjs@textwidth@limit{#1}} +\define@key{bxjs}{textwidth}{\edef\bxjs@textwidth@opt{#1}} +\define@key{bxjs}{line_length}{\setkeys{bxjs}{textwidth=#1}} +\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}} \define@key{bxjs}{paragraph-mark}{% \edef\bxjs@paragraph@mark{#1}} \newif\ifbxjs@whole@zw@lines \bxjs@whole@zw@linestrue @@ -723,7 +743,23 @@ The default value 'nomag*' is used instead.\MessageBreak \@ehc} \fi \fi -\bxjs@do@opt@jbase +\ifx\bxjs@jbase@opt\@undefined\else + \ifx\bxjs@base@opt\@undefined + \jsSetQHLength\@tempdima{\bxjs@jbase@opt}% + \bxjs@invscale\@tempdima\jsScale + \bxjs@setbasefontsize{\@tempdima}% + \else + \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 \let\Cjascale\jsScale \if \if p\jsEngine T\else\if n\jsEngine T\else F\fi\fi T \@tempcnta="80 \loop \ifnum\@tempcnta<"100 @@ -760,8 +796,7 @@ \divide\@tempdima16384\relax \@tempcnta\@tempdima\relax \edef\bxjs@param@mag{\the\@tempcnta} \else - \let\c@bxjs@cnta\@tempcnta - \setcounter{bxjs@cnta}{\bxjs@param@mag} + \bxjs@gset@tempcnta{\bxjs@param@mag} \ifnum\@tempcnta<\z@ \@tempcnta=\z@ \fi \edef\bxjs@param@mag{\the\@tempcnta} \advance\@tempcnta100000 @@ -983,23 +1018,37 @@ \mag=\bxjs@param@mag \fi \setlength{\topskip}{10\p@?} +\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 \def\bxjs@read@a{\futurelet\bxjs@tmpa\bxjs@read@b} \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 \edef\bxjs@layout@paper{% \ifjsc@mag truedimen,\fi \if@landscape landscape,\fi \bxjs@param@paper} -\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,% } +\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 \newdimen\fullwidth \def\bxjs@postproc@layout{% \ifx\bxjs@geometry@driver\relax\else @@ -1008,6 +1057,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 @@ -1016,6 +1066,7 @@ \fullwidth=\textwidth \@tempdimb=\textheight \advance\textheight-\topskip + \advance\textheight.005pt\relax \divide\textheight\baselineskip \multiply\textheight\baselineskip \advance\textheight\topskip \advance\@tempdimb-\textheight @@ -1037,11 +1088,10 @@ \edef\jsGeometryOptions{% \bxjs@layout@paper,\bxjs@layout} \ifx\bxjs@geometry\bxjs@geometry@class -\@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} \ifbxjs@papersize \ifx\bxjs@driver@given\bxjs@driver@@dvipdfmx \PassOptionsToPackage{dvipdfm}{geometry} @@ -1052,11 +1102,13 @@ \else \PassOptionsToPackage{driver=none}{geometry} \fi -\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} \let\bxjs@geometry@driver\Gm@driver \bxjs@postproc@layout @@ -1079,14 +1131,23 @@ \fi \fi }{}} -\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} \else\ifx\bxjs@geometry\bxjs@geometry@user \AtBeginDocument{\bxjs@check@page@layout} \@onlypreamble\bxjs@check@page@layout @@ -1100,8 +1161,9 @@ \setlength{\textwidth}{6.5in}% \setlength{\textheight}{8in}} \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 @@ -1831,18 +1893,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} \def\bxjs@warnoldfontcmd@kick@final{% \g@addto@macro\clearpage{\bxjs@warnoldfontcmd@final}} diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls b/Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls index c1b656e1aaf..1bd2325456d 100644 --- a/Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls +++ b/Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls @@ -22,7 +22,7 @@ %% in the same archive or directory.) \NeedsTeXFormat{LaTeX2e} \ProvidesClass{bxjsbook} - [2018/02/04 v1.7c BXJS document classes] + [2018/03/03 v1.8 BXJS document classes] %% このファイルは日本語文字を含みます. \def\bxjs@clsname{bxjsbook} \newif\ifjsc@needsp@tch @@ -94,6 +94,45 @@ \expandafter\let\csname#1\expandafter\endcsname\csname#2\endcsname} \def\bxjs@catopt#1#2{% #1\if\relax#1\relax\else\if\relax#2\relax\else,\fi\fi#2} +\def\bxjs@ifplus#1{\@ifnextchar+{\@firstoftwo{#1}}} +\let\c@bxjs@tempcnta\@tempcnta +\def\bxjs@gset@tempcnta{\setcounter{bxjs@tempcnta}} +\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} +\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} + \def\bxjs@unit@Q{0.25mm}\let\bxjs@unit@H\bxjs@unit@Q \def\jsAtEndOfClass{% \expandafter\g@addto@macro\csname\bxjs@clsname.cls-h@@k\endcsname} \@onlypreamble\bxjs@restore@jltrcc @@ -153,30 +192,12 @@ \def\bxjs@param@basefontsize{10pt} \def\jsUnusualPtSize{-20} \def\bxjs@setbasefontsize#1{% - \bxjs@setbasefontlength\@tempdima{#1}% + \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} -\def\bxjs@setbasefontlength#1#2{% - \bxjs@setbasefontlength@a#2true\@nnil - \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} \newif\ifjsc@mag \newif\ifjsc@mag@xreal \DeclareOption{8pt}{\bxjs@setbasefontsize{8pt}} @@ -448,23 +469,18 @@ \def\bxjs@error@keyval#1#2{% \ClassError\bxjs@clsname {Invalid value '#2' for option #1}\@ehc} -\newif\ifbxjs@scaleset \def\jsScale{0.924715} -\define@key{bxjs}{base}{\bxjs@setbasefontsize{#1}} -\@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}{base}{% + \edef\bxjs@base@opt{#1}% + \bxjs@setbasefontsize{#1}} +\define@key{bxjs}{fontsize}{\setkeys{bxjs}{base=#1}} +\define@key{bxjs}{jbase}{\edef\bxjs@jbase@opt{#1}} +\define@key{bxjs}{jafontsize}{\setkeys{bxjs}{jbase=#1}} \define@key{bxjs}{scale}{% - \bxjs@scalesettrue - \edef\jsScale{#1}} -\DeclareOption{noscale}{% - \bxjs@scalesettrue - \def\jsScale{1}} + \edef\bxjs@scale@opt{#1}% + \let\jsScale\bxjs@scale@opt} +\define@key{bxjs}{jsfontscale}{\setkeys{bxjs}{scale=#1}} +\DeclareOption{noscale}{\setkeys{bxjs}{scale=1}} \let\bxjs@param@mag\relax \define@key{bxjs}{mag}{\edef\bxjs@param@mag{#1}} \define@key{bxjs}{paper}{\edef\bxjs@param@paper{#1}} @@ -544,6 +560,10 @@ \bxjs@set@keyval{layout}{#1}{}} \define@key{bxjs}{textwidth-limit}{% \edef\bxjs@textwidth@limit{#1}} +\define@key{bxjs}{textwidth}{\edef\bxjs@textwidth@opt{#1}} +\define@key{bxjs}{line_length}{\setkeys{bxjs}{textwidth=#1}} +\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}} \define@key{bxjs}{paragraph-mark}{% \edef\bxjs@paragraph@mark{#1}} \newif\ifbxjs@whole@zw@lines \bxjs@whole@zw@linestrue @@ -732,7 +752,23 @@ The default value 'nomag*' is used instead.\MessageBreak \@ehc} \fi \fi -\bxjs@do@opt@jbase +\ifx\bxjs@jbase@opt\@undefined\else + \ifx\bxjs@base@opt\@undefined + \jsSetQHLength\@tempdima{\bxjs@jbase@opt}% + \bxjs@invscale\@tempdima\jsScale + \bxjs@setbasefontsize{\@tempdima}% + \else + \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 \let\Cjascale\jsScale \if \if p\jsEngine T\else\if n\jsEngine T\else F\fi\fi T \@tempcnta="80 \loop \ifnum\@tempcnta<"100 @@ -769,8 +805,7 @@ \divide\@tempdima16384\relax \@tempcnta\@tempdima\relax \edef\bxjs@param@mag{\the\@tempcnta} \else - \let\c@bxjs@cnta\@tempcnta - \setcounter{bxjs@cnta}{\bxjs@param@mag} + \bxjs@gset@tempcnta{\bxjs@param@mag} \ifnum\@tempcnta<\z@ \@tempcnta=\z@ \fi \edef\bxjs@param@mag{\the\@tempcnta} \advance\@tempcnta100000 @@ -992,35 +1027,43 @@ \mag=\bxjs@param@mag \fi \setlength{\topskip}{10\p@?} +\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 \def\bxjs@read@a{\futurelet\bxjs@tmpa\bxjs@read@b} \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 \edef\bxjs@layout@paper{% \ifjsc@mag truedimen,\fi \if@landscape landscape,\fi \bxjs@param@paper} -\ifbxjs@layout@buggyhmargin %--- -\def\bxjs@layout{% +\def\bxjs@layout@base{% headheight=\topskip,headsep=6\jsc@mmm,nofoot,includeheadfoot,% +} +\ifbxjs@layout@buggyhmargin %--- +\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 %--- +\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 \newdimen\fullwidth \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 \def\bxjs@postproc@layout{% @@ -1030,18 +1073,24 @@ \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 \advance\evensidemargin 0.5\@tempdimb \fi \fullwidth=\textwidth - \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 \@tempdimb=\textheight \advance\textheight-\topskip + \advance\textheight.005pt\relax \divide\textheight\baselineskip \multiply\textheight\baselineskip \advance\textheight\topskip \advance\@tempdimb-\textheight @@ -1063,11 +1112,10 @@ \edef\jsGeometryOptions{% \bxjs@layout@paper,\bxjs@layout} \ifx\bxjs@geometry\bxjs@geometry@class -\@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} \ifbxjs@papersize \ifx\bxjs@driver@given\bxjs@driver@@dvipdfmx \PassOptionsToPackage{dvipdfm}{geometry} @@ -1078,11 +1126,13 @@ \else \PassOptionsToPackage{driver=none}{geometry} \fi -\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} \let\bxjs@geometry@driver\Gm@driver \bxjs@postproc@layout @@ -1105,14 +1155,23 @@ \fi \fi }{}} -\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} \else\ifx\bxjs@geometry\bxjs@geometry@user \AtBeginDocument{\bxjs@check@page@layout} \@onlypreamble\bxjs@check@page@layout @@ -1126,8 +1185,9 @@ \setlength{\textwidth}{6.5in}% \setlength{\textheight}{8in}} \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 @@ -1907,18 +1967,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} \def\bxjs@warnoldfontcmd@kick@final{% \g@addto@macro\clearpage{\bxjs@warnoldfontcmd@final}} diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty b/Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty index 24395431610..9dac9a4767c 100644 --- a/Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty +++ b/Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty @@ -21,7 +21,7 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) \ProvidesPackage{bxjscjkcat} - [2018/02/04 v1.7c BXJS document classes] + [2018/03/03 v1.8 BXJS document classes] \def\bxjx@pkgname{bxjscjkcat} \newcount\bxjx@cnta \let\bxjx@engine=n diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty b/Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty index 619c62af509..f809e173920 100644 --- a/Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty +++ b/Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty @@ -21,7 +21,7 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) \ProvidesPackage{bxjscompat} - [2018/02/04 v1.7c BXJS document classes] + [2018/03/03 v1.8 BXJS document classes] \def\bxac@pkgname{bxjscompat} \let\bxac@engine=n \def\bxac@do#1#2{% diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjsja-minimal.def b/Master/texmf-dist/tex/latex/bxjscls/bxjsja-minimal.def index f9d90b5ce1a..fb4b292fd58 100644 --- a/Master/texmf-dist/tex/latex/bxjscls/bxjsja-minimal.def +++ b/Master/texmf-dist/tex/latex/bxjscls/bxjsja-minimal.def @@ -21,7 +21,7 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) \ProvidesFile{bxjsja-minimal.def} - [2018/02/04 v1.7c BXJS document classes] + [2018/03/03 v1.8 BXJS document classes] %% このファイルは日本語文字を含みます \def\DeclareJaTextFontCommand#1#2{% \DeclareRobustCommand#1[1]{% @@ -111,13 +111,13 @@ \def\bxjs@let@hchar@chr@ue@d#1#2#3#4{% \bxjs@let@hchar@out\def{{#1#2#3#4}}} \ifx j\jsEngine -\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{% - \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{% + \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 \edef\jsc@JYn{\ifjsWithupTeX JY2\else JY1\fi} @@ -195,6 +195,9 @@ \bxjs@if@sf@default{% \renewcommand\kanjifamilydefault{\gtdefault}} \selectfont +\def\bxjs@parse@qh#1{\let\bxjs@tmpb\relax} +\let\bxjs@parse@qh@a\@undefined +\let\bxjs@parse@qh@b\@undefined \prebreakpenalty\jis"2147=10000 \postbreakpenalty\jis"2148=10000 \prebreakpenalty\jis"2149=10000 diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjsja-modern.def b/Master/texmf-dist/tex/latex/bxjscls/bxjsja-modern.def index 721d7b14da7..66db17297bc 100644 --- a/Master/texmf-dist/tex/latex/bxjscls/bxjsja-modern.def +++ b/Master/texmf-dist/tex/latex/bxjscls/bxjsja-modern.def @@ -21,7 +21,7 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) \ProvidesFile{bxjsja-modern.def} - [2018/02/04 v1.7c BXJS document classes] + [2018/03/03 v1.8 BXJS document classes] \input{bxjsja-standard.def} \ifnum0\if x\jsEngine1\fi\if l\jsEngine1\fi=\z@ \def\encodingdefault{T1}% diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjsja-pandoc.def b/Master/texmf-dist/tex/latex/bxjscls/bxjsja-pandoc.def index 48778b0b716..781af49b0f9 100644 --- a/Master/texmf-dist/tex/latex/bxjscls/bxjsja-pandoc.def +++ b/Master/texmf-dist/tex/latex/bxjscls/bxjsja-pandoc.def @@ -21,7 +21,7 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) \ProvidesFile{bxjsja-pandoc.def} - [2018/02/04 v1.7c BXJS document classes] + [2018/03/03 v1.8 BXJS document classes] \input{bxjsja-standard.def} \RequirePackage{bxjspandoc} \@onlypreamble\bxjs@set@dupload@proc diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def b/Master/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def index 2485dcf0910..8d3dadeede5 100644 --- a/Master/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def +++ b/Master/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def @@ -21,7 +21,7 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) \ProvidesFile{bxjsja-standard.def} - [2018/02/04 v1.7c BXJS document classes] + [2018/03/03 v1.8 BXJS document classes] %% このファイルは日本語文字を含みます \input{bxjsja-minimal.def} \bxjs@simplejasetupfalse @@ -54,14 +54,21 @@ \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 +\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 \ifbxjs@jp@units \def\bxjs@let@lenexpr#1#2{% \edef#1{#2}% @@ -90,36 +97,6 @@ \@tempdima\bxjs@truept \bxjs@invscale\@tempdima\jsScale \protected\edef\ascpt{\dimexpr\the\@tempdima\relax} \fi -\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} -\if j\jsEngine -\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 \def\jafontsize#1#2{% \begingroup \bxjs@jafontsize@a{#1}% diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjspandoc.sty b/Master/texmf-dist/tex/latex/bxjscls/bxjspandoc.sty index ad454c36832..e2396410491 100644 --- a/Master/texmf-dist/tex/latex/bxjscls/bxjspandoc.sty +++ b/Master/texmf-dist/tex/latex/bxjscls/bxjspandoc.sty @@ -21,7 +21,7 @@ %% same distribution. (The sources need not necessarily be %% in the same archive or directory.) \ProvidesPackage{bxjspandoc} - [2018/02/04 v1.7c BXJS document classes] + [2018/03/03 v1.8 BXJS document classes] %% このファイルは日本語文字を含みます. \def\bxjsp@pkgname{bxjscjkcat} \let\bxjsp@engine=n diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls b/Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls index 3d794a67c70..0081e761935 100644 --- a/Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls +++ b/Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls @@ -22,7 +22,7 @@ %% in the same archive or directory.) \NeedsTeXFormat{LaTeX2e} \ProvidesClass{bxjsreport} - [2018/02/04 v1.7c BXJS document classes] + [2018/03/03 v1.8 BXJS document classes] %% このファイルは日本語文字を含みます. \def\bxjs@clsname{bxjsreport} \newif\ifjsc@needsp@tch @@ -94,6 +94,45 @@ \expandafter\let\csname#1\expandafter\endcsname\csname#2\endcsname} \def\bxjs@catopt#1#2{% #1\if\relax#1\relax\else\if\relax#2\relax\else,\fi\fi#2} +\def\bxjs@ifplus#1{\@ifnextchar+{\@firstoftwo{#1}}} +\let\c@bxjs@tempcnta\@tempcnta +\def\bxjs@gset@tempcnta{\setcounter{bxjs@tempcnta}} +\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} +\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} + \def\bxjs@unit@Q{0.25mm}\let\bxjs@unit@H\bxjs@unit@Q \def\jsAtEndOfClass{% \expandafter\g@addto@macro\csname\bxjs@clsname.cls-h@@k\endcsname} \@onlypreamble\bxjs@restore@jltrcc @@ -153,30 +192,12 @@ \def\bxjs@param@basefontsize{10pt} \def\jsUnusualPtSize{-20} \def\bxjs@setbasefontsize#1{% - \bxjs@setbasefontlength\@tempdima{#1}% + \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} -\def\bxjs@setbasefontlength#1#2{% - \bxjs@setbasefontlength@a#2true\@nnil - \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} \newif\ifjsc@mag \newif\ifjsc@mag@xreal \DeclareOption{8pt}{\bxjs@setbasefontsize{8pt}} @@ -448,23 +469,18 @@ \def\bxjs@error@keyval#1#2{% \ClassError\bxjs@clsname {Invalid value '#2' for option #1}\@ehc} -\newif\ifbxjs@scaleset \def\jsScale{0.924715} -\define@key{bxjs}{base}{\bxjs@setbasefontsize{#1}} -\@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}{base}{% + \edef\bxjs@base@opt{#1}% + \bxjs@setbasefontsize{#1}} +\define@key{bxjs}{fontsize}{\setkeys{bxjs}{base=#1}} +\define@key{bxjs}{jbase}{\edef\bxjs@jbase@opt{#1}} +\define@key{bxjs}{jafontsize}{\setkeys{bxjs}{jbase=#1}} \define@key{bxjs}{scale}{% - \bxjs@scalesettrue - \edef\jsScale{#1}} -\DeclareOption{noscale}{% - \bxjs@scalesettrue - \def\jsScale{1}} + \edef\bxjs@scale@opt{#1}% + \let\jsScale\bxjs@scale@opt} +\define@key{bxjs}{jsfontscale}{\setkeys{bxjs}{scale=#1}} +\DeclareOption{noscale}{\setkeys{bxjs}{scale=1}} \let\bxjs@param@mag\relax \define@key{bxjs}{mag}{\edef\bxjs@param@mag{#1}} \define@key{bxjs}{paper}{\edef\bxjs@param@paper{#1}} @@ -543,6 +559,10 @@ \bxjs@set@keyval{layout}{#1}{}} \define@key{bxjs}{textwidth-limit}{% \edef\bxjs@textwidth@limit{#1}} +\define@key{bxjs}{textwidth}{\edef\bxjs@textwidth@opt{#1}} +\define@key{bxjs}{line_length}{\setkeys{bxjs}{textwidth=#1}} +\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}} \define@key{bxjs}{paragraph-mark}{% \edef\bxjs@paragraph@mark{#1}} \newif\ifbxjs@whole@zw@lines \bxjs@whole@zw@linestrue @@ -731,7 +751,23 @@ The default value 'nomag*' is used instead.\MessageBreak \@ehc} \fi \fi -\bxjs@do@opt@jbase +\ifx\bxjs@jbase@opt\@undefined\else + \ifx\bxjs@base@opt\@undefined + \jsSetQHLength\@tempdima{\bxjs@jbase@opt}% + \bxjs@invscale\@tempdima\jsScale + \bxjs@setbasefontsize{\@tempdima}% + \else + \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 \let\Cjascale\jsScale \if \if p\jsEngine T\else\if n\jsEngine T\else F\fi\fi T \@tempcnta="80 \loop \ifnum\@tempcnta<"100 @@ -768,8 +804,7 @@ \divide\@tempdima16384\relax \@tempcnta\@tempdima\relax \edef\bxjs@param@mag{\the\@tempcnta} \else - \let\c@bxjs@cnta\@tempcnta - \setcounter{bxjs@cnta}{\bxjs@param@mag} + \bxjs@gset@tempcnta{\bxjs@param@mag} \ifnum\@tempcnta<\z@ \@tempcnta=\z@ \fi \edef\bxjs@param@mag{\the\@tempcnta} \advance\@tempcnta100000 @@ -991,23 +1026,37 @@ \mag=\bxjs@param@mag \fi \setlength{\topskip}{10\p@?} +\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 \def\bxjs@read@a{\futurelet\bxjs@tmpa\bxjs@read@b} \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 \edef\bxjs@layout@paper{% \ifjsc@mag truedimen,\fi \if@landscape landscape,\fi \bxjs@param@paper} -\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,% } +\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 \newdimen\fullwidth \def\bxjs@postproc@layout{% \ifx\bxjs@geometry@driver\relax\else @@ -1016,6 +1065,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 @@ -1024,6 +1074,7 @@ \fullwidth=\textwidth \@tempdimb=\textheight \advance\textheight-\topskip + \advance\textheight.005pt\relax \divide\textheight\baselineskip \multiply\textheight\baselineskip \advance\textheight\topskip \advance\@tempdimb-\textheight @@ -1045,11 +1096,10 @@ \edef\jsGeometryOptions{% \bxjs@layout@paper,\bxjs@layout} \ifx\bxjs@geometry\bxjs@geometry@class -\@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} \ifbxjs@papersize \ifx\bxjs@driver@given\bxjs@driver@@dvipdfmx \PassOptionsToPackage{dvipdfm}{geometry} @@ -1060,11 +1110,13 @@ \else \PassOptionsToPackage{driver=none}{geometry} \fi -\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} \let\bxjs@geometry@driver\Gm@driver \bxjs@postproc@layout @@ -1087,14 +1139,23 @@ \fi \fi }{}} -\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} \else\ifx\bxjs@geometry\bxjs@geometry@user \AtBeginDocument{\bxjs@check@page@layout} \@onlypreamble\bxjs@check@page@layout @@ -1108,8 +1169,9 @@ \setlength{\textwidth}{6.5in}% \setlength{\textheight}{8in}} \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 @@ -1937,18 +1999,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} \def\bxjs@warnoldfontcmd@kick@final{% \g@addto@macro\clearpage{\bxjs@warnoldfontcmd@final}} diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls b/Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls index 211b0c71777..bd9d15db150 100644 --- a/Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls +++ b/Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls @@ -22,7 +22,7 @@ %% in the same archive or directory.) \NeedsTeXFormat{LaTeX2e} \ProvidesClass{bxjsslide} - [2018/02/04 v1.7c BXJS document classes] + [2018/03/03 v1.8 BXJS document classes] %% このファイルは日本語文字を含みます. \def\bxjs@clsname{bxjsslide} \newif\ifjsc@needsp@tch @@ -94,6 +94,45 @@ \expandafter\let\csname#1\expandafter\endcsname\csname#2\endcsname} \def\bxjs@catopt#1#2{% #1\if\relax#1\relax\else\if\relax#2\relax\else,\fi\fi#2} +\def\bxjs@ifplus#1{\@ifnextchar+{\@firstoftwo{#1}}} +\let\c@bxjs@tempcnta\@tempcnta +\def\bxjs@gset@tempcnta{\setcounter{bxjs@tempcnta}} +\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} +\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} + \def\bxjs@unit@Q{0.25mm}\let\bxjs@unit@H\bxjs@unit@Q \def\jsAtEndOfClass{% \expandafter\g@addto@macro\csname\bxjs@clsname.cls-h@@k\endcsname} \@onlypreamble\bxjs@restore@jltrcc @@ -150,30 +189,12 @@ \def\bxjs@param@basefontsize{10pt} \def\jsUnusualPtSize{-20} \def\bxjs@setbasefontsize#1{% - \bxjs@setbasefontlength\@tempdima{#1}% + \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} -\def\bxjs@setbasefontlength#1#2{% - \bxjs@setbasefontlength@a#2true\@nnil - \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} \newif\ifjsc@mag \newif\ifjsc@mag@xreal \DeclareOption{8pt}{\bxjs@setbasefontsize{8pt}} @@ -442,23 +463,18 @@ \def\bxjs@error@keyval#1#2{% \ClassError\bxjs@clsname {Invalid value '#2' for option #1}\@ehc} -\newif\ifbxjs@scaleset \def\jsScale{0.924715} -\define@key{bxjs}{base}{\bxjs@setbasefontsize{#1}} -\@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}{base}{% + \edef\bxjs@base@opt{#1}% + \bxjs@setbasefontsize{#1}} +\define@key{bxjs}{fontsize}{\setkeys{bxjs}{base=#1}} +\define@key{bxjs}{jbase}{\edef\bxjs@jbase@opt{#1}} +\define@key{bxjs}{jafontsize}{\setkeys{bxjs}{jbase=#1}} \define@key{bxjs}{scale}{% - \bxjs@scalesettrue - \edef\jsScale{#1}} -\DeclareOption{noscale}{% - \bxjs@scalesettrue - \def\jsScale{1}} + \edef\bxjs@scale@opt{#1}% + \let\jsScale\bxjs@scale@opt} +\define@key{bxjs}{jsfontscale}{\setkeys{bxjs}{scale=#1}} +\DeclareOption{noscale}{\setkeys{bxjs}{scale=1}} \let\bxjs@param@mag\relax \define@key{bxjs}{mag}{\edef\bxjs@param@mag{#1}} \define@key{bxjs}{paper}{\edef\bxjs@param@paper{#1}} @@ -535,6 +551,10 @@ \bxjs@set@keyval{layout}{#1}{}} \define@key{bxjs}{textwidth-limit}{% \edef\bxjs@textwidth@limit{#1}} +\define@key{bxjs}{textwidth}{\edef\bxjs@textwidth@opt{#1}} +\define@key{bxjs}{line_length}{\setkeys{bxjs}{textwidth=#1}} +\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}} \define@key{bxjs}{paragraph-mark}{% \edef\bxjs@paragraph@mark{#1}} \newif\ifbxjs@whole@zw@lines \bxjs@whole@zw@linestrue @@ -723,7 +743,23 @@ The default value 'nomag*' is used instead.\MessageBreak \@ehc} \fi \fi -\bxjs@do@opt@jbase +\ifx\bxjs@jbase@opt\@undefined\else + \ifx\bxjs@base@opt\@undefined + \jsSetQHLength\@tempdima{\bxjs@jbase@opt}% + \bxjs@invscale\@tempdima\jsScale + \bxjs@setbasefontsize{\@tempdima}% + \else + \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 \let\Cjascale\jsScale \if \if p\jsEngine T\else\if n\jsEngine T\else F\fi\fi T \@tempcnta="80 \loop \ifnum\@tempcnta<"100 @@ -759,8 +795,7 @@ \divide\@tempdima16384\relax \@tempcnta\@tempdima\relax \edef\bxjs@param@mag{\the\@tempcnta} \else - \let\c@bxjs@cnta\@tempcnta - \setcounter{bxjs@cnta}{\bxjs@param@mag} + \bxjs@gset@tempcnta{\bxjs@param@mag} \ifnum\@tempcnta<\z@ \@tempcnta=\z@ \fi \edef\bxjs@param@mag{\the\@tempcnta} \advance\@tempcnta100000 @@ -982,22 +1017,36 @@ \mag=\bxjs@param@mag \fi \setlength{\topskip}{10\p@?} +\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 \def\bxjs@read@a{\futurelet\bxjs@tmpa\bxjs@read@b} \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 \edef\bxjs@layout@paper{% \ifjsc@mag truedimen,\fi \if@landscape landscape,\fi \bxjs@param@paper} -\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,% } +\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 \newdimen\fullwidth \def\bxjs@postproc@layout{% \ifx\bxjs@geometry@driver\relax\else @@ -1006,6 +1055,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 @@ -1014,6 +1064,7 @@ \fullwidth=\textwidth \@tempdimb=\textheight \advance\textheight-\topskip + \advance\textheight.005pt\relax \divide\textheight\baselineskip \multiply\textheight\baselineskip \advance\textheight\topskip \advance\@tempdimb-\textheight @@ -1035,11 +1086,10 @@ \edef\jsGeometryOptions{% \bxjs@layout@paper,\bxjs@layout} \ifx\bxjs@geometry\bxjs@geometry@class -\@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} \ifbxjs@papersize \ifx\bxjs@driver@given\bxjs@driver@@dvipdfmx \PassOptionsToPackage{dvipdfm}{geometry} @@ -1050,11 +1100,13 @@ \else \PassOptionsToPackage{driver=none}{geometry} \fi -\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} \let\bxjs@geometry@driver\Gm@driver \bxjs@postproc@layout @@ -1077,14 +1129,23 @@ \fi \fi }{}} -\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} \else\ifx\bxjs@geometry\bxjs@geometry@user \AtBeginDocument{\bxjs@check@page@layout} \@onlypreamble\bxjs@check@page@layout @@ -1098,8 +1159,9 @@ \setlength{\textwidth}{6.5in}% \setlength{\textheight}{8in}} \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 @@ -1829,18 +1891,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} \def\bxjs@warnoldfontcmd@kick@final{% \g@addto@macro\clearpage{\bxjs@warnoldfontcmd@final}} -- cgit v1.2.3