diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx | 286 |
1 files changed, 228 insertions, 58 deletions
diff --git a/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx b/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx index d42bdf73b68..0e9f43cea11 100644 --- a/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx +++ b/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx @@ -64,10 +64,12 @@ %<pandoc>\ProvidesFile{bxjsja-pandoc.def} %<compat>\ProvidesPackage{bxjscompat} %<cjkcat>\ProvidesPackage{bxjscjkcat} +%<ancpandoc>\ProvidesPackage{bxjspandoc} %<*driver> \ProvidesFile{bxjscls.dtx} %</driver> - [2017/09/09 v1.6 BXJS document classes] + [2017/09/24 v1.6a BXJS document classes] +% [2017/09/09 v1.6 BXJS document classes] % based on jsclasses [2017/09/03] % [2017/07/07 v1.5d BXJS document classes] % [2017/06/10 v1.5c BXJS document classes] @@ -5248,7 +5250,8 @@ % |\jachar| と同義になるが、それ以外は何もしない。 % \end{ZRnote} % \begin{macrocode} -\newcommand\jsParagraphMark{\jsJaChar{■}} +\newcommand\jsParagraphMark{\relax\jsJaChar{■}} +\let\bxjs@org@paragraph@mark\jsParagraphMark \ifx\bxjs@paragraph@mark\@empty \let\jsParagraphMark\@empty \else\ifx\bxjs@paragraph@mark\@undefined\else @@ -9567,6 +9570,7 @@ % \begin{macrocode} %<*pandoc> \input{bxjsja-standard.def} +\RequirePackage{bxjspandoc} % \end{macrocode} % %^^A---------------- @@ -9617,22 +9621,6 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\bxjs@mark@as@loaded} -% |\bxjs@mark@as@loaded{|\Meta{ファイル名}|}|\Means -% 特定のファイルに対して、(|\@filewithoptions| の処理に関して) -% 読込済であるとマークする。 -% \begin{macrocode} -\def\bxjs@mark@as@loaded#1{% - \expandafter\bxjs@mal@a\csname ver@#1\endcsname{#1}} -\def\bxjs@mal@a#1#2{% - \ifx#1\relax - \def#1{2001/01/01}% - \ClassInfo\bxjs@clsname - {File '#2' marked as loaded\@gobble}% - \fi} -% \end{macrocode} -% \end{macro} -% %^^A---------------- %\subsection{lang変数} % |lang=ja| という言語指定が行われると、 @@ -9645,7 +9633,7 @@ % \end{macrocode} % Polyglossiaについて。 % \begin{macrocode} -\bxjs@mark@as@loaded{polyglossia.sty} +\pandocSkipLoadPackage{polyglossia} \bxjs@set@dupload@proc{polyglossia.sty}{% \ClassWarning\bxjs@clsname {Loading of polyglossia is blocked}} @@ -9665,7 +9653,7 @@ % \end{macrocode} % Babelについて。 % \begin{macrocode} -\bxjs@mark@as@loaded{babel.sty} +\pandocSkipLoadPackage{babel} \bxjs@set@dupload@proc{babel.sty}{% \ClassWarning\bxjs@clsname {Loading of babel is blocked}} @@ -9691,57 +9679,49 @@ % 指定された場合は |\setmainjfont| の指定にまわす。 % \begin{macrocode} \if l\jsEngine - \bxjs@mark@as@loaded{xeCJK.sty} + \pandocSkipLoadPackage{xeCJK} \providecommand*{\setCJKmainfont}{\setmainjfont} \fi % \end{macrocode} % %^^A---------------- -%\subsection{fixltx2eパッケージ} -% テンプレートでは |fixltx2e| パッケージを読み込むが、 -% 最近(2015年版以降)の{\LaTeX}ではこれで警告が出る。 -% これを抑止する。 +%\subsection{paragraphのマーク} % -% {\LaTeX}カーネルが新しい場合は |fixltx2e| を -% 読込済にする。 +% BXJSクラスでは |\paragraph| の見出しの前に |\jsParagraphMark| +% で指定したマークが付加され、既定ではこれは“■”である。 +% しかし、この規定は |\paragraph| が本来のレイアウトを保っている、 +% すなわち「行内見出しである」「節番号が付かない」ことが前提になって +% いると考えられる。 +% Pandocはこの規定を変更することがある +% (特に既定で |\paragraph| を別行見出しに再定義する) +% ため、変更された場合は |\jsParagraphMark| の既定値を空にする。 +% +% Pandocがプレアンブルで行う再定義の結果を調べるため、 +% begin-documentフックを利用する。 % \begin{macrocode} -\ifx\@IncludeInRelease\@undefined\else - \bxjs@mark@as@loaded{fixltx2e.sty} -\fi +\AtBeginDocument{% + \@tempswafalse % \end{macrocode} -% -%^^A---------------- -%\subsection{cmapパッケージ} -% エンジンが{(u)\pLaTeX}のときに |cmap| パッケージが -% 読み込まれるのを阻止する。 -% (実際は警告が出るだけで無害であるが。) -% +% まず、マーク変更が必要かを調べる。 +% |\oldparagraph| という制御綴が定義済の場合、Pandocが |\paragraph| +% の様式を変更したということなので、マーク変更が必要である。 % \begin{macrocode} -\if j\jsEngine - \bxjs@mark@as@loaded{cmap.sty} -\fi + \ifx\oldparagraph\@undefined\else + \@tempswatrue + \fi % \end{macrocode} -% -%^^A---------------- -%\subsection{microtypeパッケージ} -% 警告が多すぎなので消す。 -% +% |\paragraph| が番号付きの場合は、マーク変更が必要である。 % \begin{macrocode} -\if j\jsEngine \else - \PassOptionsToPackage{verbose=silent}{microtype} -\fi + \ifnum\c@secnumdepth>3 + \@tempswatrue + \fi % \end{macrocode} -% -% エンジンが{(u)\pLaTeX}のときに |microtype| パッケージが -% 読み込まれるのを阻止し、さらにテンプレートで使われている命令を -% 通すためにダミーの定義を行う。 -% \Note 昔はstandardドライバでこの処理を行っていたが、 -% 元来はPandoc用の処理なので、1.5版でpandocに移動。 +% 「マーク変更が必要」である場合、|\jsParagraphMark| が既定値のままで +% あれば空に変更する。 % \begin{macrocode} -\if j\jsEngine - \bxjs@mark@as@loaded{microtype.sty} - \newcommand*\UseMicrotypeSet[2][]{} -\fi + \if@tempswa\ifx\jsParagraphMark\bxjs@org@paragraph@mark + \let\jsParagraphMark\@empty + \fi\fi} % \end{macrocode} % %^^A---------------- @@ -9763,7 +9743,9 @@ % 他のクラスの文書で読み込んで利用することもできる。 % % \begin{itemize} +% \item bxjscompat : ムニャムニャムニャ。 % \item bxjscjkcat: modernドライバ用の和文カテゴリを適用する。 +% \item bxjspandoc : Pandoc用のナニカ。 % \end{itemize} % % \begin{macrocode} @@ -10410,6 +10392,194 @@ D800,DB80,DC00,E000,FB00,FB50,FE00,FE70,% %</cjkcat> % \end{macrocode} % +%^^A======================================================== +% \section{補助パッケージ:bxjspandoc \ZRX} +% +% Pandocの{\LaTeX}用標準テンプレートをより幸せに使うための設定。 +% BXJSクラスのpandocドライバのコードの中の、“汎用的”に使える +% 部分を切り出したもの。 +% つまり現在のpandocドライバはこのパッケージを読みこむ。 +% \Note テンプレートの{\TeX}コードより前に読み込む必要があるため、 +% 専ら文書クラス内での読込に限られる。 +% +%^^A---------------- +% \subsection{準備} +% +% \begin{macrocode} +%<*ancpandoc> +%% このファイルは日本語文字を含みます. +\def\bxjsp@pkgname{bxjscjkcat} +% \end{macrocode} +% +% \begin{macro}{\bxjsp@engine} +% エンジンの種別。 +% \begin{macrocode} +\let\bxjsp@engine=n +\@onlypreamble\bxjsp@do +\def\bxjsp@do#1#2{% + \edef\bxjsp@tmpa{\string#1}% + \edef\bxjsp@tmpb{\meaning#1}% + \ifx\bxjsp@tmpa\bxjsp@tmpb #2\fi} +\bxjsp@do\kanjiskip{\let\bxjsp@engine=j} +\bxjsp@do\XeTeXversion{\let\bxjsp@engine=x} +\bxjsp@do\pdftexversion{\let\bxjsp@engine=p} +\bxjsp@do\luatexversion{\let\bxjsp@engine=l} +% \end{macrocode} +% \end{macro} +% +%^^A---------------- +%\subsection{パッケージ読込の阻止} +% +% \begin{macro}{\pandocSkipLoadFile} +% |\pandocSkipLoadFile{|\Meta{ファイル名}|}|\Means +% 特定のファイルを(|\@filewithoptions| の処理に関して) +% 読込済であるとマークする。 +% \begin{macrocode} +\newcommand*\pandocSkipLoadFile[1]{% + \expandafter\bxjsp@skip@load@file@a\csname ver@#1\endcsname{#1}} +\def\bxjsp@skip@load@file@a#1#2{% + \ifx#1\relax + \def#1{2001/01/01}% + \PackageInfo\bxjsp@pkgname + {File '#2' marked as loaded\@gobble}% + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\pandocSkipLoadPackage} +% |\pandocSkipLoadPackage{|\Meta{パッケージ名}|}|\Means +% |\pandocSkipLoadFile| の機能を用いてパッケージの読込を阻止する。 +% \begin{macrocode} +\newcommand*\pandocSkipLoadPackage[1]{% + \pandocSkipLoadFile{#1.sty}} +% \end{macrocode} +% \end{macro} +% +%^^A---------------- +%\subsection{fixltx2eパッケージ} +% テンプレートでは |fixltx2e| パッケージを読み込むが、 +% 最近(2015年版以降)の{\LaTeX}ではこれで警告が出る。 +% これを抑止する。 +% +% {\LaTeX}カーネルが新しい場合は |fixltx2e| を +% 読込済にする。 +% \begin{macrocode} +\ifx\@IncludeInRelease\@undefined\else + \pandocSkipLoadPackage{fixltx2e} +\fi +% \end{macrocode} +% +%^^A---------------- +%\subsection{cmapパッケージ} +% エンジンが{(u)\pLaTeX}のときに |cmap| パッケージが +% 読み込まれるのを阻止する。 +% (実際は警告が出るだけで無害であるが。) +% +% \begin{macrocode} +\if j\bxjsp@engine + \pandocSkipLoadPackage{cmap} +\fi +% \end{macrocode} +% +%^^A---------------- +%\subsection{microtypeパッケージ} +% 警告が多すぎなので消す。 +% +% \begin{macrocode} +\if j\bxjsp@engine \else + \PassOptionsToPackage{verbose=silent}{microtype} +\fi +% \end{macrocode} +% +% エンジンが{(u)\pLaTeX}のときに |microtype| パッケージが +% 読み込まれるのを阻止し、さらにテンプレートで使われている命令を +% 通すためにダミーの定義を行う。 +% \Note 昔はstandardドライバでこの処理を行っていたが、 +% 元来はPandoc用の処理なので、1.5版でpandocに移動。 +% \begin{macrocode} +\if j\bxjsp@engine + \pandocSkipLoadPackage{microtype} + \newcommand*\UseMicrotypeSet[2][]{} +\fi +% \end{macrocode} +% +%^^A---------------- +%\subsection{Unicode文字変換対策} +% +% Pandocで{\LaTeX}形式に書き出す場合は、元データ中の一部のUnicode文字を +% 「{\LaTeX}の表記」に置き換える。 +% その中には日本語文書で問題になるものが含まれる。 +% \begin{quote} +% \mbox{…}→|\ldots{}|\quad +% \mbox{‘}→|`|\quad +% \mbox{’}→|'|\quad +% \mbox{“}→|``|\quad +% \mbox{”}→|''|\quad +% \end{quote} +% 日本語{\LaTeX}では「{\LaTeX}の表記」は欧文扱い、 +% Unicode文字は和文扱いとして使い分ける習慣があるので、 +% このような置換が行われるのは好ましくない。 +% +% これらの置換のうち、後の4つはPandocの |--no-tex-ligatures| オプションを +% 指定すれば抑止できるが、「…」の置換を抑止する機能はないようである。 +% そこで、「|\ldots{}| を『…』に戻す」という処置を行う。 +% +% \begin{macro}{\pandocLdots} +% Pandoc用の |\ldots| の実装。 +% 非数式でありかつ後続が |{}| の場合は代わりに |…| を実行する。 +% \begin{macrocode} +\DeclareRobustCommand{\pandocLdots}{% + \relax\ifmmode \expandafter\bxjsp@org@ldots + \else \expandafter\bxjsp@ldots@a + \fi} +\def\bxjsp@ja@ellipsis{…} +\let\bxjsp@org@ldots\ldots +\def\bxjsp@ldots@a{% + \futurelet\bxjsp@tok\bxjsp@ldots@b} +\def\bxjsp@ldots@b{% + \ifx\bxjsp@tok\bgroup \expandafter\bxjsp@ldots@c + \else \expandafter\bxjsp@org@ldots + \fi} +\def\bxjsp@ldots@c{% + \afterassignment\bxjsp@ldots@d \let\bxjsp@tok=} +\def\bxjsp@ldots@d{% + \futurelet\bxjsp@tok\bxjsp@ldots@e} +\def\bxjsp@ldots@e{% + \ifx\bxjsp@tok\egroup \expandafter\bxjsp@ldots@f + \else \expandafter\bxjsp@ldots@g + \fi} +\def\bxjsp@ldots@f{% + \bxjsp@ja@ellipsis \let\bxjsp@tok=} +\def\bxjsp@ldots@g{% + \expandafter\bxjsp@org@ldots\expandafter{\romannumeral-`} } +% \end{macrocode} +% \end{macro} +% +% |\ldots| の実装を置き換える。 +% \begin{macrocode} +\AtBeginDocument{% + \let\bxjsp@org@ldots\ldots + \let\ldots\pandocLdots} +% \end{macrocode} +% +%^^A---------------- +% \subsection{PandoLaモジュール} +% インストール済であれば読み込む。 +% \begin{macrocode} +\IfFileExists{bxpandola.sty}{% + \RequirePackage{bxpandola}\relax + \PackageInfo\bxjsp@pkgname + {PandoLa module is loaded\@gobble} +}{} +% \end{macrocode} +% +%^^A---------------- +% \subsection{完了} +% おしまい。 +% \begin{macrocode} +%</ancpandoc> +% \end{macrocode} +% % 補助パッケージ実装はここまで。 % \begin{macrocode} %</anc> |