diff options
author | Karl Berry <karl@freefriends.org> | 2016-08-17 21:34:51 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2016-08-17 21:34:51 +0000 |
commit | 3ebff037dbea5e7f832f1b69e71662f206b791e3 (patch) | |
tree | 704d5c2ad94c59d3194083491671ca62fb0e77e0 /Master/texmf-dist/source/latex | |
parent | 02f5a1ff8007f70b1adef128a3481ea5c19ba4e8 (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')
-rw-r--r-- | Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx | 533 |
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 |