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/doc/latex/bxjscls/README-ja.md | 9 + Master/texmf-dist/doc/latex/bxjscls/README.md | 1 + .../doc/latex/bxjscls/bxjscls-manual.pdf | Bin 743139 -> 776468 bytes .../doc/latex/bxjscls/bxjscls-manual.tex | 162 ++++++- Master/texmf-dist/doc/latex/bxjscls/bxjscls.pdf | Bin 928854 -> 984923 bytes Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx | 502 ++++++++++++++++----- .../texmf-dist/tex/latex/bxjscls/bxjsarticle.cls | 204 +++++++-- Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls | 204 +++++++-- Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty | 2 +- Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty | 2 +- .../tex/latex/bxjscls/bxjsja-minimal.def | 2 +- .../texmf-dist/tex/latex/bxjscls/bxjsja-modern.def | 2 +- .../texmf-dist/tex/latex/bxjscls/bxjsja-pandoc.def | 2 +- .../tex/latex/bxjscls/bxjsja-standard.def | 2 +- Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls | 204 +++++++-- Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls | 204 +++++++-- 16 files changed, 1222 insertions(+), 280 deletions(-) (limited to 'Master') diff --git a/Master/texmf-dist/doc/latex/bxjscls/README-ja.md b/Master/texmf-dist/doc/latex/bxjscls/README-ja.md index 0d63e5a9bd9..cfc3f8b71d8 100644 --- a/Master/texmf-dist/doc/latex/bxjscls/README-ja.md +++ b/Master/texmf-dist/doc/latex/bxjscls/README-ja.md @@ -97,6 +97,15 @@ XeLaTeX / LuaLaTeX の上でも日本語処理パッケージと連携して使 更新履歴 -------- + * Version 1.2 〈2016/08/01〉 + - `geometry` オプションを新設した。 + - `dvi` オプションを新設した。 + - `\bf` や `\it` などの“二文字フォント命令”の使用に対して警告を + (現状では控えめに)出すようにする。この警告を制御するオプション + `(no)oldfontcommands` および `\(dis)allowoldfontcommands` 命令 + を新設した。 + - 万一“2.09 互換モード”で BXJS クラスが読み込まれた場合は致命的 + エラーとする。 * Version 1.1f 〈2016/07/16〉 - jsclasses の開発体制の変更に応じて、原作に関する記述を修正。 - magstyle オプションの値の名前を jsclasses に合わせて変更。 diff --git a/Master/texmf-dist/doc/latex/bxjscls/README.md b/Master/texmf-dist/doc/latex/bxjscls/README.md index 7f4bb557109..d91611de169 100644 --- a/Master/texmf-dist/doc/latex/bxjscls/README.md +++ b/Master/texmf-dist/doc/latex/bxjscls/README.md @@ -87,6 +87,7 @@ This package is distributed under the BSD 2-Clause License. Revision History ---------------- + * Version 1.2 〈2016/08/01〉 * Version 1.1f 〈2016/07/16〉 * Version 1.1e 〈2016/05/28〉 * Version 1.1d 〈2016/05/21〉 diff --git a/Master/texmf-dist/doc/latex/bxjscls/bxjscls-manual.pdf b/Master/texmf-dist/doc/latex/bxjscls/bxjscls-manual.pdf index 9c00928a57b..cfd41c75018 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 37d5bec58aa..6b3d1ba694f 100644 --- a/Master/texmf-dist/doc/latex/bxjscls/bxjscls-manual.tex +++ b/Master/texmf-dist/doc/latex/bxjscls/bxjscls-manual.tex @@ -1,12 +1,19 @@ % 文字コードは UTF-8 % lualatex で組版する \documentclass[a4paper]{ltjsarticle} -\usepackage{url} +\usepackage{color} +\definecolor{myblue}{rgb}{0,0,0.75} +\definecolor{mygreen}{rgb}{0,0.45,0} +%\usepackage{url} +\usepackage[unicode,colorlinks,hyperfootnotes=false]{hyperref} +\hypersetup{linkcolor=myblue,urlcolor=mygreen} \usepackage{metalogo} +\pdfstringdefDisableCommands{% + \renewcommand*{\XeLaTeX}{XeLaTeX}} \usepackage{shortvrb} \MakeShortVerb{\|} -\newcommand{\PkgVersion}{1.1f} -\newcommand{\PkgDate}{2016/07/16} +\newcommand{\PkgVersion}{1.2} +\newcommand{\PkgDate}{2016/08/01} \newcommand{\Pkg}[1]{\textsf{#1}} \newcommand{\Meta}[1]{$\langle$\mbox{}#1\mbox{}$\rangle$} \newcommand{\Note}{\par\noindent ※} @@ -19,6 +26,7 @@ \providecommand{\upTeX}{u\pTeX} \providecommand{\upLaTeX}{u\pLaTeX} \providecommand{\pdfLaTeX}{pdf\LaTeX} +\providecommand{\BibTeX}{Bib\TeX} %----------------------------------------------------------- \begin{document} \title{\Pkg{BXjscls} パッケージ\\ @@ -402,6 +410,9 @@ JSクラスのレイアウトデザインと機能をほぼ踏襲しているが \Note JSクラスの |\ifdraft| は2016/07/13版で廃止された。 従って、BXJSクラスにおいて |\ifdraft| スイッチの使用を 非推奨とし、将来的に廃止を予定する。 +\item 1.2版より、|\bf| や |\it| 等の旧式のフォント選択命令の使用が + 非推奨となり、これらの命令を使うと警告が出るようになった。 + 詳細は\ref{sec:Old-font-commands}節を参照。 % TODO: \@ptsize の話 \end{itemize} @@ -549,21 +560,29 @@ JSクラスには無くBXJSクラスで追加されたクラスオプション \item ドライバオプション\Means DVI出力のエンジンを用いる場合に、実際に使用するDVIウェアの名前を 指定する。 - 有効な値は |dvips|、|dvipdfmx|、|dviout|、|xdvi|、そして特殊な - 値として |dvipdfmx-if-dvi| がある。 - これは「エンジンがDVI出力の場合に限り |dvipdfmx| を指定する」 - ことを表すもので、|autodetect-engine| と一緒に使うことが - 想定されている。 - \footnote{「実際に |dvipdfmx| が指定された」場合は、 - |dvipdfmx| がグローバルオプションとしても働く。}% + 有効な値は |dvips|、|dvipdfmx|、|dviout|、|xdvi| である。 ドライバオプションの指定は必須である。 + \footnote{ただし現状では、ドライバオプションが無い場合には + エラーではなく警告が出る。} +\item |dvi=|\Meta{ドライバ名}\Means + エンジンがDVI出力の場合に限り、指定のドライバオプションを + 有効にする。 + \footnote{実際にドライバオプションが有効化された場合は、 + そのオプションがグローバルオプションとしても働く。 + 例えば、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}節)を指定する。 以下の設定が行われる: \begin{itemize} \item エンジンオプションが |autodetect-engine| に固定される。 \item 和文ドライバが |pandoc| に固定される。 - \item ドライバオプションについて |dvipdfmx-if-dvi| が既定になる + \item ドライバオプションについて |dvi=dvipdfmx| が既定になる (明示指定で上書可能)。 \end{itemize} \item |nopapersize|\Means @@ -687,6 +706,27 @@ JSクラスには無くBXJSクラスで追加されたクラスオプション “版面拡大”の実現方法を指定する。 有効な値は |mag|、|real|、|xreal| の何れか。 詳細は\ref{ssec:magstyle}節を参照。 +\item |geometry=|\Meta{値}\Means + \Pkg{geometry}パッケージの読込に対する制御。 + \begin{itemize} + \item |class|(既定)\Means + 通常通り、文書クラスが\Pkg{geometry}パッケージを読み込む。 + ユーザは\Pkg{geometry}を後から読み込むことはできない。 + \item |user|\Means + 文書クラスによる\Pkg{geometry}パッケージの読込をスキップする。 + この場合、ユーザが自分で\Pkg{geometry}を読み込むことが想定される。 + \footnote{\Pkg{geometry}の読込は必須ではなく、ページレイアウトの + パラメタを自分で設定しても構わない。 + ただし\Pkg{geometry}の読込が強く推奨される。 + (\Pkg{geometry}非読込時の動作テストはほとんど行っていない。)} + \end{itemize} + \Note “どうしても\Pkg{geometry}パッケージを自分で読み込みたい” + という人のための設定。 +\item |oldfontcommands|\Means + |\bf| 等の“二文字フォント命令”の使用を許容する。 +\item |nooldfontcommands|(既定)\Means + “二文字フォント命令”の使用に対して警告を出す。 + 詳細については\ref{sec:Old-font-commands}節を参照されたい。 \end{itemize} %------------------- @@ -1092,6 +1132,106 @@ standard和文ドライバでは和文に関連する \makebox[#1\zw][s]{#2}}} \end{verbatim}\end{quote} +%=========================================================== +\section{“二文字フォント命令”に対する警告} +\label{sec:Old-font-commands} + +ここでいう“二文字フォント命令”というのは、|\bf| や |\it| 等の +{\LaTeX}~2.09で標準であったフォント選択命令のことである。 +\footnote{なお、|\em| は「二文字の名前のフォント命令」であるが、 + これは{\LaTeXe}でも標準命令であり、“二文字フォント命令”には + 含まれない。}\ +{\LaTeXe}においては、これらに代わって、|\bfseries| 等の +(NFSSに基づく)新しい命令群が標準となり、 +古い二文字フォント命令はカーネルではもはサポートされなくなった。 +しかし同時に、二文字フォント命令を利用したパッケージを +動作させるための“当面の” +\footnote{ちなみに、 + {\LaTeXe}が最初にリリースされたのは1994年のことである。}% +互換性対策として、 +「標準の文書クラス(article、book等)で二文字フォント命令の +サポートを行う」という方針がとられた。 +これに倣って、他の文書クラスの多くもクラスのレベルで +二文字フォント命令をサポートしていて、 +BXJSクラスもその例に含まれる。 + +ところが最近になって、一部の文書クラス +(\Pkg{KOMA-Script}クラス群や\Pkg{memoir}クラス等) +において、二文字フォント命令を明示的に非推奨の扱いにした上で、 +その使用に制限を設ける +(警告を出す、オプションを指定しないと使えない、等) +という措置が取られるようになっている。 + +これに合わせて、BXJSクラスでは1.2版より +二文字フォント命令を非推奨とし、また、 +既定でその使用に対して警告を出すようにした。 + +%------------------- +\subsection{警告の内容} + +現状では警告はとても控えめに出される。 +すなわち、文書中で |\bf| などの二文字フォント命令が呼び出された場合、 +コンパイルの最後に(一度だけ)以下の警告メッセージが表示される。 + +\begin{quote}\small\begin{verbatim} +Class bxjsarticle Warning: Some old font commands were used in text +(bxjsarticle) (see the log output for detail). +\end{verbatim} +\end{quote} + +少し詳細な注意メッセージが、ログファイルのみに書き出される。 + +なお、この警告は、パッケージの機能の実装として用いられたものも含めて +全ての二文字フォント命令の呼出が対象になる。 +ただし例外として、thebibliography環境の内部で呼び出されたものだけは +対象から除外される。 +{\BibTeX}の文献スタイルファイル(|.bst|)や文献データベース(|.bib|) +のファイルは(パッケージと比較しても)極めて古いものが +割と普通に使い続けられることが多い。 +そういった極めて古いファイルに由来する二文字フォント命令を +警告したとしても、多くの場合、ユーザ側には対処する方法が存在しない。 +これが文献リスト環境中で警告を抑止する理由である。 + +%------------------- +\subsection{警告の制御} + +二文字フォント命令に対する警告の有無はクラスオプションで制御できる。 + +\begin{itemize} +\item |oldfontcommands|\Means + 二文字フォント命令を警告の対象にしない。 +\item |nooldfontcommands|(既定)\Means + 二文字フォント命令を警告の対象にする。 +\end{itemize} + +また、以下の命令により、文書中で一時的に警告の設定を変えられる。 +\footnote{これらの命令の効果はグルーピングの影響を受ける。} + +\begin{itemize} +\item |\allowoldfontcommands|\Means + これ以降に実行される二文字フォント命令を警告の対象にしない。 +\item |\disallowoldfontcommands|\Means + これ以降に実行される二文字フォント命令を警告の対象にする。 +\end{itemize} + +%------------------- +\subsection{将来的な二文字フォント命令の扱い} + +\Note 以下の記述は現在存在する和文ドライバを使用する場合に +ついてのものである。 + +\begin{itemize} +\item 二文字フォント命令に対する警告の様式は、 + 今後変更される可能性がある。 +\item しかし、将来に二文字フォント命令のサポートが廃止されることはない。 +\item |oldfontcommands| オプションよおび |\allowoldfontcommands| 命令 + は継続して提供され、 + これらの機能を用いた場合は、二文字フォント命令に関する警告が + 端末に表示されることは一切無い。 +\end{itemize} + + + %=========================================================== \end{document} %% EOF diff --git a/Master/texmf-dist/doc/latex/bxjscls/bxjscls.pdf b/Master/texmf-dist/doc/latex/bxjscls/bxjscls.pdf index f9e0226d16e..451d8ef91c5 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 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ドライバ用の和文カテゴリを適用する。 % diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls b/Master/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls index 5a96d0e1135..0f612f80b22 100644 --- a/Master/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls +++ b/Master/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls @@ -37,7 +37,7 @@ %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} \ProvidesClass{bxjsarticle} - [2016/07/16 v1.1f BXJS document classes] + [2016/08/01 v1.2 BXJS document classes] %% このファイルは日本語文字を含みます \RequirePackage{calc} \RequirePackage{keyval} @@ -103,6 +103,15 @@ \fi \bxjs@robust@def\jsInhibitGlue{% \ifx\inhibitglue\@undefined\else \inhibitglue \fi} +\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} \newif\if@restonecol \newif\if@titlepage \newif\if@enablejfam \@enablejfamtrue @@ -248,7 +257,7 @@ \DeclareOption{english}{\@englishtrue} \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 @@ -263,13 +272,15 @@ \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} \let\bxjs@composite@proc\relax \DeclareOption{pandoc}{% \def\bxjs@composite@proc{% + \bxjs@oldfontcommandstrue \setkeys{bxjs}{ja=pandoc}% \let\bxjs@engine@given=*}% - \def\bxjs@driver@opt{dvipdfmx-if-dvi}} + \def\bxjs@driver@opt{dvipdfmx}% + \bxjs@dvi@opttrue} \DeclareOption{autodetect-engine}{% \let\bxjs@engine@given=*} \DeclareOption{latex}{% @@ -316,8 +327,7 @@ \def\bxjs@driver@opt{xetex}% \let\bxjs@driver@given\bxjs@driver@@xetex} \DeclareOption{dvipdfmx-if-dvi}{% - \def\bxjs@driver@opt{dvipdfmx-if-dvi}% - \let\bxjs@driver@given\@undefined} + \setkeys{bxjs}{dvi=dvipdfmx}} \newif\ifbxjs@usezw \bxjs@usezwtrue \DeclareOption{nozw}{% \bxjs@usezwfalse} @@ -347,6 +357,11 @@ \bxjs@bigcodefalse} \DeclareOption{bigcode}{% \bxjs@bigcodetrue} +\newif\ifbxjs@oldfontcommands +\DeclareOption{nooldfontcommands}{% + \bxjs@oldfontcommandsfalse} +\DeclareOption{oldfontcommands}{% + \bxjs@oldfontcommandstrue} \def\bxjs@setkey{% \expandafter\bxjs@setkey@a\expandafter{\CurrentOption}} \def\bxjs@setkey@a{\bxjs@safe@setkeys{bxjs}} @@ -408,6 +423,33 @@ {Invalid magstyle value `#1'}\@ehc \let\bxjs@magstyle\bxjs@magstyle@default \fi} +\let\bxjs@geometry@class=c +\let\bxjs@geometry@user=u +\let\bxjs@geometry\bxjs@geometry@class +\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} +\newif\ifbxjs@dvi@opt +\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 +\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 + \def\bxjs@driver@opt{#1}% + \let\bxjs@driver@given\@undefined + \bxjs@dvi@opttrue + \fi} \let\bxjs@ltx@removeelement\@removeelement \def\@removeelement#1#2#3{% \def\reserved@a{#2}% @@ -487,19 +529,20 @@ \fi \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 + \ifx\bxjs@driver@opt\@undefined \ifx\bxjs@jadriver@given\@undefined\else \ClassWarningNoLine\bxjs@clsname {No driver option is given} - \fi - \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} + \fi\fi + \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 \def\bxjs@@minimal{minimal} @@ -546,6 +589,9 @@ \@namedef{ver@\bxjs@js@clsname.cls}{2001/01/01 (bxjs)} \fi \g@addto@macro\@classoptionslist{,nosetpagesize} +\ifbxjs@oldfontcommands + \jsAtEndOfClass{\allowoldfontcommands} +\fi \ifdim\bxjs@param@basefontsize<10pt \def\n@baseline{15}% \else \def\n@baseline{16}\fi \newif\ifbxjs@nfss@patch @@ -783,7 +829,9 @@ } \newdimen\fullwidth \def\bxjs@postproc@layout{% - \let\Gm@driver\bxjs@geometry@driver + \ifx\bxjs@geometry@driver\relax\else + \let\Gm@driver\bxjs@geometry@driver + \fi \@tempdimb=\textwidth \if@twocolumn \@tempdima=2\Cwd \else \@tempdima=1\Cwd \fi \divide\textwidth\@tempdima \multiply\textwidth\@tempdima @@ -809,25 +857,14 @@ \stockwidth=\paperwidth \stockheight=\paperheight } +\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} -\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 \ifbxjs@papersize \ifx\bxjs@driver@given\bxjs@driver@@dvipdfmx \PassOptionsToPackage{dvipdfm}{geometry} @@ -838,11 +875,24 @@ \fi \edef\bxjs@nxt{% \noexpand\RequirePackage[\bxjs@layout@paper,\bxjs@layout]{geometry}} +\AtBeginDocument{\bxjs@pre@geometry@hook} \AtBeginDocument{\ImposeOldLuaTeXBehavior} \bxjs@nxt \bxjs@revert \AtBeginDocument{\RevokeOldLuaTeXBehavior} \let\bxjs@geometry@driver\Gm@driver \bxjs@postproc@layout +\@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 + }}{}} \def\setpagelayout{\@ifstar {\bxjs@reset@layout}{\bxjs@modify@layout}} \def\bxjs@modify@layout#1{% @@ -851,6 +901,26 @@ \def\bxjs@reset@layout#1{% \edef\bxjs@nxt{\noexpand\geometry{reset,\bxjs@layout@paper,#1,truedimen}}% \bxjs@nxt\bxjs@postproc@layout} +\else\ifx\bxjs@geometry\bxjs@geometry@user +\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}} +\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} +\fi\fi \footnotesep=11\p@? \footnotesep=0.7\footnotesep \setlength{\skip\footins}{16\p@? \@plus 5\p@? \@minus 2\p@?} \setcounter{topnumber}{9} @@ -1482,15 +1552,70 @@ \ifdim \wd\@tempboxa <\hsize \centering \fi #1\hskip1\jsZw\relax #2\par \vskip\belowcaptionskip}} -\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} -\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} -\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} -\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} -\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} +\newif\if@jsc@warnoldfontcmd +\@jsc@warnoldfontcmdtrue +\newif\if@jsc@warnoldfontcmdexception +\@jsc@warnoldfontcmdexceptionfalse +\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}% +} +\newcommand*{\allowoldfontcommands}{% + \@jsc@warnoldfontcmdexceptiontrue} +\newcommand*{\disallowoldfontcommands}{% + \@jsc@warnoldfontcmdexceptionfalse} +\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} +\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} +\jsc@DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +\jsc@DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} +\jsc@DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} +\jsc@DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} \DeclareRobustCommand*{\cal}{\@fontswitch\relax\mathcal} \DeclareRobustCommand*{\mit}{\@fontswitch\relax\mathnormal} \newcommand\@pnumwidth{1.55em} @@ -1577,6 +1702,7 @@ \newdimen\bibindent \setlength\bibindent{2\jsZw} \newenvironment{thebibliography}[1]{% + \@jsc@warnoldfontcmdexceptiontrue \global\let\presectionname\relax \global\let\postsectionname\relax \section*{\refname}\@mkboth{\refname}{\refname}% diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls b/Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls index f221563743f..43c0028cf4c 100644 --- a/Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls +++ b/Master/texmf-dist/tex/latex/bxjscls/bxjsbook.cls @@ -37,7 +37,7 @@ %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} \ProvidesClass{bxjsbook} - [2016/07/16 v1.1f BXJS document classes] + [2016/08/01 v1.2 BXJS document classes] %% このファイルは日本語文字を含みます \RequirePackage{calc} \RequirePackage{keyval} @@ -103,6 +103,15 @@ \fi \bxjs@robust@def\jsInhibitGlue{% \ifx\inhibitglue\@undefined\else \inhibitglue \fi} +\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} \newif\if@restonecol \newif\if@titlepage \newif\if@openright @@ -252,7 +261,7 @@ \DeclareOption{english}{\@englishtrue} \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 @@ -267,13 +276,15 @@ \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} \let\bxjs@composite@proc\relax \DeclareOption{pandoc}{% \def\bxjs@composite@proc{% + \bxjs@oldfontcommandstrue \setkeys{bxjs}{ja=pandoc}% \let\bxjs@engine@given=*}% - \def\bxjs@driver@opt{dvipdfmx-if-dvi}} + \def\bxjs@driver@opt{dvipdfmx}% + \bxjs@dvi@opttrue} \DeclareOption{autodetect-engine}{% \let\bxjs@engine@given=*} \DeclareOption{latex}{% @@ -320,8 +331,7 @@ \def\bxjs@driver@opt{xetex}% \let\bxjs@driver@given\bxjs@driver@@xetex} \DeclareOption{dvipdfmx-if-dvi}{% - \def\bxjs@driver@opt{dvipdfmx-if-dvi}% - \let\bxjs@driver@given\@undefined} + \setkeys{bxjs}{dvi=dvipdfmx}} \newif\ifbxjs@usezw \bxjs@usezwtrue \DeclareOption{nozw}{% \bxjs@usezwfalse} @@ -351,6 +361,11 @@ \bxjs@bigcodefalse} \DeclareOption{bigcode}{% \bxjs@bigcodetrue} +\newif\ifbxjs@oldfontcommands +\DeclareOption{nooldfontcommands}{% + \bxjs@oldfontcommandsfalse} +\DeclareOption{oldfontcommands}{% + \bxjs@oldfontcommandstrue} \def\bxjs@setkey{% \expandafter\bxjs@setkey@a\expandafter{\CurrentOption}} \def\bxjs@setkey@a{\bxjs@safe@setkeys{bxjs}} @@ -412,6 +427,33 @@ {Invalid magstyle value `#1'}\@ehc \let\bxjs@magstyle\bxjs@magstyle@default \fi} +\let\bxjs@geometry@class=c +\let\bxjs@geometry@user=u +\let\bxjs@geometry\bxjs@geometry@class +\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} +\newif\ifbxjs@dvi@opt +\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 +\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 + \def\bxjs@driver@opt{#1}% + \let\bxjs@driver@given\@undefined + \bxjs@dvi@opttrue + \fi} \let\bxjs@ltx@removeelement\@removeelement \def\@removeelement#1#2#3{% \def\reserved@a{#2}% @@ -491,19 +533,20 @@ \fi \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 + \ifx\bxjs@driver@opt\@undefined \ifx\bxjs@jadriver@given\@undefined\else \ClassWarningNoLine\bxjs@clsname {No driver option is given} - \fi - \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} + \fi\fi + \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 \def\bxjs@@minimal{minimal} @@ -550,6 +593,9 @@ \@namedef{ver@\bxjs@js@clsname.cls}{2001/01/01 (bxjs)} \fi \g@addto@macro\@classoptionslist{,nosetpagesize} +\ifbxjs@oldfontcommands + \jsAtEndOfClass{\allowoldfontcommands} +\fi \ifdim\bxjs@param@basefontsize<10pt \def\n@baseline{15}% \else \def\n@baseline{16}\fi \newif\ifbxjs@nfss@patch @@ -787,7 +833,9 @@ \newdimen\fullwidth \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 \@tempdimb=\textwidth \if@twocolumn \@tempdima=2\Cwd \else \@tempdima=1\Cwd \fi \divide\textwidth\@tempdima \multiply\textwidth\@tempdima @@ -817,25 +865,14 @@ \stockwidth=\paperwidth \stockheight=\paperheight } +\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} -\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 \ifbxjs@papersize \ifx\bxjs@driver@given\bxjs@driver@@dvipdfmx \PassOptionsToPackage{dvipdfm}{geometry} @@ -846,11 +883,24 @@ \fi \edef\bxjs@nxt{% \noexpand\RequirePackage[\bxjs@layout@paper,\bxjs@layout]{geometry}} +\AtBeginDocument{\bxjs@pre@geometry@hook} \AtBeginDocument{\ImposeOldLuaTeXBehavior} \bxjs@nxt \bxjs@revert \AtBeginDocument{\RevokeOldLuaTeXBehavior} \let\bxjs@geometry@driver\Gm@driver \bxjs@postproc@layout +\@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 + }}{}} \def\setpagelayout{\@ifstar {\bxjs@reset@layout}{\bxjs@modify@layout}} \def\bxjs@modify@layout#1{% @@ -859,6 +909,26 @@ \def\bxjs@reset@layout#1{% \edef\bxjs@nxt{\noexpand\geometry{reset,\bxjs@layout@paper,#1,truedimen}}% \bxjs@nxt\bxjs@postproc@layout} +\else\ifx\bxjs@geometry\bxjs@geometry@user +\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}} +\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} +\fi\fi \footnotesep=11\p@? \footnotesep=0.7\footnotesep \setlength{\skip\footins}{16\p@? \@plus 5\p@? \@minus 2\p@?} \setcounter{topnumber}{9} @@ -1537,15 +1607,70 @@ \ifdim \wd\@tempboxa <\hsize \centering \fi #1\hskip1\jsZw\relax #2\par \vskip\belowcaptionskip}} -\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} -\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} -\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} -\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} -\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} +\newif\if@jsc@warnoldfontcmd +\@jsc@warnoldfontcmdtrue +\newif\if@jsc@warnoldfontcmdexception +\@jsc@warnoldfontcmdexceptionfalse +\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}% +} +\newcommand*{\allowoldfontcommands}{% + \@jsc@warnoldfontcmdexceptiontrue} +\newcommand*{\disallowoldfontcommands}{% + \@jsc@warnoldfontcmdexceptionfalse} +\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} +\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} +\jsc@DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +\jsc@DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} +\jsc@DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} +\jsc@DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} \DeclareRobustCommand*{\cal}{\@fontswitch\relax\mathcal} \DeclareRobustCommand*{\mit}{\@fontswitch\relax\mathnormal} \newcommand\@pnumwidth{1.55em} @@ -1651,6 +1776,7 @@ \newdimen\bibindent \setlength\bibindent{2\jsZw} \newenvironment{thebibliography}[1]{% + \@jsc@warnoldfontcmdexceptiontrue \global\let\presectionname\relax \global\let\postsectionname\relax \chapter*{\bibname}\@mkboth{\bibname}{}% diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty b/Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty index ab80d7ef590..7b6633e60e7 100644 --- a/Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty +++ b/Master/texmf-dist/tex/latex/bxjscls/bxjscjkcat.sty @@ -36,7 +36,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \ProvidesPackage{bxjscjkcat} - [2016/07/16 v1.1f BXJS document classes] + [2016/08/01 v1.2 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 a93cd60aa1e..92e16650459 100644 --- a/Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty +++ b/Master/texmf-dist/tex/latex/bxjscls/bxjscompat.sty @@ -36,7 +36,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \ProvidesPackage{bxjscompat} - [2016/07/16 v1.1f BXJS document classes] + [2016/08/01 v1.2 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 7afa137ce83..86983756bd0 100644 --- a/Master/texmf-dist/tex/latex/bxjscls/bxjsja-minimal.def +++ b/Master/texmf-dist/tex/latex/bxjscls/bxjsja-minimal.def @@ -36,7 +36,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \ProvidesFile{bxjsja-minimal.def} - [2016/07/16 v1.1f BXJS document classes] + [2016/08/01 v1.2 BXJS document classes] %% このファイルは日本語文字を含みます \def\DeclareJaTextFontCommand#1#2{% \DeclareRobustCommand#1[1]{% diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjsja-modern.def b/Master/texmf-dist/tex/latex/bxjscls/bxjsja-modern.def index 9a042527c54..338e4eeb6c0 100644 --- a/Master/texmf-dist/tex/latex/bxjscls/bxjsja-modern.def +++ b/Master/texmf-dist/tex/latex/bxjscls/bxjsja-modern.def @@ -36,7 +36,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \ProvidesFile{bxjsja-modern.def} - [2016/07/16 v1.1f BXJS document classes] + [2016/08/01 v1.2 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 9a133133808..8e7d253c5fe 100644 --- a/Master/texmf-dist/tex/latex/bxjscls/bxjsja-pandoc.def +++ b/Master/texmf-dist/tex/latex/bxjscls/bxjsja-pandoc.def @@ -36,7 +36,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \ProvidesFile{bxjsja-pandoc.def} - [2016/07/16 v1.1f BXJS document classes] + [2016/08/01 v1.2 BXJS document classes] \input{bxjsja-standard.def} \@onlypreamble\bxjs@set@dupload@proc \def\bxjs@set@dupload@proc#1{% diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def b/Master/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def index 4bdbeb5336c..6c07f5b2fdb 100644 --- a/Master/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def +++ b/Master/texmf-dist/tex/latex/bxjscls/bxjsja-standard.def @@ -36,7 +36,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \ProvidesFile{bxjsja-standard.def} - [2016/07/16 v1.1f BXJS document classes] + [2016/08/01 v1.2 BXJS document classes] %% このファイルは日本語文字を含みます \input{bxjsja-minimal.def} \bxjs@simplejasetupfalse diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls b/Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls index 8a1dabd1e85..1c6673c43f5 100644 --- a/Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls +++ b/Master/texmf-dist/tex/latex/bxjscls/bxjsreport.cls @@ -37,7 +37,7 @@ %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} \ProvidesClass{bxjsreport} - [2016/07/16 v1.1f BXJS document classes] + [2016/08/01 v1.2 BXJS document classes] %% このファイルは日本語文字を含みます \RequirePackage{calc} \RequirePackage{keyval} @@ -103,6 +103,15 @@ \fi \bxjs@robust@def\jsInhibitGlue{% \ifx\inhibitglue\@undefined\else \inhibitglue \fi} +\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} \newif\if@restonecol \newif\if@titlepage \newif\if@openright @@ -252,7 +261,7 @@ \DeclareOption{english}{\@englishtrue} \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 @@ -267,13 +276,15 @@ \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} \let\bxjs@composite@proc\relax \DeclareOption{pandoc}{% \def\bxjs@composite@proc{% + \bxjs@oldfontcommandstrue \setkeys{bxjs}{ja=pandoc}% \let\bxjs@engine@given=*}% - \def\bxjs@driver@opt{dvipdfmx-if-dvi}} + \def\bxjs@driver@opt{dvipdfmx}% + \bxjs@dvi@opttrue} \DeclareOption{autodetect-engine}{% \let\bxjs@engine@given=*} \DeclareOption{latex}{% @@ -320,8 +331,7 @@ \def\bxjs@driver@opt{xetex}% \let\bxjs@driver@given\bxjs@driver@@xetex} \DeclareOption{dvipdfmx-if-dvi}{% - \def\bxjs@driver@opt{dvipdfmx-if-dvi}% - \let\bxjs@driver@given\@undefined} + \setkeys{bxjs}{dvi=dvipdfmx}} \newif\ifbxjs@usezw \bxjs@usezwtrue \DeclareOption{nozw}{% \bxjs@usezwfalse} @@ -351,6 +361,11 @@ \bxjs@bigcodefalse} \DeclareOption{bigcode}{% \bxjs@bigcodetrue} +\newif\ifbxjs@oldfontcommands +\DeclareOption{nooldfontcommands}{% + \bxjs@oldfontcommandsfalse} +\DeclareOption{oldfontcommands}{% + \bxjs@oldfontcommandstrue} \def\bxjs@setkey{% \expandafter\bxjs@setkey@a\expandafter{\CurrentOption}} \def\bxjs@setkey@a{\bxjs@safe@setkeys{bxjs}} @@ -412,6 +427,33 @@ {Invalid magstyle value `#1'}\@ehc \let\bxjs@magstyle\bxjs@magstyle@default \fi} +\let\bxjs@geometry@class=c +\let\bxjs@geometry@user=u +\let\bxjs@geometry\bxjs@geometry@class +\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} +\newif\ifbxjs@dvi@opt +\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 +\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 + \def\bxjs@driver@opt{#1}% + \let\bxjs@driver@given\@undefined + \bxjs@dvi@opttrue + \fi} \let\bxjs@ltx@removeelement\@removeelement \def\@removeelement#1#2#3{% \def\reserved@a{#2}% @@ -491,19 +533,20 @@ \fi \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 + \ifx\bxjs@driver@opt\@undefined \ifx\bxjs@jadriver@given\@undefined\else \ClassWarningNoLine\bxjs@clsname {No driver option is given} - \fi - \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} + \fi\fi + \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 \def\bxjs@@minimal{minimal} @@ -550,6 +593,9 @@ \@namedef{ver@\bxjs@js@clsname.cls}{2001/01/01 (bxjs)} \fi \g@addto@macro\@classoptionslist{,nosetpagesize} +\ifbxjs@oldfontcommands + \jsAtEndOfClass{\allowoldfontcommands} +\fi \ifdim\bxjs@param@basefontsize<10pt \def\n@baseline{15}% \else \def\n@baseline{16}\fi \newif\ifbxjs@nfss@patch @@ -787,7 +833,9 @@ } \newdimen\fullwidth \def\bxjs@postproc@layout{% - \let\Gm@driver\bxjs@geometry@driver + \ifx\bxjs@geometry@driver\relax\else + \let\Gm@driver\bxjs@geometry@driver + \fi \@tempdimb=\textwidth \if@twocolumn \@tempdima=2\Cwd \else \@tempdima=1\Cwd \fi \divide\textwidth\@tempdima \multiply\textwidth\@tempdima @@ -813,25 +861,14 @@ \stockwidth=\paperwidth \stockheight=\paperheight } +\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} -\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 \ifbxjs@papersize \ifx\bxjs@driver@given\bxjs@driver@@dvipdfmx \PassOptionsToPackage{dvipdfm}{geometry} @@ -842,11 +879,24 @@ \fi \edef\bxjs@nxt{% \noexpand\RequirePackage[\bxjs@layout@paper,\bxjs@layout]{geometry}} +\AtBeginDocument{\bxjs@pre@geometry@hook} \AtBeginDocument{\ImposeOldLuaTeXBehavior} \bxjs@nxt \bxjs@revert \AtBeginDocument{\RevokeOldLuaTeXBehavior} \let\bxjs@geometry@driver\Gm@driver \bxjs@postproc@layout +\@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 + }}{}} \def\setpagelayout{\@ifstar {\bxjs@reset@layout}{\bxjs@modify@layout}} \def\bxjs@modify@layout#1{% @@ -855,6 +905,26 @@ \def\bxjs@reset@layout#1{% \edef\bxjs@nxt{\noexpand\geometry{reset,\bxjs@layout@paper,#1,truedimen}}% \bxjs@nxt\bxjs@postproc@layout} +\else\ifx\bxjs@geometry\bxjs@geometry@user +\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}} +\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} +\fi\fi \footnotesep=11\p@? \footnotesep=0.7\footnotesep \setlength{\skip\footins}{16\p@? \@plus 5\p@? \@minus 2\p@?} \setcounter{topnumber}{9} @@ -1533,15 +1603,70 @@ \ifdim \wd\@tempboxa <\hsize \centering \fi #1\hskip1\jsZw\relax #2\par \vskip\belowcaptionskip}} -\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} -\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} -\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} -\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} -\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} +\newif\if@jsc@warnoldfontcmd +\@jsc@warnoldfontcmdtrue +\newif\if@jsc@warnoldfontcmdexception +\@jsc@warnoldfontcmdexceptionfalse +\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}% +} +\newcommand*{\allowoldfontcommands}{% + \@jsc@warnoldfontcmdexceptiontrue} +\newcommand*{\disallowoldfontcommands}{% + \@jsc@warnoldfontcmdexceptionfalse} +\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} +\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} +\jsc@DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +\jsc@DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} +\jsc@DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} +\jsc@DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} \DeclareRobustCommand*{\cal}{\@fontswitch\relax\mathcal} \DeclareRobustCommand*{\mit}{\@fontswitch\relax\mathnormal} \newcommand\@pnumwidth{1.55em} @@ -1647,6 +1772,7 @@ \newdimen\bibindent \setlength\bibindent{2\jsZw} \newenvironment{thebibliography}[1]{% + \@jsc@warnoldfontcmdexceptiontrue \global\let\presectionname\relax \global\let\postsectionname\relax \chapter*{\bibname}\@mkboth{\bibname}{}% diff --git a/Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls b/Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls index ec1a2b15715..d0c10a719b6 100644 --- a/Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls +++ b/Master/texmf-dist/tex/latex/bxjscls/bxjsslide.cls @@ -37,7 +37,7 @@ %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} \ProvidesClass{bxjsslide} - [2016/07/16 v1.1f BXJS document classes] + [2016/08/01 v1.2 BXJS document classes] %% このファイルは日本語文字を含みます \RequirePackage{calc} \RequirePackage{keyval} @@ -103,6 +103,15 @@ \fi \bxjs@robust@def\jsInhibitGlue{% \ifx\inhibitglue\@undefined\else \inhibitglue \fi} +\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} \newif\if@restonecol \newif\if@titlepage \newif\if@enablejfam \@enablejfamtrue @@ -248,7 +257,7 @@ \DeclareOption{english}{\@englishtrue} \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 @@ -263,13 +272,15 @@ \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} \let\bxjs@composite@proc\relax \DeclareOption{pandoc}{% \def\bxjs@composite@proc{% + \bxjs@oldfontcommandstrue \setkeys{bxjs}{ja=pandoc}% \let\bxjs@engine@given=*}% - \def\bxjs@driver@opt{dvipdfmx-if-dvi}} + \def\bxjs@driver@opt{dvipdfmx}% + \bxjs@dvi@opttrue} \DeclareOption{autodetect-engine}{% \let\bxjs@engine@given=*} \DeclareOption{latex}{% @@ -316,8 +327,7 @@ \def\bxjs@driver@opt{xetex}% \let\bxjs@driver@given\bxjs@driver@@xetex} \DeclareOption{dvipdfmx-if-dvi}{% - \def\bxjs@driver@opt{dvipdfmx-if-dvi}% - \let\bxjs@driver@given\@undefined} + \setkeys{bxjs}{dvi=dvipdfmx}} \newif\ifbxjs@usezw \bxjs@usezwtrue \DeclareOption{nozw}{% \bxjs@usezwfalse} @@ -347,6 +357,11 @@ \bxjs@bigcodefalse} \DeclareOption{bigcode}{% \bxjs@bigcodetrue} +\newif\ifbxjs@oldfontcommands +\DeclareOption{nooldfontcommands}{% + \bxjs@oldfontcommandsfalse} +\DeclareOption{oldfontcommands}{% + \bxjs@oldfontcommandstrue} \def\bxjs@setkey{% \expandafter\bxjs@setkey@a\expandafter{\CurrentOption}} \def\bxjs@setkey@a{\bxjs@safe@setkeys{bxjs}} @@ -408,6 +423,33 @@ {Invalid magstyle value `#1'}\@ehc \let\bxjs@magstyle\bxjs@magstyle@default \fi} +\let\bxjs@geometry@class=c +\let\bxjs@geometry@user=u +\let\bxjs@geometry\bxjs@geometry@class +\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} +\newif\ifbxjs@dvi@opt +\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 +\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 + \def\bxjs@driver@opt{#1}% + \let\bxjs@driver@given\@undefined + \bxjs@dvi@opttrue + \fi} \let\bxjs@ltx@removeelement\@removeelement \def\@removeelement#1#2#3{% \def\reserved@a{#2}% @@ -487,19 +529,20 @@ \fi \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 + \ifx\bxjs@driver@opt\@undefined \ifx\bxjs@jadriver@given\@undefined\else \ClassWarningNoLine\bxjs@clsname {No driver option is given} - \fi - \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} + \fi\fi + \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 \def\bxjs@@minimal{minimal} @@ -546,6 +589,9 @@ \@namedef{ver@\bxjs@js@clsname.cls}{2001/01/01 (bxjs)} \fi \g@addto@macro\@classoptionslist{,nosetpagesize} +\ifbxjs@oldfontcommands + \jsAtEndOfClass{\allowoldfontcommands} +\fi \def\n@baseline{13}% \newif\ifbxjs@nfss@patch \ifx\bxjs@magstyle\bxjs@magstyle@mag @@ -781,7 +827,9 @@ } \newdimen\fullwidth \def\bxjs@postproc@layout{% - \let\Gm@driver\bxjs@geometry@driver + \ifx\bxjs@geometry@driver\relax\else + \let\Gm@driver\bxjs@geometry@driver + \fi \@tempdimb=\textwidth \if@twocolumn \@tempdima=2\Cwd \else \@tempdima=1\Cwd \fi \divide\textwidth\@tempdima \multiply\textwidth\@tempdima @@ -807,25 +855,14 @@ \stockwidth=\paperwidth \stockheight=\paperheight } +\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} -\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 \ifbxjs@papersize \ifx\bxjs@driver@given\bxjs@driver@@dvipdfmx \PassOptionsToPackage{dvipdfm}{geometry} @@ -836,11 +873,24 @@ \fi \edef\bxjs@nxt{% \noexpand\RequirePackage[\bxjs@layout@paper,\bxjs@layout]{geometry}} +\AtBeginDocument{\bxjs@pre@geometry@hook} \AtBeginDocument{\ImposeOldLuaTeXBehavior} \bxjs@nxt \bxjs@revert \AtBeginDocument{\RevokeOldLuaTeXBehavior} \let\bxjs@geometry@driver\Gm@driver \bxjs@postproc@layout +\@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 + }}{}} \def\setpagelayout{\@ifstar {\bxjs@reset@layout}{\bxjs@modify@layout}} \def\bxjs@modify@layout#1{% @@ -849,6 +899,26 @@ \def\bxjs@reset@layout#1{% \edef\bxjs@nxt{\noexpand\geometry{reset,\bxjs@layout@paper,#1,truedimen}}% \bxjs@nxt\bxjs@postproc@layout} +\else\ifx\bxjs@geometry\bxjs@geometry@user +\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}} +\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} +\fi\fi \footnotesep=11\p@? \footnotesep=0.7\footnotesep \setlength{\skip\footins}{16\p@? \@plus 5\p@? \@minus 2\p@?} \setcounter{topnumber}{9} @@ -1480,15 +1550,70 @@ \ifdim \wd\@tempboxa <\hsize \centering \fi #1\hskip1\jsZw\relax #2\par \vskip\belowcaptionskip}} -\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} -\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} -\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} -\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} -\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} +\newif\if@jsc@warnoldfontcmd +\@jsc@warnoldfontcmdtrue +\newif\if@jsc@warnoldfontcmdexception +\@jsc@warnoldfontcmdexceptionfalse +\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}% +} +\newcommand*{\allowoldfontcommands}{% + \@jsc@warnoldfontcmdexceptiontrue} +\newcommand*{\disallowoldfontcommands}{% + \@jsc@warnoldfontcmdexceptionfalse} +\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} +\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} +\jsc@DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +\jsc@DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} +\jsc@DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} +\jsc@DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} \DeclareRobustCommand*{\cal}{\@fontswitch\relax\mathcal} \DeclareRobustCommand*{\mit}{\@fontswitch\relax\mathnormal} \newcommand\@pnumwidth{1.55em} @@ -1575,6 +1700,7 @@ \newdimen\bibindent \setlength\bibindent{2\jsZw} \newenvironment{thebibliography}[1]{% + \@jsc@warnoldfontcmdexceptiontrue \global\let\presectionname\relax \global\let\postsectionname\relax \section*{\refname}\@mkboth{\refname}{\refname}% -- cgit v1.2.3