summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx')
-rw-r--r--Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx286
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>