summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/bxjscls
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2016-08-17 21:34:51 +0000
committerKarl Berry <karl@freefriends.org>2016-08-17 21:34:51 +0000
commit3ebff037dbea5e7f832f1b69e71662f206b791e3 (patch)
tree704d5c2ad94c59d3194083491671ca62fb0e77e0 /Master/texmf-dist/source/latex/bxjscls
parent02f5a1ff8007f70b1adef128a3481ea5c19ba4e8 (diff)
bxjscls (17aug16)
git-svn-id: svn://tug.org/texlive/trunk@41878 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/bxjscls')
-rw-r--r--Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx533
1 files changed, 435 insertions, 98 deletions
diff --git a/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx b/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx
index 198071a1419..fd6a97f7b82 100644
--- a/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx
+++ b/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx
@@ -70,7 +70,8 @@
%<*driver>
\ProvidesFile{bxjscls.dtx}
%</driver>
- [2016/08/01 v1.2 BXJS document classes]
+ [2016/08/16 v1.2a 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]
@@ -99,6 +100,7 @@
\newcommand{\TODO}{\par\noindent
{\usefont{OT1}{cmss}{sbc}{n}\color{red}TODO:}\ }
\newcommand{\Means}{~:\quad}
+\newcommand{\OR}{$\;|\;$}
\newcommand{\ZRX}{☃}
\newenvironment{ZRnote}
{\StartZRnote}{\EndZRnote}
@@ -229,7 +231,7 @@
% \begin{ZRnote}
% \begin{macrocode}
%<*cls>
-%% このファイルは日本語文字を含みます
+%% このファイルは日本語文字を含みます.
% \end{macrocode}
% 長さ値の指定で式を利用可能にするため |calc| を読み込む。
% \begin{macrocode}
@@ -249,15 +251,40 @@
}{}
% \end{macrocode}
%
+% \begin{macro}{\jsDocClass}
+% 〔トークン〕
+% 文書クラスの種別。
+% 以下の定値トークンの何れかと同等:
+% |\jsArticle|=bxjsarticle、
+% |\jsBook|=bxjsbook、
+% |\jsReport|=bxjsreport、
+% |\jsSlide|=bxjsslide。
+% \begin{macrocode}
+\let\jsArticle=a
+\let\jsBook=b
+\let\jsReport=r
+\let\jsSlide=s
+%<article>\let\jsDocClass\jsArticle
+%<article>\def\bxjs@clsname{bxjsarticle}
+%<book>\let\jsDocClass\jsBook
+%<book>\def\bxjs@clsname{bxjsbook}
+%<report>\let\jsDocClass\jsReport
+%<report>\def\bxjs@clsname{bxjsreport}
+%<slide>\let\jsDocClass\jsSlide
+%<slide>\def\bxjs@clsname{bxjsslide}
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\jsEngine}
% 〔暗黙文字トークン〕
% エンジン({\TeX}の種類)の種別:
-% |n|=オリジナル\TeX、
-% |j|={\pTeX}またはu{\pTeX}、
-% |J|=NTT j{\TeX}、
+% |j|={\pTeX}系、
% |x|={\XeTeX}、
% |p|=pdf{\TeX}(含DVIモード)、
-% |l|=Lua{\TeX}。
+% |l|=Lua{\TeX}、
+% |J|=NTT j{\TeX}、
+% |O|=Omega系、
+% |n|=以上の何れでもない。
%
% \begin{macrocode}
\let\jsEngine=n
@@ -267,6 +294,7 @@
\ifx\bxjs@tmpa\bxjs@tmpb #2\fi}
\bxjs@test@engine\kanjiskip{\let\jsEngine=j}
\bxjs@test@engine\jintercharskip{\let\jsEngine=J}
+\bxjs@test@engine\Omegaversion{\let\jsEngine=O}
\bxjs@test@engine\XeTeXversion{\let\jsEngine=x}
\bxjs@test@engine\pdftexversion{\let\jsEngine=p}
\bxjs@test@engine\luatexversion{\let\jsEngine=l}
@@ -285,6 +313,15 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\ifjsWithpTeXng}
+% 〔スイッチ〕
+% エンジンが{\pTeX-ng}であるか。
+% \begin{macrocode}
+\newif\ifjsWithpTeXng
+\bxjs@test@engine\ngbanner{\jsWithpTeXngtrue}
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\ifjsWitheTeX}
% 〔スイッチ〕
% エンジンが{\eTeX}拡張をもつか。
@@ -294,6 +331,21 @@
% \end{macrocode}
% \end{macro}
%
+% 非サポートのエンジンの場合は強制終了させる。
+% \Note NTT j{\TeX}とOmega系。
+% \begin{macrocode}
+\let\bxjs@tmpa\relax
+\ifx J\jsEngine \def\bxjs@tmpa{NTT-jTeX}\fi
+\ifx O\jsEngine \def\bxjs@tmpa{Omega}\fi
+\ifx\bxjs@tmpa\relax \expandafter\@gobble
+\else
+ \ClassError\@currname
+ {The engine in use (\bxjs@tmpa) is not supported}
+ {It's a fatal error. I'll quit right now.}
+ \expandafter\@firstofone
+\fi{\endinput\@@end}
+% \end{macrocode}
+%
% \begin{macro}{\bxjs@protected}
% {\eTeX}拡張が有効な場合にのみ |\protected|
% の効果をもつ。
@@ -332,7 +384,7 @@
% \end{macro}
%
% \begin{macro}{\bxjs@cond}
-% |\bxjs@cond\ifXXX|……|\fi|\Meta{真}\Meta{偽}\par
+% |\bxjs@cond\ifXXX|……|\fi{|\Meta{真}|}{|\Meta{偽}|}|\par
% {\TeX}のif-文(|\ifXXX|……\Meta{真}|\else|\Meta{偽}|\fi|)を
% 末尾呼出形式に変換するためのマクロ。
% \begin{macrocode}
@@ -343,30 +395,6 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\jsDocClass}
-% 〔トークン〕
-% 文書クラスの種別。
-% 以下の定値トークンの何れかと同等:
-% |\jsArticle|=bxjsarticle、
-% |\jsBook|=bxjsbook、
-% |\jsReport|=bxjsreport、
-% |\jsSlide|=bxjsslide。
-% \begin{macrocode}
-\let\jsArticle=a
-\let\jsBook=b
-\let\jsReport=r
-\let\jsSlide=s
-%<article>\let\jsDocClass\jsArticle
-%<article>\def\bxjs@clsname{bxjsarticle}
-%<book>\let\jsDocClass\jsBook
-%<book>\def\bxjs@clsname{bxjsbook}
-%<report>\let\jsDocClass\jsReport
-%<report>\def\bxjs@clsname{bxjsreport}
-%<slide>\let\jsDocClass\jsSlide
-%<slide>\def\bxjs@clsname{bxjsslide}
-% \end{macrocode}
-% \end{macro}
-%
% \begin{macro}{\jsAtEndOfClass}
% このクラスの読込終了時に対するフック。
% (補助パッケージ中で用いられる。)
@@ -540,9 +568,19 @@
%
% \begin{macrocode}
\newif\if@slide
+% \end{macrocode}
+%
+% \begin{ZRnote}
+% BXJSではスライド用のクラス |bxjsslide| を用意しているので、
+% 本来はこのスイッチは不要なはずである。
+% しかし、JSクラスの一部のコードをそのまま使うために保持している。
+% \Note この |\if@slide| という制御綴は、ユニークでないにも関わらず、
+% 衝突した場合に正常動作が保たれない、という問題を抱えている。
+% \begin{macrocode}
%<!slide>\@slidefalse
%<slide>\@slidetrue
% \end{macrocode}
+% \end{ZRnote}
%
% \paragraph{サイズオプション}
%
@@ -619,7 +657,7 @@
% \end{macrocode}
% \end{macro}
%
-% |\\ifjsc@mag| は「|\mag| を使うか」を表すスイッチ。
+% |\ifjsc@mag| は「|\mag| を使うか」を表すスイッチ。
% \begin{macrocode}
\newif\ifjsc@mag
%\let\jsc@magscale\@undefined
@@ -803,12 +841,13 @@
% \texttt{draft} でoverfull boxの起きた行末に5ptの罫線を引きます。
%
% \begin{ZRnote}
+% \begin{macro}{\ifjsDraft}
% JSクラスは |\ifdraft| という公開名のスイッチを用いているが、
% これは |ifdraft| パッケージと衝突するので、代わりに |\ifjsDraft|
% の名前を用い、本文開始時に |\ifdraft| が未定義の場合に限り、
% |\ifjsDraft| を |\ifdraft| にコピーする処理にする。
-% \Note |\ifdraft| は2.0版で廃止予定。
-% \end{ZRnote}
+% \Note JSクラスの |\ifdraft| は2016/07/13版で廃止された。
+% よって |\ifdraft| は2.0版で廃止を予定する。
% \begin{macrocode}
\let\ifjsDraft\iffalse
\@onlypreamble\bxjs@draft
@@ -822,6 +861,8 @@
\csname ifjsDraft\endcsname
\fi}
% \end{macrocode}
+% \end{macro}
+% \end{ZRnote}
%
% \paragraph{和文フォントメトリックの選択}
% \mbox{}
@@ -834,14 +875,17 @@
% \begin{ZRnote}
% |geometry| パッケージが行う。
%
+% \begin{macro}{\ifbxjs@papersize}
+% 〔スイッチ〕 papersizeスペシャルを出力するか。
% 既定で有効であるが、|nopapersize| オプションで無効にできる。
+% \Note JSクラスでは |\ifpapersize| という制御綴だが、これは採用しない。
% \begin{macrocode}
\newif\ifbxjs@papersize
\bxjs@papersizetrue
\DeclareOption{nopapersize}{\bxjs@papersizefalse}
\DeclareOption{papersize}{\bxjs@papersizetrue}
% \end{macrocode}
-%
+% \end{macro}
% \end{ZRnote}
%
% \paragraph{英語化}
@@ -898,8 +942,16 @@
% \item |japaram=|\meta{name} : 和文フォントパラメタの指定。
% \item |magstyle=|\meta{name} : “版面拡大”の実現方法の選択。
% \item |dvi=|\meta{name} : DVIモードの時のみに参照されるドライバ指定。
-% \item |geometry=|\meta{name} : |geometry| パッケージの読込を自動的に
+% \item |geometry=|\{|class|\OR|user|\} : |geometry| パッケージの読込を自動的に
% 行うかユーザに任せるか。
+% \item |fancyhdr=|\meta{bool} : |fancyhdr| パッケージ用の調整を行うか。
+% \item |layout=|\meta{name} : レイアウト変種の指定。
+% \item |textwidth-limit=|\meta{number} : |bxjsbook| における、
+% |\textwidth| の上限の全角単位での値。
+% \item |paragraph-mark=|\meta{char} : パラグラフのマーク。
+% \item |whole-zw-lines| : (予定)
+% \item |dummy-microtype| : (予定)
+% \item |hyperref-enc| : (予定)
% \end{itemize}
%
% \begin{macro}{\bxjs@invscale}
@@ -1020,6 +1072,13 @@
\DeclareOption{lualatex}{%
\def\bxjs@engine@opt{lualatex}%
\let\bxjs@engine@given=l}
+\DeclareOption{platex-ng}{%
+ \def\bxjs@engine@opt{platex-ng}%
+ \let\bxjs@engine@given=g}
+\DeclareOption{platex-ng*}{%
+ \def\bxjs@engine@opt{platex-ng*}%
+ \let\bxjs@platexng@nodrv=t%
+ \let\bxjs@engine@given=g}
% \end{macrocode}
%
% \begin{macro}{\bxjs@driver@given}
@@ -1214,6 +1273,25 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\bxjs@set@keyval}
+% |\bxjs@set@keyval{|\meta{key}|}{|\meta{value}|}{|\meta{error}|}|\par
+% |\bxjs@kv@|\meta{key}|@|\meta{value} が定義済ならそれを実行し、
+% 未定義ならエラーを出す。
+% \begin{macrocode}
+\def\bxjs@set@keyval#1#2#3{%
+ \expandafter\let\expandafter\bxjs@next\csname bxjs@kv@#1@#2\endcsname
+ \ifx\bxjs@next\relax
+ \bxjs@error@keyval{#1}{#2}%
+ #3%
+ \else \bxjs@next
+ \fi}
+\@onlypreamble\bxjs@error@keyval
+\def\bxjs@error@keyval#1#2{%
+ \ClassError\bxjs@clsname
+ {Invalid value '#2' for option #1}\@ehc}
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\ifbxjs@scaleset}
% 和文スケール値が指定されたか。
% \begin{macrocode}
@@ -1222,10 +1300,10 @@
% \end{macro}
%
% \begin{macro}{\jsScale}
-% 和文スケール値。
+% 〔実数値マクロ〕
+% 和文スケール値。
% \begin{macrocode}
\def\jsScale{0.924715}
-\def\Cjascale{\jsScale}
% \end{macrocode}
% \end{macro}
%
@@ -1264,6 +1342,7 @@
% \end{macrocode}
%
% |CJK| オプションは廃止された。
+% \Note 1.3版で宣言そのものを削除する。
% \begin{macrocode}
\DeclareOption{CJK}{%
\ClassWarning\bxjs@clsname
@@ -1295,7 +1374,9 @@
% \end{macrocode}
% \end{macro}
%
-% |ja| オプション(|jadriver| オプション)の処理。
+% |ja| オプションの処理。
+% \Note |jadriver| は0.9版で用いられた旧称。
+% \Note 単なる |ja| という指定は無視される(Pandoc 対策)。
% \begin{macrocode}
\define@key{bxjs}{jadriver}{\edef\bxjs@jadriver{#1}}
\define@key{bxjs}{ja}[\relax]{%
@@ -1347,6 +1428,9 @@
\ifx l\jsEngine \ifnum\luatexversion>86
\let\bxjs@magstyle@default\bxjs@magstyle@xreal
\fi\fi
+\ifjsWithpTeXng
+ \let\bxjs@magstyle@default\bxjs@magstyle@xreal
+\fi
\let\bxjs@magstyle\bxjs@magstyle@default
% \end{macrocode}
% \end{macro}
@@ -1384,6 +1468,22 @@
\fi}
% \end{macrocode}
%
+% \begin{macro}{\ifbxjs@fancyhdr}
+% 〔スイッチ〕
+% |fancyhdr| パッケージに対する調整を行うか。
+% \begin{macrocode}
+\newif\ifbxjs@fancyhdr \bxjs@fancyhdrtrue
+% \end{macrocode}
+% \end{macro}
+%
+% |fancyhdr| オプションの処理。
+% \begin{macrocode}
+\let\bxjs@kv@fancyhdr@true\bxjs@fancyhdrtrue
+\let\bxjs@kv@fancyhdr@false\bxjs@fancyhdrfalse
+\define@key{bxjs}{fancyhdr}{%
+ \bxjs@set@keyval{fancyhdr}{#1}{}}
+% \end{macrocode}
+%
% \begin{macro}{\ifbxjs@dvi@opt}
% |dvi| オプションが指定されたか。
% \begin{macrocode}
@@ -1417,6 +1517,75 @@
\fi}
% \end{macrocode}
%
+% \begin{macro}{\ifbxjs@layout@buggyhmargin}
+% 〔スイッチ〕
+% |bxjsbook| の左右マージンがアレか。
+% \Note 既定はアレだが1.3版で非アレになる予定。
+% \begin{macrocode}
+\newif\ifbxjs@layout@buggyhmargin \bxjs@layout@buggyhmargintrue
+% \end{macrocode}
+% \end{macro}
+%
+% |layout| オプションの処理。
+% \begin{macrocode}
+\@namedef{bxjs@kv@layout@v1}{%
+ \bxjs@layout@buggyhmargintrue}
+\@namedef{bxjs@kv@layout@v2}{%
+ \bxjs@layout@buggyhmarginfalse}
+\define@key{bxjs}{layout}{%
+ \bxjs@set@keyval{layout}{#1}{}}
+% \end{macrocode}
+%
+% \begin{macro}{\bxjs@textwidth@limit}
+% |textwidth-limit| の指定値。
+% |\textwidth| の上限。
+% \begin{macrocode}
+%\let\bxjs@textwidth@limit\@undefined
+\define@key{bxjs}{textwidth-limit}{%
+ \edef\bxjs@textwidth@limit{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@paragraph@mark}
+% |paragraph-mark| の指定値。
+% パラグラフのマーク。
+% \begin{macrocode}
+%\let\bxjs@paragraph@mark\@undefined
+\define@key{bxjs}{paragraph-mark}{%
+ \edef\bxjs@paragraph@mark{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifbxjs@whole@zw@lines}
+% 〔スイッチ〕 |whole-zw-lines| の指定値。
+% \begin{macrocode}
+\newif\ifbxjs@whole@zw@lines \bxjs@whole@zw@linestrue
+\let\bxjs@kv@wholezwlines@true\bxjs@whole@zw@linestrue
+\let\bxjs@kv@wholezwlines@false\bxjs@whole@zw@linesfalse
+\define@key{bxjs}{whole-zw-lines}{\bxjs@set@keyval{wholezwlines}{#1}{}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifbxjs@dummy@microtype}
+% 〔スイッチ〕 |dummy-microtype| の指定値。
+% \begin{macrocode}
+\newif\ifbxjs@dummy@microtype \bxjs@dummy@microtypetrue
+\let\bxjs@kv@dummymicrotype@true\bxjs@dummy@microtypetrue
+\let\bxjs@kv@dummymicrotype@false\bxjs@dummy@microtypefalse
+\define@key{bxjs}{dummy-microtype}{\bxjs@set@keyval{dummymicrotype}{#1}{}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifbxjs@hyperref@enc}
+% 〔スイッチ〕 |hyperref-enc| の指定値。
+% \begin{macrocode}
+\newif\ifbxjs@hyperref@enc \bxjs@hyperref@enctrue
+\let\bxjs@kv@hyperrefenc@true\bxjs@hyperref@enctrue
+\let\bxjs@kv@hyperrefenc@false\bxjs@hyperref@encfalse
+\define@key{bxjs}{hyperref-enc}{\bxjs@set@keyval{hyperrefenc}{#1}{}}
+% \end{macrocode}
+% \end{macro}
+%
% \end{ZRnote}
%
% \paragraph{オプションの実行}
@@ -1479,7 +1648,7 @@
\bxjs@purge@brace@elts
% \end{macrocode}
%
-% |papersize| と |10pt| のオプションは他のパッケージと衝突を
+% |papersize|、|10pt|、|noscale| の各オプションは他のパッケージと衝突を
% 起こす可能性があるため、グローバルオプションから外す。
%
% \begin{macrocode}
@@ -1487,6 +1656,8 @@
{papersize}\@classoptionslist\@classoptionslist
\@expandtwoargs\@removeelement
{10pt}\@classoptionslist\@classoptionslist
+\@expandtwoargs\@removeelement
+ {noscale}\@classoptionslist\@classoptionslist
% \end{macrocode}
%
% 現在の(正規化前の)和文ドライバの値を\
@@ -1501,6 +1672,9 @@
% それが実際のエンジンと一致するかを検査する。
% \begin{macrocode}
\let\bxjs@tmpb\jsEngine
+\ifx j\bxjs@tmpb\ifjsWithpTeXng
+ \let\bxjs@tmpb=g
+\fi\fi
\ifx j\bxjs@tmpb\ifjsWithupTeX
\let\bxjs@tmpb=u
\fi\fi
@@ -1514,7 +1688,7 @@
\ifx *\bxjs@engine@given
\let\bxjs@engine@given\bxjs@tmpb
% \end{macrocode}
-% エンジン指定が |autodetec-engine| であり、かつ実際のエンジンが
+% エンジン指定が |autodetect-engine| であり、かつ実際のエンジンが
% {(u)\pLaTeX}だった場合は、本来のエンジンオプションを
% グローバルオプションに加える。
% \begin{macrocode}
@@ -1532,6 +1706,14 @@
\fi
% \end{macrocode}
%
+% エンジンが{\pTeX-ng}の場合、グローバルオプションに |uplatex| を
+% 追加する。
+% \begin{macrocode}
+\ifjsWithpTeXng
+ \g@addto@macro\@classoptionslist{,uplatex}
+\fi
+% \end{macrocode}
+%
% ドライバ指定のオプションが与えられた場合は、
% それがエンジンと整合するかを検査する。
% \begin{macrocode}
@@ -1551,6 +1733,9 @@
\else\ifx\bxjs@driver@given\bxjs@driver@@xetex
\@tempswafalse
\fi\fi
+ \ifjsWithpTeXng\ifx\bxjs@driver@given\bxjs@driver@@dvipdfmx\else
+ \@tempswafalse
+ \fi\fi
\fi\fi
\fi
\if@tempswa\else
@@ -1563,8 +1748,9 @@
% \begin{macrocode}
\ifjsInPdfMode \@tempswafalse
\else\ifx x\jsEngine \@tempswafalse
+\else\ifjsWithpTeXng \@tempswafalse
\else \@tempswatrue
-\fi\fi
+\fi\fi\fi
\if@tempswa
% \end{macrocode}
% ドライバオプションがない場合は警告を出す。
@@ -1591,6 +1777,20 @@
\fi
% \end{macrocode}
%
+% エンジンが{\pTeX-ng}の場合、グローバルオプションに |dvipdfmx|
+% を追加する。
+% ただし、エンジンオプションが |platex-ng*|(|*|付)の場合、および
+% 既に |dvipdfmx| が指定されている場合を除く。
+% \begin{macrocode}
+\ifjsWithpTeXng
+ \ifx\bxjs@driver@given\bxjs@driver@@dvipdfmx
+ \let\bxjs@platexng@nodrv\@undefined
+ \else\ifx t\bxjs@platexng@nodrv\else
+ \g@addto@macro\@classoptionslist{,dvipdfmx}
+ \fi\fi
+\fi
+% \end{macrocode}
+%
% |\bxjs@jadriver| の正規化。
% 値が未指定の場合は |minimal| に変える。
% ただしエンジンが{(u)\pTeX}である場合は |standard|
@@ -1639,6 +1839,14 @@
\bxjs@do@opt@jbase
% \end{macrocode}
%
+% \begin{macro}{\Cjascale}
+% 和文クラス共通仕様(※ただしZR氏提唱)における、
+% 和文スケール値の変数。
+% \begin{macrocode}
+\let\Cjascale\jsScale
+% \end{macrocode}
+% \end{macro}
+%
% \end{ZRnote}
%
% 後処理
@@ -1690,7 +1898,7 @@
% 命令を実行する。
% \begin{macrocode}
\ifbxjs@oldfontcommands
- \jsAtEndOfClass{\allowoldfontcommands}
+ \AtEndOfClass{\allowoldfontcommands}
\fi
% \end{macrocode}
% \end{ZRnote}
@@ -1750,7 +1958,6 @@
% 設定すべき |\mag| 値を (基底サイズ)/(10\,pt) $\times$ 1000 と算出。
% BXJSクラスでは、|\mag| を直接指定したい場合は、|geometry| 側では
% なくクラスのオプションで行うものとする。
-% \end{ZRnote}
% \begin{macrocode}
\ifx\bxjs@param@mag\relax
\@tempdima=\bxjs@param@basefontsize
@@ -1781,6 +1988,7 @@
%\typeout{\string\ifjsc@mag: \meaning\ifjsc@mag}
%\typeout{\string\ifbxjs@nfss@patch: \meaning\ifbxjs@nfss@patch}
% \end{macrocode}
+% \end{ZRnote}
%
% [2016-07-08] |\jsc@mpt| および |\jsc@mmm| に,それぞれ1ptおよび1mmを拡大させた値を格納します。
% 以降のレイアウト指定ではこちらを使います。
@@ -1791,6 +1999,8 @@
% その上で、|\mag| する場合は |?| を無視して |\p@| と解釈させ、
% |\mag| しない場合は |?| を英字扱いにして |\p@?| という制御綴を
% |\jsc@mpt| と同値にする。
+% \Note (多分2.0版あたりで)JSクラスに合わせるため |\p@?| 表記を
+% 止める予定。
% \begin{macrocode}
\ifjsc@mag
\let\jsc@mpt\p@
@@ -2141,7 +2351,6 @@
%
% \begin{ZRnote}
% まず |\Cwd| 等の変数を定義する。
-% \end{ZRnote}
% \begin{macrocode}
\ifx\Cht\@undefined \newdimen\Cht \fi
\ifx\Cdp\@undefined \newdimen\Cdp \fi
@@ -2150,7 +2359,6 @@
\ifx\Chs\@undefined \newdimen\Chs \fi
% \end{macrocode}
%
-% \begin{ZRnote}
% 規約上、現在の |\jsZw| の値が |\Cwd| である。
% |\Cht| と |\Cdp| は単純に |\Cwd| の88\%と12\%の値とする。
% \end{ZRnote}
@@ -2416,12 +2624,15 @@
%
% \subsection{ページレイアウト}
%
-% |geometry| パッケージに任せる。
+% \begin{ZRnote}
+% BXJSではページレイアウトの処理は |geometry| パッケージが担当している。
+% \end{ZRnote}
%
+% \paragraph{準備 \ZRX}
+% \mbox{}
% \begin{ZRnote}
% 現状ではここで |\mag| を設定している。\par
% |\topskip| も指定する。
-% \end{ZRnote}
% \begin{macrocode}
\ifjsc@mag
\mag=\bxjs@param@mag
@@ -2429,10 +2640,8 @@
\setlength{\topskip}{10\p@?}
% \end{macrocode}
%
-% \begin{ZRnote}
% |\bxjs@param@paper| が長さ指定(|{W}{H}|)の場合、
% |geometry| の形式(|papersize={W,H}|)に変換する。
-% \end{ZRnote}
% \begin{macrocode}
\def\bxjs@read@a{\futurelet\bxjs@tmpa\bxjs@read@b}
\def\bxjs@read@b{%
@@ -2443,21 +2652,19 @@
\expandafter\bxjs@read@a\bxjs@param@paper\@nil
% \end{macrocode}
%
-% \begin{ZRnote}
-% |\bxjs@layout@paper| は |geometry| の用紙設定のオプション。
-% \end{ZRnote}
+% \begin{macro}{\bxjs@layout@paper}
+% |geometry| の用紙設定のオプション。
% \begin{macrocode}
\edef\bxjs@layout@paper{%
\ifjsc@mag truedimen,\fi
\if@landscape landscape,\fi
\bxjs@param@paper}
% \end{macrocode}
+% \end{macro}
%
-%
-% \begin{ZRnote}
-% |\bxjs@layout| は |geometry| のページレイアウトのオプション
-% 列であり、文書クラス毎に異なる。
-% \end{ZRnote}
+% \begin{macro}{\bxjs@layout}
+% |geometry| のページレイアウトのオプション列。
+% 文書クラス毎に異なる。
% \begin{macrocode}
%<*article|report>
\def\bxjs@layout{%
@@ -2468,11 +2675,21 @@
}
%</article|report>
%<*book>
+\ifbxjs@layout@buggyhmargin %---
+% アレ
\def\bxjs@layout{%
headheight=\topskip,headsep=6\jsc@mmm,nofoot,includeheadfoot,%
hmargin=36\jsc@mmm,hmarginratio=1:1,%
vscale=0.83,vmarginratio=1:1,%
}
+\else %---
+% 非アレ
+\def\bxjs@layout{%
+ headheight=\topskip,headsep=6\jsc@mmm,nofoot,includeheadfoot,%
+ hmargin=18\jsc@mmm,%
+ vscale=0.83,vmarginratio=1:1,%
+}
+\fi %---
%</book>
%<*slide>
\def\bxjs@layout{%
@@ -2482,16 +2699,34 @@
}
%</slide>
% \end{macrocode}
+% \end{macro}
%
-% \begin{ZRnote}
-% |geometry| の後処理。
-%
-% |\jsTextWidthLimit| は |bxjsbook| での |\textwidth| の
-% 上限で、全角単位の実数値マクロ。
-% \end{ZRnote}
+% \begin{macro}{\fullwidth}
+% 〔寸法レジスタ〕
+% ヘッダ・フッタ領域の横幅。
% \begin{macrocode}
\newdimen\fullwidth
-%<book>\newcommand\jsTextWidthLimit{40}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\jsTextWidthLimit}
+% 〔実数値マクロ〕
+% |bxjsbook| における、|\textwidth| の上限の全角単位での値。
+% \begin{macrocode}
+%<*book>
+\newcommand\jsTextWidthLimit{40}
+\ifx\bxjs@textwidth@limit\@undefined\else
+ \let\c@bxjs@cnta\@tempcnta
+ \setcounter{bxjs@cnta}{\bxjs@textwidth@limit}
+ \long\edef\jsTextWidthLimit{\the\@tempcnta}
+\fi
+%</book>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@postproc@layout}
+% |geometry| の後処理。
+% \begin{macrocode}
\def\bxjs@postproc@layout{%
% ドライバ再設定
\ifx\bxjs@geometry@driver\relax\else
@@ -2534,32 +2769,31 @@
\stockheight=\paperheight
}
% \end{macrocode}
+% \end{macro}
%
% \begin{macro}{\jsGeometryOptions}
-% \begin{ZRnote}
% |geometry|パッケージに渡すオプションのリスト。
% \Note |geometry=user| 指定時にユーザが利用することを想定している。
-% \end{ZRnote}
% \begin{macrocode}
\edef\jsGeometryOptions{%
\bxjs@layout@paper,\bxjs@layout}
% \end{macrocode}
% \end{macro}
+% \end{ZRnote}
%
+% \paragraph{geometry パッケージ読込 \ZRX}
+% \mbox{}
% \begin{ZRnote}
-% ここで|geoemtry|オプションの値に応じて分岐する。
+% |geoemtry| オプションの値に応じて分岐する。
%
% まずは|geometry=class|の場合。
-% \end{ZRnote}
% \begin{macrocode}
\ifx\bxjs@geometry\bxjs@geometry@class
% \end{macrocode}
%
-% \begin{ZRnote}
% |geometry| は |\topskip| が標準の行高(|\ht\strutbox|)より小さくならない
% ようにする自動調整を行うが、これをどうするかは未検討。
% 今のところ、単純に回避(無効化)している。
-% \end{ZRnote}
% \begin{macrocode}
\@onlypreamble\bxjs@revert
\let\bxjs@revert\@empty
@@ -2567,14 +2801,13 @@
\ht\strutbox=10\p@?
\g@addto@macro\bxjs@revert{\ht\strutbox=\bxjs@tmpa\relax}
% \end{macrocode}
-% \begin{ZRnote}
+%
% |geometry| のドライバオプション指定。
% |nopapersize| 指定時は、special命令出力を抑止するために
% ドライバを |none| にする。
% そうでない場合は、クラスで指定したドライバオプションが引き継がれる
% ので何もしなくてよいが、例外として、ドライバが |dvipdfmx| の
% 時は、現状の |geometry| は |dvipdfm| を指定する必要がある。
-% \end{ZRnote}
% \begin{macrocode}
\ifbxjs@papersize
\ifx\bxjs@driver@given\bxjs@driver@@dvipdfmx
@@ -2585,11 +2818,10 @@
\PassOptionsToPackage{driver=none}{geometry}
\fi
% \end{macrocode}
-% \begin{ZRnote}
+%
% ここで |geometry| を読み込む。
% \Note |geometry| のbegin-documentフックにおいて、Lua{\TeX}の
% 旧版互換を有効にする。
-% \end{ZRnote}
% \begin{macrocode}
\edef\bxjs@nxt{%
\noexpand\RequirePackage[\bxjs@layout@paper,\bxjs@layout]{geometry}}
@@ -2598,25 +2830,25 @@
\bxjs@nxt \bxjs@revert
\AtBeginDocument{\RevokeOldLuaTeXBehavior}
% \end{macrocode}
-% \begin{ZRnote}
-% |\bxjs@geometry@driver| は |geometry| が用いるドライバの名前。
+%
+% \begin{macro}{\bxjs@geometry@driver}
+% |geometry| が用いるドライバの名前。
% \Note この値は一度決めた後は変わってほしくないので、
% |\bxjs@postproc@layout| において書き戻す処理を入れている。
-% \end{ZRnote}
% \begin{macrocode}
\let\bxjs@geometry@driver\Gm@driver
\bxjs@postproc@layout
% \end{macrocode}
+% \end{macro}
%
% \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}{}{%
+ \@ifpackageloaded{geometry}{%
+ \@ifpackagelater{geometry}{2010/02/12}{}{%else
\PackageWarningNoLine\bxjs@clsname
{The 'geometry' package installed\MessageBreak
is too old (< v5.0)}%
@@ -2625,11 +2857,18 @@
\ifx\pdfhorigin\@undefined \newdimen\pdfhorigin \fi
\ifx\pdfvorigin\@undefined \newdimen\pdfvorigin \fi
\fi\fi
- }}{}}
+ }%
+ \ifjsWithpTeXng
+ \ifx\Gm@driver\@empty
+ \def\Gm@driver{pdftex}%
+ \fi
+ \fi
+ }{}}
% \end{macrocode}
% \end{macro}
%
-% \begin{ZRnote}
+% \begin{macro}{\setpagelayout}
+% ページレイアウト設定のためのユーザ命令。
% \begin{itemize}
% \item |\setpagelayout{|\meta{text}|}| : 現在の geometry の設定の
% 一部を修正する。
@@ -2637,7 +2876,6 @@
% 改めて設定を行う。
% \end{itemize}
% どちらも設定の後で後処理 |\bxjs@postproc@layout| を実行する。
-% \end{ZRnote}
% \begin{macrocode}
\def\setpagelayout{\@ifstar
{\bxjs@reset@layout}{\bxjs@modify@layout}}
@@ -2648,23 +2886,20 @@
\edef\bxjs@nxt{\noexpand\geometry{reset,\bxjs@layout@paper,#1,truedimen}}%
\bxjs@nxt\bxjs@postproc@layout}
% \end{macrocode}
+% \end{macro}
%
-% \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
@@ -2679,9 +2914,7 @@
\setlength{\textheight}{8in}}
% \end{macrocode}
%
-% \begin{ZRnote}
% |\setpagelayout| はとりあえず無効にしておく。
-% \end{ZRnote}
% \begin{macrocode}
\let\bxjs@geometry@driver\relax
\def\setpagelayout{\@ifstar
@@ -2692,14 +2925,11 @@
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| を用いる。
@@ -3153,6 +3383,7 @@
%
% \begin{ZRnote}
% \begin{macro}{\subtitle}
+% \begin{macro}{\jsSubtitle}
% 副題を設定する。
% \Note プレアンブルにおいて |\newcommand*{\subtitle}{...}| が
% 行われることへの対策として、
@@ -3177,12 +3408,17 @@
\fi}
% \end{macrocode}
% \end{macro}
+% \end{macro}
%
+% \begin{macro}{\bxjs@annihilate@subtitle}
+% |\subtitle| 命令を無効化する。
+% \Note 独自の |\subtitle| が使われている場合は無効化しない。
% \begin{macrocode}
\def\bxjs@annihilate@subtitle{%
\ifx\subtitle\jsSubtitle \global\let\subtitle\relax \fi
\global\let\jsSubtitle\relax}
% \end{macrocode}
+% \end{macro}
%
% \end{ZRnote}
%
@@ -4151,6 +4387,9 @@
% \end{ZRnote}
% \begin{macrocode}
\newcommand\jsParagraphMark{\jsJaChar{■}}
+\ifx\bxjs@paragraph@mark\@undefined\else
+ \long\edef\jsParagraphMark{\noexpand\jsJaChar{\bxjs@paragraph@mark}}
+\fi
\let\jsJaChar\@empty
\if@twocolumn
\newcommand{\paragraph}{\@startsection{paragraph}{4}{\z@}%
@@ -6619,8 +6858,11 @@
% \begin{macrocode}
\def\bxjs@tmpa#1/#2/#3/#4/#5\relax{%
\def\bxjs@y{#5}}
+\ifjsWithpTeXng \def\bxjs@y{10}%
+\else
\expandafter\expandafter\expandafter\bxjs@tmpa
\expandafter\string\the\jfont\relax
+\fi
\@for\bxjs@x:={\jsc@JYn/mc/m/n,\jsc@JYn/gt/m/n,%
\jsc@JTn/mc/m/n,\jsc@JTn/gt/m/n}\do
{\expandafter\let\csname\bxjs@x/10\endcsname=\@undefined
@@ -6875,6 +7117,7 @@
\bxjs@do@simplejasetup
\fi}
\fi
+% \end{macrocode}
%
% |precisetext| オプションの処理。
% \begin{macrocode}
@@ -6889,6 +7132,90 @@
\fi
% \end{macrocode}
%
+% \paragraph{fancyhdr対策}
+% |fancyhdr| オプションの値が |true| であり、
+% かつ |fancyhdr| が使用された場合に以下の対策を行う。
+% \begin{itemize}
+% \item デフォルトの書式設定に含まれる“二文字フォント命令”を除去する。
+% \item bxjsbookにおいて、ヘッダ・フッタの横幅を |\fullwidth| に変える。
+% \end{itemize}
+%
+% \begin{macrocode}
+\ifbxjs@fancyhdr
+% \end{macrocode}
+%
+% \begin{macro}{\bxjs@adjust@fancyhdr}
+% |fancyhdr| の初期設定に関する改変の処理。
+% |fancyhdr| 読込完了と |\pagestyle{fancy}| 実行の間で実行されるべき。
+% \begin{macrocode}
+\@onlypreamble\bxjs@adjust@fancyhdr
+\def\bxjs@adjust@fancyhdr{%
+% \end{macrocode}
+% ヘッダ・フッタの要素の書式について、それが既定のままであれば、
+% “二文字フォント命令”を除去したものに置き換える。
+% \Note 和文なので |\sl| は無い方がよいはず。
+% \begin{macrocode}
+ \def\bxjs@tmpa{\fancyplain{}{\sl\rightmark}\strut}%
+ \def\bxjs@tmpb{\fancyplain{}{\rightmark}\strut}%
+ \ifx\f@ncyelh\bxjs@tmpa \global\let\f@ncyelh\bxjs@tmpb \fi
+ \ifx\f@ncyerh\bxjs@tmpa \global\let\f@ncyerh\bxjs@tmpb \fi
+ \ifx\f@ncyolh\bxjs@tmpa \global\let\f@ncyolh\bxjs@tmpb \fi
+ \ifx\f@ncyorh\bxjs@tmpa \global\let\f@ncyorh\bxjs@tmpb \fi
+ \def\bxjs@tmpa{\fancyplain{}{\sl\leftmark}\strut}%
+ \def\bxjs@tmpb{\fancyplain{}{\leftmark}\strut}%
+ \ifx\f@ncyelh\bxjs@tmpa \global\let\f@ncyelh\bxjs@tmpb \fi
+ \ifx\f@ncyerh\bxjs@tmpa \global\let\f@ncyerh\bxjs@tmpb \fi
+ \ifx\f@ncyolh\bxjs@tmpa \global\let\f@ncyolh\bxjs@tmpb \fi
+ \ifx\f@ncyorh\bxjs@tmpa \global\let\f@ncyorh\bxjs@tmpb \fi
+ \def\bxjs@tmpa{\rm\thepage\strut}%
+ \def\bxjs@tmpb{\thepage\strut}%
+ \ifx\f@ncyecf\bxjs@tmpa \global\let\f@ncyecf\bxjs@tmpb \fi
+ \ifx\f@ncyocf\bxjs@tmpa \global\let\f@ncyocf\bxjs@tmpb \fi
+% \end{macrocode}
+% |\fullwidth| が(定義済で)|\textwidth| よりも大きい場合、
+% ヘッダ・フッタの横幅を |\fullwidth| に合わせる。
+% \begin{macrocode}
+ \ifx\fullwidth\@undefined\else \ifdim\textwidth<\fullwidth
+ \setlength{\@tempdima}{\fullwidth-\textwidth}%
+ \edef\bxjs@tmpa{\noexpand\fancyhfoffset[EL,OR]{\the\@tempdima}%
+ }\bxjs@tmpa
+ \fi\fi
+ \PackageInfo\bxjs@clsname
+ {Patch to fancyhdr is applied\@gobble}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bxjs@pagestyle@hook}
+% |\pagestyle| へのフックの本体。
+% \begin{macrocode}
+\def\bxjs@pagestyle@hook{%
+ \@ifpackageloaded{fancyhdr}{%
+ \bxjs@adjust@fancyhdr
+ \global\let\bxjs@adjust@fancyhdr\relax
+ }{}}
+% \end{macrocode}
+% \end{macro}
+%
+% |\pagestyle| にフックを入れ込む。
+% \begin{macrocode}
+\let\bxjs@org@pagestyle\pagestyle
+\def\pagestyle{%
+ \bxjs@pagestyle@hook \bxjs@org@pagestyle}
+% \end{macrocode}
+%
+% begin-document フック。
+% \Note これ以降に |fancyhdr| が読み込まれることはあり得ない。
+% \begin{macrocode}
+\AtBeginDocument{%
+ \bxjs@pagestyle@hook
+ \global\let\bxjs@pagestyle@hook\relax}
+% \end{macrocode}
+%
+% 終わり。
+% \begin{macrocode}
+\fi
+% \end{macrocode}
+%
% 以上で終わり。
% \begin{macrocode}
%</minimal>
@@ -6963,12 +7290,15 @@
% |\trueQ| と |\trueH| はともに0.25\,true\,mmに等しい。
% \begin{macrocode}
\ifjsc@mag
- \@tempdima=2.5mm
\@tempdimb=\jsBaseFontSize\relax
\edef\bxjs@tmpa{\strip@pt\@tempdimb}%
+ \@tempdima=2.5mm
\bxjs@invscale\@tempdima\bxjs@tmpa
- \edef\trueQ{\dimexpr\the\@tempdima\relax}
- \else \let\trueQ\jQ
+ \protected\edef\trueQ{\dimexpr\the\@tempdima\relax}
+ \@tempdima=10pt
+ \bxjs@invscale\@tempdima\bxjs@tmpa
+ \protected\edef\bxjs@truept{\dimexpr\the\@tempdima\relax}
+ \else \let\trueQ\jQ \let\bxjs@truept\p@
\fi
\let\trueH\trueQ
% \end{macrocode}
@@ -6976,15 +7306,21 @@
% \end{macro}
%
% \begin{macro}{\ascQ}
+% \begin{macro}{\ascpt}
% |\ascQ| は |\trueQ| を和文スケール値で割った値。
% 例えば、|\fontsize{12\ascQ}{16\trueH}| とすると、
% 和文が12Qになる。
+%
+% 同様に、|\ascpt| は |truept| を和文スケールで割った値。
% \begin{macrocode}
\@tempdima\trueQ \bxjs@invscale\@tempdima\jsScale
- \edef\ascQ{\dimexpr\the\@tempdima\relax}
+ \protected\edef\ascQ{\dimexpr\the\@tempdima\relax}
+ \@tempdima\bxjs@truept \bxjs@invscale\@tempdima\jsScale
+ \protected\edef\ascpt{\dimexpr\the\@tempdima\relax}
\fi
% \end{macrocode}
% \end{macro}
+% \end{macro}
%
% 続いて、和文間空白・和欧文間空白関連の命令を実装する。
% (エンジン依存のコード。)
@@ -7376,7 +7712,8 @@
%
% |tounicode| special命令を出力する。
% \begin{macrocode}
-\ifx\bxjs@driver@given\bxjs@driver@@dvipdfmx
+\if \ifx\bxjs@driver@given\bxjs@driver@@dvipdfmx T%
+ \else\ifjsWithpTeXng T\else F\fi\fi T%
\ifnum\jis"2121="A1A1 %euc
\bxjs@urgent@special{pdf:tounicode EUC-UCS2}
\else\ifnum\jis"2121="8140 %sjis