From 966b2da047b5098fa6af86d4df052b18b62ce6cb Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 1 Aug 2016 21:41:12 +0000 Subject: bxjscls (1aug16) git-svn-id: svn://tug.org/texlive/trunk@41783 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx | 502 ++++++++++++++++----- 1 file changed, 395 insertions(+), 107 deletions(-) (limited to 'Master/texmf-dist/source/latex/bxjscls') diff --git a/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx b/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx index d0f6af9df3f..198071a1419 100644 --- a/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx +++ b/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx @@ -70,7 +70,9 @@ %<*driver> \ProvidesFile{bxjscls.dtx} % - [2016/07/16 v1.1f BXJS document classes] + [2016/08/01 v1.2 BXJS document classes] +% based on jsclasses [2016/07/18] +% [2016/07/16 v1.1f BXJS document classes] % based on jsclasses [2016/07/15] % [2016/05/28 v1.1e BXJS document classes] % [2016/05/21 v1.1d BXJS document classes] @@ -94,7 +96,10 @@ \newcommand{\Pkg}[1]{\textsf{#1}} \newcommand{\Meta}[1]{$\langle$\mbox{}#1\mbox{}$\rangle$} \newcommand{\Note}{\par\noindent ※} +\newcommand{\TODO}{\par\noindent + {\usefont{OT1}{cmss}{sbc}{n}\color{red}TODO:}\ } \newcommand{\Means}{~:\quad} +\newcommand{\ZRX}{☃} \newenvironment{ZRnote} {\StartZRnote}{\EndZRnote} \newcommand*{\ZRnoteline}[1]{ @@ -117,6 +122,7 @@ \setlength\marginparpush{0pt} % \OnlyDescription \DisableCrossrefs +\CodelineNumbered \setcounter{StandardModuleDepth}{1} \GetFileInfo{bxjscls.dtx} \begin{document} @@ -143,6 +149,8 @@ % ユーザマニュアル |bxjscls-manual.pdf| を参照してください。 % \end{ZRnote} % +% \tableofcontents +% % \section{はじめに} % % \begin{ZRnote} @@ -215,7 +223,7 @@ % % 以下では実際のコードに即して説明します。 % -% \paragraph{BXJSクラス特有の設定 ☆} +% \paragraph{BXJSクラス特有の設定 \ZRX} % % \mbox{} % \begin{ZRnote} @@ -369,10 +377,13 @@ % \end{macro} % % Lua\TeX の場合、原版のコード中のコントロールワード中に現れる -% 日本語文字のカテゴリコードを11に変更する。 -% (元は12。) -% ただし、読込終了時点で元に戻しているので、日本語文字のコントロール -% ワードのマクロはそのままでは使える状態になっていない。 +% 日本語文字のカテゴリコードを一時的に11に変更する。 +% クラス読込終了時点で元に戻される。 +% \Note 現在の{Lua\LaTeX}では、漢字のカテゴリコードは最初から11に +% なっているので、この処理は特段の意味を持たない。 +% しかし、昔は12になっていて、この場合、日本語文字の +% コントロールワードの命令を使用するには、カテゴリコードを11に +% 変更する必要がある。 % \begin{macrocode} \@onlypreamble\bxjs@restore@jltrcc \let\bxjs@restore@jltrcc\@empty @@ -393,6 +404,21 @@ \bxjs@robust@def\jsInhibitGlue{% \ifx\inhibitglue\@undefined\else \inhibitglue \fi} % \end{macrocode} +% +% 万が一「2.09互換モード」になっていた場合は、 +% これ以上進むと危険なので強制終了させる。 +% \begin{macrocode} +\if@compatibility + \ClassError\bxjs@clsname + {Something went chaotic!\MessageBreak + I cannot go a single step further...} + {If the chant of \string\documentstyle\space was just a blunder + of yours,\MessageBreak then there'll still be hope....} + \expandafter\@firstofone +\else \expandafter\@gobble +\fi{\typeout{Farewell!}\endinput\@@end} +% \end{macrocode} +% % \end{ZRnote} % % \section{オプション} @@ -781,6 +807,7 @@ % これは |ifdraft| パッケージと衝突するので、代わりに |\ifjsDraft| % の名前を用い、本文開始時に |\ifdraft| が未定義の場合に限り、 % |\ifjsDraft| を |\ifdraft| にコピーする処理にする。 +% \Note |\ifdraft| は2.0版で廃止予定。 % \end{ZRnote} % \begin{macrocode} \let\ifjsDraft\iffalse @@ -835,7 +862,7 @@ % BXJS では `|report|' 相当のものは別に |bxjsreport| クラスとして用意する。 % \end{ZRnote} % -% \paragraph{BXJS特有のオプションの一覧 ☆} +% \paragraph{BXJS特有のオプションの一覧 \ZRX} % \mbox{} % \begin{ZRnote} % \begin{itemize} @@ -846,6 +873,14 @@ % \item |zw|/|nozw| : |\jsZw| と等価な命令として |\zw| を % 定義する/しない。 % \item |js|/|nojs| : JSクラスを読込済として扱う/扱わない。 +% \item |precisetext|/|noprecisetext| : {\XeTeX}の``generateactualtext''を +% 有効/無効にする。 +% \item |simplejasetup|/|nosimplejasetup| : {\XeTeX}の``linebreaklocale''を +% 有効/無効にする。 +% \item |bigcode|/|nobigcode| : {\upTeX}でCMapとして |UTF8-UCS2| の +% 代わりに |UTF8-UTF16| を使う/使わない。 +% \item |oldfontcommands|/|nooldfontcommands| : 古い“二文字フォント命令” +% に対する警告を抑止する/しない。 % \item |base=|\meta{dimen} : 基底フォントサイズを直接指定する。 % (|xxpt| オプションの代用なので、既定値は10\,ptである。) % \item |jbase=|\meta{dimen} : 基底フォントサイズを“和文規準で” @@ -858,17 +893,26 @@ % \item |mag=|\meta{int} : |\mag| 値の直接設定。既定は |base| から算出する。 % \item |paper={|\meta{dimen:width}|}{|\meta{dimen:height}|}| : 用紙サイズ設定。 % 用紙サイズオプションの代用で、既定値は |a4paper| 相当。 +% \item |ja=|\meta{name} : 使用する和文ドライバの指定。 +% \item |jafont=|\meta{name} : 和文フォントプリセットの指定。 +% \item |japaram=|\meta{name} : 和文フォントパラメタの指定。 % \item |magstyle=|\meta{name} : “版面拡大”の実現方法の選択。 +% \item |dvi=|\meta{name} : DVIモードの時のみに参照されるドライバ指定。 +% \item |geometry=|\meta{name} : |geometry| パッケージの読込を自動的に +% 行うかユーザに任せるか。 % \end{itemize} % % \begin{macro}{\bxjs@invscale} % |\bxjs@invscale| は{\TeX}における「長さのスケール」の逆関数を求めるもの。 % 例えば |\bxjs@invscale\dimX{1.3}| は |\dimX=1.3\dimX| の % 逆の演算を行う。 +% \Note 局所化の |\begingroup|~|\endgroup| について、 +% 以前は |\group|~|\egroup| を使っていたが、これだと数詞モード中では +% 空のサブ数式を生み出してしまうため修正した。 % \begin{macrocode} \mathchardef\bxjs@csta=259 \def\bxjs@invscale#1#2{% - \bgroup \@tempdima=#1\relax \@tempdimb#2\p@\relax + \begingroup \@tempdima=#1\relax \@tempdimb#2\p@\relax \@tempcnta\@tempdima \multiply\@tempcnta\@cclvi \divide\@tempcnta\@tempdimb \multiply\@tempcnta\@cclvi \@tempcntb\p@ \divide\@tempcntb\@tempdimb @@ -883,13 +927,13 @@ \advance\@tempcntb\m@ne \@tempdimc=\@tempcntb\@ne \else \@tempdimb=\@tempcntb\@ne \fi}% \xdef\bxjs@gtmpa{\the\@tempdimb}% - \egroup #1=\bxjs@gtmpa\relax} + \endgroup #1=\bxjs@gtmpa\relax} % \end{macrocode} % \end{macro} % % \end{ZRnote} % -% \paragraph{複合設定オプション ☆} +% \paragraph{複合設定オプション \ZRX} % \mbox{} % \begin{ZRnote} % 複合設定オプションとは、 @@ -901,7 +945,9 @@ % % \begin{macro}{\bxjs@composite@proc} % 複合設定オプションのための遅延処理マクロ。 +% \begin{macrocode} \let\bxjs@composite@proc\relax +% \end{macrocode} % \end{macro} % % |pandoc| オプションは、Pandocで{\LaTeX}用の既定テンプレートを @@ -912,22 +958,25 @@ % \end{macrocode} % 和文ドライバを |pandoc| に、エンジン指定を |autodetect-engine| に % 変更する。 -% \begin{macrocode} % \Note 実際の和文ドライバ・エンジン設定より優先される。 +% \begin{macrocode} \def\bxjs@composite@proc{% + \bxjs@oldfontcommandstrue \setkeys{bxjs}{ja=pandoc}% \let\bxjs@engine@given=*}% % \end{macrocode} -% ドライバオプションを |dvipdfmx-if-dvi| に変更する。 +% ドライバオプションを |dvi=dvipdfmx| 相当に変更する。 % \Note これは実際のドライバ設定で上書きできる % (オプション宣言順に注意)。 +% \TODO できない気がする…。 % \begin{macrocode} - \def\bxjs@driver@opt{dvipdfmx-if-dvi}} + \def\bxjs@driver@opt{dvipdfmx}% + \bxjs@dvi@opttrue} % \end{macrocode} % % \end{ZRnote} % -% \paragraph{エンジン・ドライバオプション ☆} +% \paragraph{エンジン・ドライバオプション \ZRX} % \mbox{} % \begin{ZRnote} % \begin{macro}{\bxjs@engine@given} @@ -1017,15 +1066,16 @@ % % 「もしDVIモードであればドライバを |dvipdfmx| にする」 % というオプション。 +% \Note 1.2版で |dvi| オプションが新設されたが、互換性のため +% このオプションも残す。 % \begin{macrocode} \DeclareOption{dvipdfmx-if-dvi}{% - \def\bxjs@driver@opt{dvipdfmx-if-dvi}% - \let\bxjs@driver@given\@undefined} + \setkeys{bxjs}{dvi=dvipdfmx}} % \end{macrocode} % % \end{ZRnote} % -% \paragraph{その他のBXJS独自オプション ☆} +% \paragraph{その他のBXJS独自オプション \ZRX} % \mbox{} % \begin{ZRnote} % \begin{macro}{\ifbxjs@usezw} @@ -1036,6 +1086,7 @@ % \end{macrocode} % \end{macro} % +% |zw|、|nozw| オプションの定義。 % \begin{macrocode} \DeclareOption{nozw}{% \bxjs@usezwfalse} @@ -1051,6 +1102,7 @@ % \end{macrocode} % \end{macro} % +% |nojs|、|js| オプションの定義。 % \begin{macrocode} \DeclareOption{nojs}{% \bxjs@disguise@jsfalse} @@ -1066,6 +1118,7 @@ % \end{macrocode} % \end{macro} % +% |noprecisetext|/|precisetext| オプションの定義。 % \begin{macrocode} \DeclareOption{noprecisetext}{% \bxjs@precisetextfalse} @@ -1081,6 +1134,7 @@ % \end{macrocode} % \end{macro} % +% |nosimplejasetup|/|simplejasetup| オプションの定義。 % \begin{macrocode} \DeclareOption{nosimplejasetup}{% \bxjs@simplejasetupfalse} @@ -1089,7 +1143,7 @@ % \end{macrocode} % % \begin{macro}{\ifbxjs@bigcode} -% {\upTeX}で有効かするToUnicode CMapとして +% {\upTeX}で有効化するToUnicode CMapとして % 「|UTF8-UCS2|」の代わりに「|UTF8-UTF16|」を使うか。 % BMP外の文字に対応できる「|UTF8-UTF16|」の方が望ましいのであるが、 % このファイルが利用可能かの確実な判定が困難であるため、 @@ -1110,6 +1164,7 @@ % \end{macrocode} % \end{macro} % +% |nobigcode|/|bigcode| オプションの定義。 % \begin{macrocode} \DeclareOption{nobigcode}{% \bxjs@bigcodefalse} @@ -1117,9 +1172,27 @@ \bxjs@bigcodetrue} % \end{macrocode} % +% \begin{macro}{\ifbxjs@oldfontcommands} +% |\allowoldfontcommands| を既定で有効にするか。 +% \begin{macrocode} +\newif\ifbxjs@oldfontcommands +% \end{macrocode} +% \end{macro} +% +% |nooldfontcommands|、|oldfontcommands| オプションの定義。 +% \Note |oldfontcommands| オプションの名前は\Pkg{memoir}クラスに倣った。 +% ちなみに\Pkg{KOMA-Script}では |enabledeprecatedfontcommands| であるが +% これはチョットアレなので避けた。 +% \begin{macrocode} +\DeclareOption{nooldfontcommands}{% + \bxjs@oldfontcommandsfalse} +\DeclareOption{oldfontcommands}{% + \bxjs@oldfontcommandstrue} +% \end{macrocode} +% % \end{ZRnote} % -% \paragraph{keyval型のオプション ☆} +% \paragraph{keyval型のオプション \ZRX} % \mbox{} % \begin{ZRnote} % \begin{macrocode} @@ -1290,6 +1363,60 @@ \fi} % \end{macrocode} % +% \begin{macro}{\bxjs@geometry} +% |geometry| オプションの値。 +% \begin{macrocode} +\let\bxjs@geometry@class=c +\let\bxjs@geometry@user=u +\let\bxjs@geometry\bxjs@geometry@class +% \end{macrocode} +% \end{macro} +% +% |geometry| オプションの処理。 +% \begin{macrocode} +\define@key{bxjs}{geometry}{% + \expandafter\let\expandafter\bxjs@geometry\csname + bxjs@geometry@#1\endcsname + \ifx\bxjs@geometry\relax + \ClassError\bxjs@clsname + {Invalid geometry value `#1'}\@ehc + \let\bxjs@geometry\bxjs@geometry@class + \fi} +% \end{macrocode} +% +% \begin{macro}{\ifbxjs@dvi@opt} +% |dvi| オプションが指定されたか。 +% \begin{macrocode} +\newif\ifbxjs@dvi@opt +% \end{macrocode} +% \end{macro} +% +% DVIモードのドライバとドライバ種別との対応。 +% \begin{macrocode} +\let\bxjs@dvidriver@@dvipdfmx=\bxjs@driver@@dvipdfmx +\let\bxjs@dvidriver@@dvips=\bxjs@driver@@dvimode +\let\bxjs@dvidriver@@dviout=\bxjs@driver@@dvimode +\let\bxjs@dvidriver@@xdvi=\bxjs@driver@@dvimode +% \end{macrocode} +% +% |dvi| オプションの処理。 +% \begin{macrocode} +\define@key{bxjs}{dvi}{% + \expandafter\let\expandafter\bxjs@tmpa\csname + bxjs@dvidriver@@#1\endcsname + \ifx\bxjs@tmpa\relax + \ClassError\bxjs@clsname + {Invalid dvi value `#1'}\@ehc + \else +% \end{macrocode} +% |\bxjs@driver@given| を未定義にしていることに注意。 +% \begin{macrocode} + \def\bxjs@driver@opt{#1}% + \let\bxjs@driver@given\@undefined + \bxjs@dvi@opttrue + \fi} +% \end{macrocode} +% % \end{ZRnote} % % \paragraph{オプションの実行} @@ -1432,29 +1559,34 @@ \fi % \end{macrocode} % -% DVI出力のエンジンでドライバオプションがない場合は警告を出す。 -% \Note ただし |ja| 非指定の場合はスキップする -% (0.3 版との互換性のため)。 +% DVI出力のエンジンである場合の追加処理。 % \begin{macrocode} \ifjsInPdfMode \@tempswafalse \else\ifx x\jsEngine \@tempswafalse -\else\ifx\bxjs@jadriver@given\@undefined \@tempswafalse \else \@tempswatrue -\fi\fi\fi +\fi\fi \if@tempswa - \ifx\bxjs@driver@opt\@undefined +% \end{macrocode} +% ドライバオプションがない場合は警告を出す。 +% \Note ただし |ja| 非指定の場合はスキップする +% (0.3 版との互換性のため)。 +% \begin{macrocode} + \ifx\bxjs@driver@opt\@undefined \ifx\bxjs@jadriver@given\@undefined\else \ClassWarningNoLine\bxjs@clsname {No driver option is given} - \fi + \fi\fi % \end{macrocode} -% DVI出力のエンジンで |dvipdfmx-in-dvi| が指定されていた場合は、 -% |dvipdfmx| が指定された時と同じ動作にする。 -% \begin{macrocode} - \def\bxjs@tmpa{dvipdfmx-if-dvi} - \ifx\bxjs@driver@opt\bxjs@tmpa - \def\bxjs@driver@opt{dvipdfmx} - \let\bxjs@driver@given\bxjs@driver@@dvipdfmx - \g@addto@macro\@classoptionslist{,dvipdfmx} +% |dvi=XXX| が指定されていた場合は、 +% |XXX| が指定された時と同じ動作にする。 +% (グローバルオプションに |XXX| を追加する。) +% \begin{macrocode} + \ifbxjs@dvi@opt + \edef\bxjs@nxt{% + \let\noexpand\bxjs@driver@given + \csname bxjs@dvidriver@@\bxjs@driver@opt\endcsname + \noexpand\g@addto@macro\noexpand\@classoptionslist + {,\bxjs@driver@opt}% + }\bxjs@nxt \fi \fi % \end{macrocode} @@ -1523,9 +1655,9 @@ % \end{macrocode} % % \begin{ZRnote} +% % 8bit欧文{\TeX}の場合は、高位バイトをアクティブ化しておく。 % (和文を含むマクロ定義を通用させるため。) -% \end{ZRnote} % \begin{macrocode} \if \if p\jsEngine T\else\if n\jsEngine T\else F\fi\fi T \@tempcnta="80 \loop \ifnum\@tempcnta<"100 @@ -1535,12 +1667,10 @@ \fi % \end{macrocode} % -% \begin{ZRnote} % |js| オプション指定時は、jsarticle(または jsbook)クラスを % 読込済のように振舞う。 % \Note 「2つのクラスを読み込んだ状態」は |\LoadClass| を使用した % 場合に出現するので、別に異常ではない。 -% \end{ZRnote} % \begin{macrocode} \ifbxjs@disguise@js %\def\bxjs@js@clsname{jsbook} @@ -1549,15 +1679,22 @@ \fi % \end{macrocode} % -% \begin{ZRnote} -% |color|/|graphics|パッケージがもつ出力用紙サイズ設定の機能は、 +% |color|/|graphics| パッケージが持つ出力用紙サイズ設定の機能は、 % BXJSクラスでは余計なので無効にしておく。 % このため、グローバルで |nosetpagesize| を設定しておく。 -% \end{ZRnote} % \begin{macrocode} \g@addto@macro\@classoptionslist{,nosetpagesize} % \end{macrocode} % +% |oldfontcommands| オプション指定時は |\allowoldfontcommands| +% 命令を実行する。 +% \begin{macrocode} +\ifbxjs@oldfontcommands + \jsAtEndOfClass{\allowoldfontcommands} +\fi +% \end{macrocode} +% \end{ZRnote} +% % \paragraph{papersizeスペシャルの出力} % \mbox{} % \begin{ZRnote} @@ -1578,7 +1715,7 @@ % \end{macro} % % \paragraph{拡大率の設定} -% +% \mbox{} % \begin{ZRnote} % \begin{macro}{\ifbxjs@nfss@patch} % NFSSパッチするか。 @@ -1680,8 +1817,8 @@ % \end{macrocode} % \end{ZRnote} % -% \paragraph{NFSSパッチ ☆} -% +% \paragraph{NFSSパッチ \ZRX} +% \mbox{} % \begin{ZRnote} % ムニャムニャムニャ……。 % \begin{macrocode} @@ -2357,7 +2494,9 @@ %\newcommand\jsTextWidthLimit{40} \def\bxjs@postproc@layout{% % ドライバ再設定 - \let\Gm@driver\bxjs@geometry@driver + \ifx\bxjs@geometry@driver\relax\else + \let\Gm@driver\bxjs@geometry@driver + \fi % textwidth 調整 \@tempdimb=\textwidth \if@twocolumn \@tempdima=2\Cwd \else \@tempdima=1\Cwd \fi @@ -2396,6 +2535,26 @@ } % \end{macrocode} % +% \begin{macro}{\jsGeometryOptions} +% \begin{ZRnote} +% |geometry|パッケージに渡すオプションのリスト。 +% \Note |geometry=user| 指定時にユーザが利用することを想定している。 +% \end{ZRnote} +% \begin{macrocode} +\edef\jsGeometryOptions{% + \bxjs@layout@paper,\bxjs@layout} +% \end{macrocode} +% \end{macro} +% +% \begin{ZRnote} +% ここで|geoemtry|オプションの値に応じて分岐する。 +% +% まずは|geometry=class|の場合。 +% \end{ZRnote} +% \begin{macrocode} +\ifx\bxjs@geometry\bxjs@geometry@class +% \end{macrocode} +% % \begin{ZRnote} % |geometry| は |\topskip| が標準の行高(|\ht\strutbox|)より小さくならない % ようにする自動調整を行うが、これをどうするかは未検討。 @@ -2409,49 +2568,6 @@ \g@addto@macro\bxjs@revert{\ht\strutbox=\bxjs@tmpa\relax} % \end{macrocode} % \begin{ZRnote} -% エンジンが{\XeTeX}である場合の処理。 -% \begin{itemize} -% \item |geometry| 4.2版の場合:\ -% {\TeX} Liveの一部の版に用意されている設定ファイル |geometry.cfg| -% では、|geometry| のドライバ自動検出の処理を乗っ取って、 -% 強制的に |pdftex| を使用するようになっている。 -% ところが、{\XeTeX}では |\pdfhorigin| など未サポートのpdf{\TeX}% -% プリミティブがあり、|\mag| $\neq 1000$ の場合にエラーになる。 -% そこで、|geometry.cfg| の読込の箇所にフックをかけて、|geometry.cfg| -% での処理をさらに乗っ取ることにする。 -% \begin{itemize} -% \item {\XeTeX}が |\pdfpagewidth| をサポートする場合は、ダミーの\ -% |\pdfhorigin|、|\pdfvorigin| を用意してドライバを |pdftex| -% に強制的に変更する。 -% \item そうでない場合は、ドライバを |dvipdfm| に強制的に変更する。 -% \end{itemize} -% \item |geometry| 5.x版の場合:\ -% この版の |geometry| は{\XeTeX}に正式に対応(ドライバ名 |xetex|) -% していて、また{\XeTeX}で実行した場合にドライバ自動検出の結果は\ -% |xetex| となる。 -% 従って、特に何もする必要がない。 -% さらに、ドライバ自動検出処理のマクロ名を4.2版のもの -% (|\Gm@checkdrivers|)から変えているので、上述の |geometry.cfg| -% のフックおよびここで行っているフックはともに無力化されている。 -% \end{itemize} -% \end{ZRnote} -% \begin{macrocode} -\if x\jsEngine - \ifx\pdfpagewidth\@undefined - \def\bxjs@Gm@driver{dvipdfm} - \else - \def\bxjs@Gm@driver{pdftex} - \ifx\pdfhorigin\@undefined \newdimen\pdfhorigin \fi - \ifx\pdfvorigin\@undefined \newdimen\pdfvorigin \fi - \fi - \let\bxjs@InputIfFileExists\InputIfFileExists - \g@addto@macro\bxjs@revert{\let\InputIfFileExists\bxjs@InputIfFileExists} - \def\InputIfFileExists#1#2#3{% - \bxjs@InputIfFileExists{#1}{#2}{#3}% - \edef\Gm@checkdrivers{\noexpand\Gm@setdriver{\bxjs@Gm@driver}}}% -\fi -% \end{macrocode} -% \begin{ZRnote} % |geometry| のドライバオプション指定。 % |nopapersize| 指定時は、special命令出力を抑止するために % ドライバを |none| にする。 @@ -2477,6 +2593,7 @@ % \begin{macrocode} \edef\bxjs@nxt{% \noexpand\RequirePackage[\bxjs@layout@paper,\bxjs@layout]{geometry}} +\AtBeginDocument{\bxjs@pre@geometry@hook} \AtBeginDocument{\ImposeOldLuaTeXBehavior} \bxjs@nxt \bxjs@revert \AtBeginDocument{\RevokeOldLuaTeXBehavior} @@ -2491,6 +2608,27 @@ \bxjs@postproc@layout % \end{macrocode} % +% \begin{macro}{\bxjs@pre@geometry@hook} +% \begin{ZRnote} +% 1.2版より、|geometry| の4.x版の使用は非推奨とする。 +% \Note 将来サポートを廃止する予定。 +% \end{ZRnote} +% \begin{macrocode} +\@onlypreamble\bxjs@pre@geometry@hook +\def\bxjs@pre@geometry@hook{% + \@ifpackageloaded{geometry}{\@ifpackagelater{geometry}{2010/02/12}{}{% + \PackageWarningNoLine\bxjs@clsname + {The 'geometry' package installed\MessageBreak + is too old (< v5.0)}% + \if x\jsEngine \ifnum\mag=\@m\else + \def\bxjs@Gm@driver{pdftex} + \ifx\pdfhorigin\@undefined \newdimen\pdfhorigin \fi + \ifx\pdfvorigin\@undefined \newdimen\pdfvorigin \fi + \fi\fi + }}{}} +% \end{macrocode} +% \end{macro} +% % \begin{ZRnote} % \begin{itemize} % \item |\setpagelayout{|\meta{text}|}| : 現在の geometry の設定の @@ -2512,6 +2650,56 @@ % \end{macrocode} % % \begin{ZRnote} +% |geometry=class|の場合の処理はここで終わり。 +% +% 次に、|geometry=user|の場合の処理。 +% \end{ZRnote} +% \begin{macrocode} +\else\ifx\bxjs@geometry\bxjs@geometry@user +% \end{macrocode} +% +% \begin{ZRnote} +% この場合はユーザが何らかの方法(例えば |geometry| を読み込む) +% でページレイアウトを設定する必要がある。 +% もし、本体開始時に |\textwidth| がカーネル設定の値(|.5\maxdimen|) +% になっている場合はエラーを出す。 +% \Note |\jsUseMinimalPageLayout| は動作テスト用。 +% \end{ZRnote} +% \begin{macrocode} +\AtBeginDocument{\bxjs@check@page@layout} +\@onlypreamble\bxjs@check@page@layout +\def\bxjs@check@page@layout{% + \ifdim\textwidth=.5\maxdimen + \ClassError\bxjs@clsname + {Page layout is not properly set} + \@ehd + \fi} +\def\jsUseMinimalPageLayout{% + \setlength{\textwidth}{6.5in}% + \setlength{\textheight}{8in}} +% \end{macrocode} +% +% \begin{ZRnote} +% |\setpagelayout| はとりあえず無効にしておく。 +% \end{ZRnote} +% \begin{macrocode} +\let\bxjs@geometry@driver\relax +\def\setpagelayout{\@ifstar + {\bxjs@pagelayout@a}{\bxjs@pagelayout@a}} +\def\bxjs@pagelayout@a#1{% + \ClassError\bxjs@clsname + {Command \string\setpagelayout\space is not supported,\MessageBreak + because 'geometry' value is not 'class'}\@eha} +% \end{macrocode} +% +% \begin{ZRnote} +% |geometry=user|の場合の処理はここで終わり。 +% \end{ZRnote} +% \begin{macrocode} +\fi\fi +% \end{macrocode} +% +% \begin{ZRnote} % ここからのコードは以下の点を除いて JS クラスのものを踏襲する。 % \begin{itemize} % \item zw の代わりに |\jsZw| を用いる。 @@ -2558,8 +2746,8 @@ % % フロート(図,表)関連のパラメータは\LaTeXe 本体で定義されていますが, % ここで設定変更します。本文ページ(本文とフロートが共存するページ) -% ちなみに,カウンタは内部では |\c@| を名前に冠したマクロになっています。 % とフロートだけのページで設定が異なります。 +% ちなみに,カウンタは内部では |\c@| を名前に冠したマクロになっています。 % % \begin{macro}{\c@topnumber} % @@ -4863,6 +5051,101 @@ % これらは互換性のためのもので, % できるだけ |\text...| と |\math...| を使ってください。 % +% [2016-07-15] KOMA-Script中の |\scr@DeclareOldFontCommand| に倣い、 +% これらの命令を使うときには警告を発することにしました。 +% +% [2016-07-16] 警告を最初の一回だけ発することにしました。また, +% 例外的に警告を出さないようにするスイッチも付けます。 +% +% \begin{macro}{\if@jsc@warnoldfontcmd} +% \begin{macro}{\if@jsc@warnoldfontcmdexception} +% \begin{ZRnote} +% |\if@jsc@warnoldfontcmd| はBXJSクラスでは不使用。\par +% |\if@jsc@warnoldfontcmdexception| は |\allow/disallowoldfontcommands| +% の状態を表す。 +% \end{ZRnote} +% \begin{macrocode} +\newif\if@jsc@warnoldfontcmd +\@jsc@warnoldfontcmdtrue +\newif\if@jsc@warnoldfontcmdexception +\@jsc@warnoldfontcmdexceptionfalse +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\jsc@DeclareOldFontCommand} +% \begin{macrocode} +\newcommand*{\jsc@DeclareOldFontCommand}[3]{% + \g@addto@macro\bxjs@oldfontcmd@list{\do#1}% + \DeclareOldFontCommand{#1}{% + \bxjs@oldfontcmd{#1}#2% + }{% + \bxjs@oldfontcmd{#1}#3% + }% +} +\DeclareRobustCommand*{\jsc@warnoldfontcmd}[1]{% + \ClassInfo\bxjs@clsname + {Old font command '\string#1' is used!!\MessageBreak + First occurrence is}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{ZRnote} +% +% \begin{macro}{\allowoldfontcommands} +% “二文字フォント命令”の使用を許可する(警告しない)。 +% \begin{macro}{\disallowoldfontcommands} +% “二文字フォント命令”の使用に対して警告を出す。 +% \begin{macrocode} +\newcommand*{\allowoldfontcommands}{% + \@jsc@warnoldfontcmdexceptiontrue} +\newcommand*{\disallowoldfontcommands}{% + \@jsc@warnoldfontcmdexceptionfalse} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \Note 1.x版ではWarningではなくInfoに留めておく。 +% \begin{macrocode} +\let\bxjs@oldfontcmd@list\@empty +\def\bxjs@oldfontcmd#1{% + \expandafter\bxjs@oldfontcmd@a\csname bxjs@ofc/\string#1\endcsname#1} +\def\bxjs@oldfontcmd@a#1#2{% + \if@jsc@warnoldfontcmdexception\else + \global\@jsc@warnoldfontcmdfalse + \ifx#1\relax + \global\let#1=t% + \jsc@warnoldfontcmd{#2}% + \fi + \fi} +\def\bxjs@warnoldfontcmd@final{% + \par + \let\@tempa\@empty + \def\do##1{% + \expandafter\ifx\csname bxjs@ofc/\string##1\endcsname\relax\else + \edef\@tempa{\@tempa \space\string##1}\fi} + \bxjs@oldfontcmd@list + \ifx\@tempa\@empty\else + \ClassWarningNoLine\bxjs@clsname + {Some old font commands were used in text\MessageBreak + (see the log output 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}% + \fi} +\AtEndDocument{\bxjs@warnoldfontcmd@final} +% \end{macrocode} +% +% \end{ZRnote} +% % \begin{macro}{\mc} % \begin{macro}{\gt} % \begin{macro}{\rm} @@ -4872,11 +5155,11 @@ % フォントファミリを変更します。 % % \begin{macrocode} -\DeclareOldFontCommand{\mc}{\normalfont\mcfamily}{\mathmc} -\DeclareOldFontCommand{\gt}{\normalfont\gtfamily}{\mathgt} -\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} -\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} -\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} +\jsc@DeclareOldFontCommand{\mc}{\normalfont\mcfamily}{\mathmc} +\jsc@DeclareOldFontCommand{\gt}{\normalfont\gtfamily}{\mathgt} +\jsc@DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} +\jsc@DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} +\jsc@DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} % \end{macrocode} % \end{macro} % \end{macro} @@ -4890,7 +5173,7 @@ % コマンドは |\mdseries| です。 % % \begin{macrocode} -\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +\jsc@DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} % \end{macrocode} % \end{macro} % @@ -4904,9 +5187,9 @@ % 通常のアップライト体に戻すコマンドは |\upshape| です。 % % \begin{macrocode} -\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} -\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} -\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} +\jsc@DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} +\jsc@DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} +\jsc@DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} % \end{macrocode} % \end{macro} % \end{macro} @@ -5312,8 +5595,13 @@ % % 参考文献リストを出力します。 % +% [2016-07-16] \LaTeX~2.09で使われていたフォントコマンドの警告を, +% 文献スタイル(.bst)ではよく |\bf| がいまだに用いられることが多いため, +% |thebibliography| 環境内では例外的に出さないようにしました。 +% % \begin{macrocode} \newenvironment{thebibliography}[1]{% + \@jsc@warnoldfontcmdexceptiontrue \global\let\presectionname\relax \global\let\postsectionname\relax % \section*{\refname}\@mkboth{\refname}{\refname}% @@ -6009,8 +6297,8 @@ % % \end{macrocode} % -% \paragraph{BXJS独自の追加処理 ☆} -% +% \paragraph{BXJS独自の追加処理 \ZRX} +% \mbox{} % \begin{ZRnote} % % 和文ドライバのファイルを読み込む。 @@ -6035,7 +6323,7 @@ % \clearpage % \appendix %^^A======================================================== -% \section{和文ドライバの仕様 ☆} +% \section{和文ドライバの仕様 \ZRX} % % 次の命令がBXJSクラス本体と和文ドライバの連携のために % 用意されている。 @@ -6122,7 +6410,7 @@ % \end{macrocode} % %^^A======================================================== -% \section{和文ドライバ:minimal ☆} +% \section{和文ドライバ:minimal \ZRX} % % |jadriver| の指定が無い場合に適用されるドライバ。 % また、standard ドライバはまずこのドライバファイルを @@ -6607,7 +6895,7 @@ % \end{macrocode} % %^^A======================================================== -% \section{和文ドライバ:standard ☆} +% \section{和文ドライバ:standard \ZRX} % % 標準のドライバ。 % @@ -7478,7 +7766,7 @@ % \end{macrocode} % %^^A======================================================== -% \section{和文ドライバ:modern ☆} +% \section{和文ドライバ:modern \ZRX} % % モダーンな設定。 % @@ -7552,7 +7840,7 @@ % \end{macrocode} % %^^A======================================================== -% \section{和文ドライバ:pandoc ☆} +% \section{和文ドライバ:pandoc \ZRX} % % Pandoc用の何か。 % @@ -7736,7 +8024,7 @@ % \end{macrocode} % %^^A======================================================== -% \section{補助パッケージ一覧 ☆} +% \section{補助パッケージ一覧 \ZRX} % % BXJSクラスの機能を実現するために用意されたものだが、 % 他のクラスの文書で読み込んで利用することもできる。 @@ -7750,7 +8038,7 @@ % \end{macrocode} % %^^A======================================================== -% \section{補助パッケージ:bxjscompat ☆} +% \section{補助パッケージ:bxjscompat \ZRX} % % ムニャムニャムニャ……。 % @@ -7924,7 +8212,7 @@ % \end{macrocode} % %^^A======================================================== -% \section{補助パッケージ:bxjscjkcat ☆} +% \section{補助パッケージ:bxjscjkcat \ZRX} % % modernドライバ用の和文カテゴリを適用する。 % -- cgit v1.2.3