diff options
author | Karl Berry <karl@freefriends.org> | 2015-08-06 22:00:18 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2015-08-06 22:00:18 +0000 |
commit | 480b01a5b1314cc8e719ae8e402e7fd13b63006e (patch) | |
tree | 0523d77168787bf4199ff52ee5cf3de9ccb3993d /Master/texmf-dist/source/latex/bxjscls | |
parent | b222737caf76ed337fff111efdb9e5c6502a6db0 (diff) |
bxjscls (6aug15)
git-svn-id: svn://tug.org/texlive/trunk@38062 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/bxjscls')
-rw-r--r-- | Master/texmf-dist/source/latex/bxjscls/bxjsclasses.ins | 11 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx (renamed from Master/texmf-dist/source/latex/bxjscls/bxjsclasses.dtx) | 2270 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/bxjscls/bxjscls.ins | 11 |
3 files changed, 1994 insertions, 298 deletions
diff --git a/Master/texmf-dist/source/latex/bxjscls/bxjsclasses.ins b/Master/texmf-dist/source/latex/bxjscls/bxjsclasses.ins deleted file mode 100644 index 6958b7866e9..00000000000 --- a/Master/texmf-dist/source/latex/bxjscls/bxjsclasses.ins +++ /dev/null @@ -1,11 +0,0 @@ -%% bxjsclasses.ins : installer file for bxjsclasses.dtx -\def\batchfile{bxjsclasses.ins} -\input docstrip.tex -\keepsilent -\generateFile{bxjsarticle.cls}{f}{\from{bxjsclasses.dtx}{article}} -\generateFile{bxjsreport.cls}{f}{\from{bxjsclasses.dtx}{report}} -\generateFile{bxjsptex.def}{f}{\from{bxjsclasses.dtx}{ptex}} -% classes below are not yet completed.... -%\generateFile{bxjsbook.cls}{f}{\from{bxjsclasses.dtx}{book}} -%\generateFile{bxjsslide.cls}{f}{\from{bxjsclasses.dtx}{slide}} -%% EOF diff --git a/Master/texmf-dist/source/latex/bxjscls/bxjsclasses.dtx b/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx index c29f60a8e93..9ac556f805c 100644 --- a/Master/texmf-dist/source/latex/bxjscls/bxjsclasses.dtx +++ b/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx @@ -53,14 +53,24 @@ %<report>\ProvidesClass{bxjsreport} %<book>\ProvidesClass{bxjsbook} %<slide>\ProvidesClass{bxjsslide} -%<ptex>\ProvidesFile{bxjsptex.def} +%<drvminimal>\ProvidesFile{bxjsja-minimal.def} +%<drvstandard>\ProvidesFile{bxjsja-standard.def} %<*driver> -\ProvidesFile{bxjsclasses.dtx} +\ProvidesFile{bxjscls.dtx} %</driver> - [2012/05/01 v0.3a BXJS document classes] + [2015/08/05 v1.0 BXJS document classes] +% based on jsclasses [2014/02/07] +% [2013/10/03 v0.9pre BXJS document classes] +% based on jsclasses [2013/05/14] %<*driver> -\documentclass{jsarticle} % このドキュメント自身は jsarticle を使う +\documentclass[a4paper]{ltjsarticle} +\usepackage[ipaex]{luatexja-preset} +\usepackage{metalogo} \usepackage{doc} +\newcommand{\Pkg}[1]{\textsf{#1}} +\newcommand{\Meta}[1]{$\langle$\mbox{}#1\mbox{}$\rangle$} +\newcommand{\Note}{\par\noindent ※} +\newcommand{\Means}{~:\quad} \newenvironment{ZRnote} {\StartZRnote}{\EndZRnote} \newcommand*{\ZRnoteline}[1]{ @@ -68,8 +78,14 @@ \makebox{\hspace{.05\linewidth}\rule[#1ex]{.9\linewidth}{.2pt}}\par} \newcommand*{\StartZRnote}{\ZRnoteline{.1}} \newcommand*{\EndZRnote}{\ZRnoteline{.9}} -\newcommand*{\zrWDash}{\char\jis"2141\relax}% WAVE DASH +\providecommand*{\eTeX}{$\varepsilon$-\TeX} +\providecommand*{\upTeX}{u\pTeX} +\providecommand*{\XeTeX}{XeTeX} +\newcommand*{\zrWDash}{\symbol{"301C}}% WAVE DASH \newcommand*{\zrNote}[1]{[#1]} +\makeatletter +\def\meta@font@select{\rmfamily\itshape} +\makeatother \addtolength{\textwidth}{-1in} \addtolength{\evensidemargin}{1in} \addtolength{\oddsidemargin}{1in} @@ -78,17 +94,20 @@ % \OnlyDescription \DisableCrossrefs \setcounter{StandardModuleDepth}{1} -\GetFileInfo{bxjsclasses.dtx} +\GetFileInfo{bxjscls.dtx} \begin{document} - \DocInput{bxjsclasses.dtx} + \DocInput{bxjscls.dtx} \end{document} %</driver> % \end{macrocode} % % \fi % -% \title{BXJS ドキュメントクラス} -% \author{ZR} +%^^A======================================================== +% \title{\Pkg{BXjscls} パッケージ\\ +% (BXJS文書クラス集)\\ +% ソースコード説明書} +% \author{八登崇之\ (Takayuki YATO; aka.~``ZR''} % \date{\fileversion\quad[\filedate]} % \maketitle % @@ -164,43 +183,103 @@ % % \StopEventually{} % -% 以下では実際のコードに即して説明します。 +% 以下では実際のコードに即して説明します。^^A 1in % % \paragraph{BXJSクラス特有の設定 ☆} % % \begin{macrocode} -%<*!ptex> +%<*!drvminimal&!drvstandard> \RequirePackage{calc} \RequirePackage{keyval} % \end{macrocode} % \begin{ZRnote} -% エンジン({\TeX}の種類)の判定。 -% |\bxis@engine| の値: -% |n|=8ビット欧文\TeX、 +% +% \begin{macro}{\jsEngine} +% 〔暗黙文字トークン〕 +% エンジン({\TeX}の種類)の種別: +% |n|=オリジナル\TeX、 % |j|={\pTeX}またはu{\pTeX}、 % |J|=NTT j{\TeX}、 -% |x|=XeTeX、 -% |p|=pdf{\TeX}、 +% |x|={\XeTeX}、 +% |p|=pdf{\TeX}(含DVIモード)、 % |l|=Lua{\TeX}。 -% {\pTeX}かu{\pTeX}の判別はスイッチ |\if@jsc@uplatex| で表される。 -% \end{ZRnote} +% % \begin{macrocode} -\let\bxjs@engine=n -% 念のためプリミティブテストに変えた +\let\jsEngine=n \def\bxjs@test@engine#1#2{% \edef\bxjs@tmpa{\string#1}% \edef\bxjs@tmpb{\meaning#1}% \ifx\bxjs@tmpa\bxjs@tmpb #2\fi} -\bxjs@test@engine\kanjiskip{\let\bxjs@engine=j} -\bxjs@test@engine\jintercharskip{\let\bxjs@engine=J} -\bxjs@test@engine\XeTeXversion{\let\bxjs@engine=x} -\bxjs@test@engine\pdftexversion{\let\bxjs@engine=p} -\bxjs@test@engine\luatexversion{\let\bxjs@engine=l} -\newif\if@jsc@uplatex -% 内部Unicode動作の時だけupTeXとみなす +\bxjs@test@engine\kanjiskip{\let\jsEngine=j} +\bxjs@test@engine\jintercharskip{\let\jsEngine=J} +\bxjs@test@engine\XeTeXversion{\let\jsEngine=x} +\bxjs@test@engine\pdftexversion{\let\jsEngine=p} +\bxjs@test@engine\luatexversion{\let\jsEngine=l} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ifjsWithupTeX} +% 〔スイッチ〕 +% エンジンが(内部漢字コードがUnicodeの){\upTeX}であるか。 +% \begin{macrocode} +\newif\ifjsWithupTeX \ifx\ucs\@undefined\else \ifnum\ucs"3000="3000 - \@jsc@uplatextrue + \jsWithupTeXtrue +\fi\fi +\let\if@jsc@uplatex\ifjsWithupTeX +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ifjsWitheTeX} +% 〔スイッチ〕 +% エンジンが{\eTeX}拡張をもつか。 +% \begin{macrocode} +\newif\ifjsWitheTeX +\bxjs@test@engine\eTeXversion{\jsWitheTeXtrue} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bxjs@protected} +% {\eTeX}拡張が有効な場合にのみ |\protected| +% の効果をもつ。 +% \begin{macrocode} +\ifjsWitheTeX \let\bxjs@protected\protected +\else \let\bxjs@protected\@empty +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bxjs@robust@def} +% 無引数の頑強な命令を定義する。 +% \begin{macrocode} +\ifjsWitheTeX + \def\bxjs@robust@def{\protected\def} +\else + \def\bxjs@robust@def{\DeclareRobustCommand*} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ifjsInPdfMode} +% 〔スイッチ〕 +% pdf{\TeX}/Lua{\TeX}がPDFモードで動作しているか。 +% \begin{macrocode} +\newif\ifjsInPdfMode +\ifx\pdfoutput\@undefined\else\ifnum\pdfoutput>\z@ + \jsInPdfModetrue \fi\fi +% \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 @@ -214,17 +293,17 @@ %<slide>\let\jsDocClass\jsSlide %<slide>\def\bxjs@clsname{bxjsslide} % \end{macrocode} -% \begin{ZRnote} +% \end{macro} +% % Lua\TeX の場合、原版のコード中のコントロールワード中に現れる % 日本語文字のカテゴリコードを11に変更する。 % (元は12。) % ただし、読込終了時点で元に戻しているので、日本語文字のコントロール % ワードのマクロはそのままでは使える状態になっていない。 -% \end{ZRnote} % \begin{macrocode} \@onlypreamble\bxjs@restore@jltrcc \let\bxjs@restore@jltrcc\@empty -\if l\bxjs@engine +\if l\jsEngine \def\bxjs@change@jltrcc#1{% \xdef\bxjs@restore@jltrcc{% \bxjs@restore@jltrcc @@ -234,14 +313,14 @@ {\expandafter\bxjs@change@jltrcc\bxjs@x} \fi % \end{macrocode} -% \begin{ZRnote} +% % |\jsInhibitGlue| は |\inhibitglue| が定義されていればそれを % 実行し、未定義ならば何もしない。 -% \end{ZRnote} % \begin{macrocode} -\DeclareRobustCommand*{\jsInhibitGlue}{% +\bxjs@robust@def\jsInhibitGlue{% \ifx\inhibitglue\@undefined\else \inhibitglue \fi} % \end{macrocode} +% \end{ZRnote} % % \section{オプション} % @@ -308,7 +387,7 @@ % これを基準として順に半截しては mm 単位に切り捨てたものがA1,A2,…です。 % % B判はJISとISOで定義が異なります。 -% JISではB0判の面積が $1.5\,\mathrm{mm}^2$ ですが, +% JISではB0判の面積が $1.5\,\mathrm{m}^2$ ですが, % ISOではB1判の辺の長さがA0判とA1判の辺の長さの幾何平均です。 % したがってISOのB0判は $1000\,\mathrm{mm} \times 1414\,\mathrm{mm}$ です。 % このため,\LaTeXe の \texttt{b5paper} @@ -405,8 +484,12 @@ \DeclareOption{30pt}{\bxjs@setbasefontsize{29.86pt}} \DeclareOption{36pt}{\bxjs@setbasefontsize{35.83pt}} \DeclareOption{43pt}{\bxjs@setbasefontsize{43pt}} -\DeclareOption{12Q}{\bxjs@setbasefontsize{3mm}} -\DeclareOption{14Q}{\bxjs@setbasefontsize{3.5mm}} +\DeclareOption{12Q}{\bxjs@setjbasefontsize{3mm}} +\DeclareOption{14Q}{\bxjs@setjbasefontsize{3.5mm}} +\DeclareOption{10ptj}{\bxjs@setjbasefontsize{10pt}} +\DeclareOption{10.5ptj}{\bxjs@setjbasefontsize{10.5pt}} +\DeclareOption{11ptj}{\bxjs@setjbasefontsize{11pt}} +\DeclareOption{12ptj}{\bxjs@setjbasefontsize{12pt}} % \end{macrocode} % % \paragraph{トンボオプション} @@ -550,10 +633,25 @@ % % \texttt{draft} でoverfull boxの起きた行末に5ptの罫線を引きます。 % +% \begin{ZRnote} +% JSクラスは |\ifdraft| という公開名のスイッチを用いているが、 +% これは |ifdraft| パッケージと衝突するので、代わりに |\ifjsDraft| +% の名前を用い、本文開始時に |\ifdraft| が未定義の場合に限り、 +% |\ifjsDraft| を |\ifdraft| にコピーする処理にする。 +% +% \end{ZRnote} % \begin{macrocode} -\newif\ifdraft -\DeclareOption{draft}{\drafttrue \setlength\overfullrule{5pt}} -\DeclareOption{final}{\draftfalse \setlength\overfullrule{0pt}} +\let\ifjsDraft\iffalse +\@onlypreamble\bxjs@draft +\def\bxjs@draft#1{% + \expandafter\let\expandafter\ifjsDraft\csname if#1\endcsname} +\DeclareOption{draft}{\bxjs@draft{true}\setlength\overfullrule{5pt}} +\DeclareOption{final}{\bxjs@draft{false}\setlength\overfullrule{0pt}} +\AtBeginDocument{% + \expandafter\ifx\csname ifdraft\endcsname\relax + \expandafter\let\csname ifdraft\expandafter\endcsname + \csname ifjsDraft\endcsname + \fi} % \end{macrocode} % % \paragraph{和文フォントメトリックの選択} @@ -566,6 +664,15 @@ % \mbox{} % \begin{ZRnote} % |geometry| パッケージが行う。 +% +% 既定で有効であるが、|nopapersize| オプションで無効にできる。 +% \begin{macrocode} +\newif\ifbxjs@papersize +\bxjs@papersizetrue +\DeclareOption{nopapersize}{\bxjs@papersizefalse} +\DeclareOption{papersize}{\bxjs@papersizetrue} +% \end{macrocode} +% % \end{ZRnote} % % \paragraph{英語化} @@ -599,13 +706,14 @@ % \item |mag=|\meta{int} : |\mag| 値の直接設定。既定は |base| から算出する。 % \item |paper={|\meta{dimen:width}|}{|\meta{dimen:height}|}| : 用紙サイズ設定。 % 用紙サイズオプションの代用で、既定値は |a4paper| 相当。 -% \item |platex|, |uplatex| : (u){\pTeX}用の連携モジュールを読み込む。 +% \item |platex|, |uplatex| : (u){\pTeX}用の連携モジュールを有効化する。 +% \item |CJK| : CJKパッケージ用の連携モジュールを有効化する。 % \end{itemize} % +% \begin{macro}{\bxjs@invscale} % |\bxjs@invscale| は{\TeX}における「長さのスケール」の逆関数を求めるもの。 % 例えば |\bxjs@invscale\dimX{1.3}| は |\dimX=1.3\dimX| の % 逆の演算を行う。 -% \end{ZRnote} % \begin{macrocode} \mathchardef\bxjs@csta=259 \def\bxjs@invscale#1#2{% @@ -625,46 +733,293 @@ \else \@tempdimb=\@tempcntb\@ne \fi}% \xdef\bxjs@gtmpa{\the\@tempdimb}% \egroup #1=\bxjs@gtmpa\relax} -% platex、uplatexオプション -\newif\ifbxjs@ptexmodule +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bxjs@engine@given} +% オプションで明示されたエンジンの種別。 +% \begin{macrocode} +%\let\bxjs@engine@given\@undefined +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bxjs@engine@opt} +% 明示されたエンジンのオプション名。 +% \begin{macrocode} +%\let\bxjs@engine@opt\@undefined +% \end{macrocode} +% \end{macro} +% +% エンジン明示指定のオプションの処理。 +% \Note 0.9pre版の暫定仕様と異なり、エンジン名は |...latex| +% に限定する。 +% |xetex| や |pdftex| は一般的な{\LaTeX}の慣習に従って +% 「ドライバの指定」とみなすべきだから。 +% +% \begin{macrocode} +\DeclareOption{autodetect-engine}{% + \let\bxjs@engine@given=*} +\DeclareOption{latex}{% + \def\bxjs@engine@opt{latex}% + \let\bxjs@engine@given=n} \DeclareOption{platex}{% - \@tempswafalse - \if j\bxjs@engine \if@jsc@uplatex\else \@tempswatrue \fi\fi - \bxjs@opt@platex} + \def\bxjs@engine@opt{platex}% + \let\bxjs@engine@given=j} \DeclareOption{uplatex}{% - \@tempswafalse - \if j\bxjs@engine \if@jsc@uplatex \@tempswatrue \fi\fi - \bxjs@opt@platex} -\def\bxjs@opt@platex{% - \if@tempswa - \bxjs@ptexmoduletrue - \else - \ClassError\bxjs@clsname% - {Option `\CurrentOption' used on wrong engine}\@ehc - \fi} + \def\bxjs@engine@opt{uplatex}% + \let\bxjs@engine@given=u} +\DeclareOption{xelatex}{% + \def\bxjs@engine@opt{xelatex}% + \let\bxjs@engine@given=x} +\DeclareOption{pdflatex}{% + \def\bxjs@engine@opt{pdflatex}% + \let\bxjs@engine@given=p} +\DeclareOption{lualatex}{% + \def\bxjs@engine@opt{lualatex}% + \let\bxjs@engine@given=l} +% \end{macrocode} +% +% \begin{macro}{\bxjs@driver@given} +% オプションで明示されたドライバの種別。 +% \begin{macrocode} +%\let\bxjs@driver@given\@undefined +\let\bxjs@driver@@dvimode=0 +\let\bxjs@driver@@dvipdfmx=1 +\let\bxjs@driver@@pdfmode=2 +\let\bxjs@driver@@xetex=3 +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bxjs@driver@opt} +% 明示された「ドライバ指定」のオプション名。 +% \begin{macrocode} +%\let\bxjs@driver@opt\@undefined +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\DeclareOption{dvips}{% + \def\bxjs@driver@opt{dvips}% + \let\bxjs@driver@given\bxjs@driver@@dvimode} +\DeclareOption{dviout}{% + \def\bxjs@driver@opt{dviout}% + \let\bxjs@driver@given\bxjs@driver@@dvimode} +\DeclareOption{xdvi}{% + \def\bxjs@driver@opt{xdvi}% + \let\bxjs@driver@given\bxjs@driver@@dvimode} +\DeclareOption{dvipdfmx}{% + \def\bxjs@driver@opt{dvipdfmx}% + \let\bxjs@driver@given\bxjs@driver@@dvipdfmx} +\DeclareOption{pdftex}{% + \def\bxjs@driver@opt{pdftex}% + \let\bxjs@driver@given\bxjs@driver@@pdfmode} +\DeclareOption{luatex}{% + \def\bxjs@driver@opt{luatex}% + \let\bxjs@driver@given\bxjs@driver@@pdfmode} +\DeclareOption{xetex}{% + \def\bxjs@driver@opt{xetex}% + \let\bxjs@driver@given\bxjs@driver@@xetex} +% \end{macrocode} +% +% 「もしDVIモードであればドライバを |dvipdfmx| にする」 +% というオプション。 +% \begin{macrocode} +\DeclareOption{dvipdfmx-if-dvi}{% + \def\bxjs@driver@opt{dvipdfmx-if-dvi}% + \let\bxjs@driver@given\@undefined} +% \end{macrocode} +% +% \begin{macro}{\ifbxjs@usezw} +% |\jsZw| の同義語として |\zw| を使えるようにするか。 +% 既定は真。 +% \begin{macrocode} +\newif\ifbxjs@usezw \bxjs@usezwtrue +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\DeclareOption{nozw}{% + \bxjs@usezwfalse} +\DeclareOption{zw}{% + \bxjs@usezwtrue} +% \end{macrocode} +% +% \begin{macro}{\ifbxjs@disguise@js} +% JSクラスの派生クラスのふりをするか。 +% 既定は真。 +% \begin{macrocode} +\newif\ifbxjs@disguise@js \bxjs@disguise@jstrue +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\DeclareOption{nojs}{% + \bxjs@disguise@jsfalse} +\DeclareOption{js}{% + \bxjs@disguise@jstrue} +% \end{macrocode} +% % keyval型のオプションの処理。 +% \begin{macrocode} \def\bxjs@setkey{% \expandafter\bxjs@setkey@a\expandafter{\CurrentOption}} \def\bxjs@setkey@a{\setkeys{bxjs}} -\define@key{bxjs}{base}{\bxjs@setbasefontsize{#1}} +\DeclareOption*{\bxjs@setkey} +% \end{macrocode} +% +% \begin{macro}{\ifbxjs@scaleset} +% 和文スケール値が指定されたか。 +% \begin{macrocode} +\newif\ifbxjs@scaleset +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\jsScale} +% 和文スケール値。 +% \begin{macrocode} \def\jsScale{0.924715} -% scaleとの順序依存を消すため、jbaseの実行を遅延させる +\def\Cjascale{\jsScale} +% \end{macrocode} +% \end{macro} +% +% |base| オプションの処理。 +% \begin{macrocode} +\define@key{bxjs}{base}{\bxjs@setbasefontsize{#1}} +% \end{macrocode} +% +% |jbase| オプションの処理。 +% ここでは |\jsScale| の値を使用する。 +% |scale| の処理との順序依存を消すため、 +% |jbase| の処理の実行を遅延させている。 +% \begin{macrocode} +\@onlypreamble\bxjs@do@opt@jbase \let\bxjs@do@opt@jbase\relax -\define@key{bxjs}{jbase}{% - \def\bxjs@do@opt@jbase{\bxjs@opt@jbase{#1}}} -\def\bxjs@opt@jbase#1{% - \setlength\@tempdima{#1}% - \bxjs@invscale\@tempdima\jsScale - \bxjs@setbasefontsize{\@tempdima}} -\define@key{bxjs}{scale}{\edef\jsScale{#1}} +\define@key{bxjs}{jbase}{\bxjs@setjbasefontsize{#1}} +\def\bxjs@setjbasefontsize#1{% + \def\bxjs@do@opt@jbase{% + \setlength\@tempdima{#1}% + \bxjs@invscale\@tempdima\jsScale + \bxjs@setbasefontsize{\@tempdima}}} +% \end{macrocode} +% +% |scale| オプションの処理。 +% \begin{macrocode} +\define@key{bxjs}{scale}{% + \bxjs@scalesettrue + \edef\jsScale{#1}} +% \end{macrocode} +% +% |noscale| オプションの処理。 +% \begin{macrocode} +\DeclareOption{noscale}{% + \bxjs@scalesettrue + \def\jsScale{1}} +% \end{macrocode} +% +% |CJK| オプションは廃止された。 +% \begin{macrocode} +\DeclareOption{CJK}{% + \ClassWarning\bxjs@clsname + {Option `CJK' was abolished}} +% \end{macrocode} +% +% \begin{macro}{\bxjs@param@mag} +% |mag| オプションの値。 +% \begin{macrocode} \let\bxjs@param@mag\relax +% \end{macrocode} +% \end{macro} +% +% |mag| オプションの処理。 +% \begin{macrocode} \define@key{bxjs}{mag}{\edef\bxjs@param@mag{#1}} +% \end{macrocode} +% +% |paper| オプションの処理。 +% \begin{macrocode} \define@key{bxjs}{paper}{\edef\bxjs@param@paper{#1}} -\DeclareOption*{\bxjs@setkey} % \end{macrocode} % +% \begin{macro}{\bxjs@jadriver} +% 和文ドライバの名前。 +% \begin{macrocode} +\let\bxjs@jadriver\relax +% \end{macrocode} +% \end{macro} +% +% |jadriver| オプション(|ja| オプション)の処理。 +% \begin{macrocode} +\define@key{bxjs}{jadriver}{\edef\bxjs@jadriver{#1}} +\define@key{bxjs}{ja}{\edef\bxjs@jadriver{#1}} +% \end{macrocode} +% +% \begin{macro}{\jsJaFont} +% 和文フォント設定の名前。 +% \begin{macrocode} +\let\jsJaFont\@empty +% \end{macrocode} +% \end{macro} +% +% |jafont| オプションの処理。 +% \begin{macrocode} +\define@key{bxjs}{jafont}{\edef\jsJaFont{#1}} +% \end{macrocode} +% +% \begin{macro}{\jsJaParam} +% 和文ドライバパラメタの文字列。 +% \begin{macrocode} +\let\jsJaParam\@empty +% \end{macrocode} +% \end{macro} +% +% |japaram| オプションの処理。 +% \begin{macrocode} +\define@key{bxjs}{japaram}{\edef\jsJaParam{#1}} +% \end{macrocode} +% +% \begin{macro}{\bxjs@magstyle} +% magstyle設定値。 +% \begin{macrocode} +\let\bxjs@magstyle@mag=m +\let\bxjs@magstyle@real=r +\let\bxjs@magstyle@xreal=x +\let\bxjs@magstyle\bxjs@magstyle@mag +% \end{macrocode} +% \end{macro} +% +% |magstyle| オプションの処理。 +% \begin{macrocode} +\define@key{bxjs}{magstyle}{% + \expandafter\let\expandafter\bxjs@magstyle\csname + bxjs@magstyle@#1\endcsname + \ifx\bxjs@magstyle\relax + \ClassError\bxjs@clsname + {Invalid magstyle value `#1'}\@ehc + \let\bxjs@magstyle\bxjs@magstyle@mag + \fi} +% \end{macrocode} +% +% \end{ZRnote} +% % \paragraph{オプションの実行} % +% \begin{ZRnote} +% {\LaTeX}の実装では、クラスやパッケージのオプションのトークン列の +% 中に |{ }| が含まれると正常に処理ができない。 +% これに対処する為 |\@removeelement| の実装に少し手を加える +% (仕様は変わらない)。 +% \Note クラスに |\DeclareOption*| がある場合は |\@unusedoptions| +% は常に空のままであることを利用している。 +% \end{ZRnote} +% \begin{macrocode} +\let\ltx@removeelement\@removeelement +\def\@removeelement#1#2#3{% + \def\reserved@a{#2}% + \ifx\reserved@a\@empty \let#3\@empty + \else \ltx@removeelement{#1}{#2}{#3}% + \fi} +% \end{macrocode} +% % デフォルトのオプションを実行し,|dvi| ファイルの先頭にdvipsのpapersize % specialを書き込みます。このspecialはdvipsや最近のdvioutが対応しています。 % |multicols| や |url| を |\RequirePackage| するのはやめました。 @@ -675,9 +1030,124 @@ %<book>\ExecuteOptions{a4paper,twoside,onecolumn,titlepage,openright,final} %<slide>\ExecuteOptions{36pt,a4paper,landscape,oneside,onecolumn,titlepage,final} \ProcessOptions\relax +% \end{macrocode} +% +% \begin{ZRnote} +% +% |papersize| と |10pt| のオプションは他のパッケージと衝突を +% 起こす可能性があるため、グローバルオプションから外す。 +% +% \begin{macrocode} +\@expandtwoargs\@removeelement + {papersize}\@classoptionslist\@classoptionslist +\@expandtwoargs\@removeelement + {10pt}\@classoptionslist\@classoptionslist +% \end{macrocode} +% +% エンジン明示指定のオプションが与えられた場合は、 +% それが実際のエンジンと一致するかを検査する。 +% \begin{macrocode} +\let\bxjs@tmpb\jsEngine +\ifx j\bxjs@tmpb\ifjsWithupTeX + \let\bxjs@tmpb=u +\fi\fi +\ifx p\bxjs@tmpb\ifjsInPdfMode\else + \let\bxjs@tmpb=n +\fi\fi +\ifx *\bxjs@engine@given + \let\bxjs@engine@given\bxjs@tmpb +\fi +\ifx\bxjs@engine@given\@undefined\else + \ifx\bxjs@engine@given\bxjs@tmpb\else + \ClassError\bxjs@clsname% + {Option `\bxjs@engine@opt' used on wrong engine}\@ehc + \fi +\fi +% \end{macrocode} +% +% ドライバ指定のオプションが与えられた場合は、 +% それがエンジンと整合するかを検査する。 +% \begin{macrocode} +\@tempswatrue +\ifx \bxjs@driver@given\@undefined\else + \ifjsInPdfMode + \ifx\bxjs@driver@given\bxjs@driver@@pdfmode\else + \@tempswafalse + \fi + \else\ifx x\jsEngine + \ifx\bxjs@driver@given\bxjs@driver@@xetex\else + \@tempswafalse + \fi + \else + \ifx\bxjs@driver@given\bxjs@driver@@pdfmode + \@tempswafalse + \else\ifx\bxjs@driver@given\bxjs@driver@@xetex + \@tempswafalse + \fi\fi + \fi\fi +\fi +\if@tempswa\else + \ClassError\bxjs@clsname% + {Option `\bxjs@driver@opt' used on wrong engine}\@ehc +\fi +% \end{macrocode} +% +% DVI出力のエンジンでドライバオプションがない場合は警告を出す。 +% \begin{macrocode} +\ifjsInPdfMode \@tempswafalse +\else\ifx x\jsEngine \@tempswafalse +\else \@tempswatrue +\fi\fi +\if@tempswa + \ifx\bxjs@driver@opt\@undefined + \ClassWarningNoLine\bxjs@clsname + {No driver option is given} + \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} + \fi +\fi +% \end{macrocode} +% +% |\bxjs@jadriver| の正規化。 +% 値が未指定の場合は |minimal| に変える。 +% ただしエンジンが{(u)\pTeX}である場合は |standard| +% に変える。 +% \begin{macrocode} +\def\bxjs@@minimal{minimal} +\ifx\bxjs@jadriver\relax + \ifx j\jsEngine + \def\bxjs@jadriver{standard} + \else + \let\bxjs@jadriver\bxjs@@minimal + \fi +\fi +% \end{macrocode} +% +% \begin{macrocode} +\ifx\bxjs@jadriver\bxjs@@minimal\else + \ifx\bxjs@engine@given\@undefined + \ClassError\bxjs@clsname% + {An engine option must be explicitly given}% + {When you employ a Japanese-driver you must specify a + correct\MessageBreak engine option.\MessageBreak\@ehc} +\fi\fi +% \end{macrocode} +% +% オプション処理時に遅延させていた |jbase| の処理をここで実行する。 +% \begin{macrocode} \bxjs@do@opt@jbase % \end{macrocode} % +% \end{ZRnote} +% % 後処理 % % \begin{macrocode} @@ -691,6 +1161,33 @@ \fi % \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 + \catcode\@tempcnta\active + \advance\@tempcnta\@ne + \repeat +\fi +% \end{macrocode} +% +% \begin{ZRnote} +% |js| オプション指定時は、jsarticle(または jsbook)クラスを +% 読込済のように振舞う。 +% \Note 「2つのクラスを読み込んだ状態」は |\LoadClass| を使用した +% 場合に出現するので、別に異常ではない。 +% \end{ZRnote} +% \begin{macrocode} +\ifbxjs@disguise@js +%<book|report>\def\bxjs@js@clsname{jsbook} +%<!book&!report>\def\bxjs@js@clsname{jsarticle} + \@namedef{ver@\bxjs@js@clsname.cls}{2001/01/01 (bxjs)} +\fi +% \end{macrocode} +% % \paragraph{papersizeスペシャルの出力} % \mbox{} % \begin{ZRnote} @@ -712,6 +1209,30 @@ % % \paragraph{拡大率の設定} % +% \begin{ZRnote} +% \begin{macro}{\ifbxjs@mag} +% |\mag| するか。 +% \begin{macrocode} +\newif\ifbxjs@mag +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ifbxjs@nfss@patch} +% NFSSパッチするか。 +% \begin{macrocode} +\newif\ifbxjs@nfss@patch +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\ifx\bxjs@magstyle\bxjs@magstyle@mag + \bxjs@magtrue +\else\ifx\bxjs@magstyle\bxjs@magstyle@xreal + \bxjs@nfss@patchtrue +\fi\fi +% \end{macrocode} +% \end{ZRnote} +% % サイズの変更は\TeX のプリミティブ |\mag| を使って行います。 % 9ポイントについては行送りも若干縮めました。 % サイズについては全面的に見直しました。 @@ -729,7 +1250,6 @@ % 設定すべき |\mag| 値を (基底サイズ)/(10\,pt) $\times$ 1000 と算出。 % BXJSクラスでは、|\mag| を直接指定したい場合は、|geometry| 側では % なくクラスのオプションで行うものとする。 -% \end{ZRnote} % \begin{macrocode} \ifx\bxjs@param@mag\relax \@tempdima=\bxjs@param@basefontsize @@ -747,22 +1267,103 @@ \expandafter\bxjs@tmpa\the\@tempcnta\@nil \edef\bxjs@param@basefontsize{\the\@tempdima} \fi +\@tempcnta\bxjs@param@mag \advance\@tempcnta100000 +\def\bxjs@tmpa#1#2#3#4\@nil{\@tempdima=#2#3.#4\p@} +\expandafter\bxjs@tmpa\the\@tempcnta\@nil +\edef\bxjs@real@mag{\strip@pt\@tempdima} \let\jsBaseFontSize\bxjs@param@basefontsize %\typeout{\string\jsDocClass: \meaning\jsDocClass} -%\typeout{\string\bxjs@engine: \meaning\bxjs@engine} +%\typeout{\string\jsEngine: \meaning\jsEngine} %\typeout{\string\jsBaseFontSize: \jsBaseFontSize} %\typeout{\string\bxjs@param@mag: \bxjs@param@mag} +%\typeout{\string\bxjs@real@mag: \bxjs@real@mag} +%\typeout{\string\ifbxjs@mag: \meaning\ifbxjs@mag} +%\typeout{\string\ifbxjs@nfss@patch: \meaning\ifbxjs@nfss@patch} +% \end{macrocode} +% +% |\bxjs@mpt| は基底スケールしたpt。 +% |\mag| する場合は |\p@| と同値にする。 +% +% |\mag| する場合(現状はこれが既定)にコードの変更を低減するために、 +% 以下では必要に応じて、|\bxjs@mpt| を |\p@?| と書く。 +% その上で、|\mag| する場合は |?| を無視して |\p@| と解釈させ、 +% |\mag| しない場合は |?| を英字扱いにして |\p@?| という制御綴を +% |\bxjs@mpt| と同値にする。 +% \begin{macrocode} +\ifbxjs@mag + \let\bxjs@mpt\p@ + \catcode`\?=9 % \p@? read as \p@ +\else + \newdimen\bxjs@mpt + \bxjs@mpt=\bxjs@real@mag \p@ + \catcode`\?=11 \let\p@?\bxjs@mpt +\fi +\chardef\bxjs@qmcc=\catcode`\?\relax % \end{macrocode} +% \end{ZRnote} % % \begin{ZRnote} % ここで{p\TeX}のzwに相当する単位として用いる長さ変数 |\jsZw| を作成する。 % 約束により、これは |\jsScale| $\times$ (指定フォントサイズ) に等しい。 +% +% |nozw| 非指定時は |\zw| を |\jsZw| と同義にする。 % \end{ZRnote} % \begin{macrocode} \newdimen\jsZw -\jsZw=10pt \jsZw=\jsScale\jsZw +\jsZw=10\bxjs@mpt \jsZw=\jsScale\jsZw +\ifbxjs@usezw + \providecommand*\zw{\jsZw} +\fi % \end{macrocode} % +% \paragraph{NFSSパッチ ☆} +% +% ムニャムニャムニャ……。 +% \begin{ZRnote} +% \begin{macrocode} +\ifbxjs@nfss@patch +\RequirePackage{type1cm} +\expandafter\let\csname OT1/cmr/m/n/10\endcsname\relax +\expandafter\let\csname OMX/cmex/m/n/10\endcsname\relax +\let\bxjs@get@external@font\get@external@font +\def\get@external@font{% + \bxjs@preadjust@extract@font + \bxjs@get@external@font} +\def\bxjs@fstrunc#1{% + \edef\bxjs@tmpa{\strip@pt#1}% + \expandafter\bxjs@fstrunc@a\bxjs@tmpa.****\@nil} +\def\bxjs@fstrunc@a#1.#2#3#4#5#6\@nil{% + \if#5*\else + \edef\bxjs@tmpa{#1% + \ifnum#2#3>\z@ .#2\ifnum#3>\z@ #3\fi\fi}% + \fi} +\def\bxjs@preadjust@extract@font{% + \let\bxjs@req@size\f@size + \dimen@\f@size\p@ \bxjs@invscale\dimen@\bxjs@real@mag + \advance\dimen@.005pt\relax \bxjs@fstrunc\dimen@ + \let\bxjs@ref@size\bxjs@tmpa + \let\f@size\bxjs@ref@size} +\def\execute@size@function#1{% + \let\bxjs@cref@size\f@size + \let\f@size\bxjs@req@size + \csname s@fct@#1\endcsname} +\let\bxjs@DeclareErrorFont\DeclareErrorFont +\def\DeclareErrorFont#1#2#3#4#5{% + \@tempdimc#5\p@ \@tempdimc\bxjs@real@mag\@tempdimc + \edef\bxjs@tmpa{{#1}{#2}{#3}{#4}{\strip@pt\@tempdimc}} + \expandafter\bxjs@DeclareErrorFont\bxjs@tmpa} +\def\gen@sfcnt{% + \edef\mandatory@arg{\mandatory@arg\bxjs@cref@size}% + \empty@sfcnt} +\def\genb@sfcnt{% + \edef\mandatory@arg{% + \mandatory@arg\expandafter\genb@x\bxjs@cref@size..\@@}% + \empty@sfcnt} +\DeclareErrorFont{OT1}{cmr}{m}{n}{10} +\fi +% \end{macrocode} +% \end{ZRnote} +% % \paragraph{pagesizeスペシャルの出力} % \mbox{} % \begin{ZRnote} @@ -809,7 +1410,7 @@ % \@xipt 10.95 \@xiipt 12 \@xivpt 14.4 %\end{verbatim} % -% \begin{macro}{\@setfontsize} +%^^A\begin{macro}{\@setfontsize} % % ここでは |\@setfontsize| の定義を少々変更して, % 段落の字下げ |\parindent|, @@ -834,29 +1435,59 @@ % [2008-02-18] |english| オプションで |\parindent| を 1em にしました。 % % \begin{ZRnote} -% |\@setfontsize| の中で |\jsZw| を再設定している。 -% またユーザ定義用のフック |\jsResetDimen| を用意した。 -% \end{ZRnote} +% \begin{macro}{\set@fontsize} +% |\fontsize| 命令(|\large| 等でなく)でフォントサイズ変更した場合 +% にもフックが実行されるように、|\@setfontsize| では +% なく |\set@fontsize| に対してパッチを当てるように変更。 +% \begin{macrocode} +\def\bxjs@tmpa{\def\set@fontsize##1##2##3} +\expandafter\bxjs@tmpa\expandafter{% + \set@fontsize{#1}{#2}{#3}% +% 末尾にコードを追加 + \expandafter\def\expandafter\size@update\expandafter{% + \size@update + \jsFontSizeChanged}% +} +% \end{macrocode} +% \end{macro} % +% \begin{macro}{\jsFontSizeChanged} +% フォントサイズ変更時に呼ばれるフック。 +% |\jsZw| を再設定している。 +% その後でユーザ定義用のフック |\jsResetDimen| を実行する。 % \begin{macrocode} -\def\@setfontsize#1#2#3{% -% \@nomath#1% - \ifx\protect\@typeset@protect - \let\@currsize#1% - \fi - \fontsize{#2}{#3}\selectfont - \jsZw=\f@size pt\relax - \jsZw=\jsScale \jsZw\relax +\newcommand*\jsFontSizeChanged{% + \jsZw=\f@size\p@ + \jsZw=\jsScale \jsZw \ifdim\parindent>\z@ \if@english \parindent=1em \else \parindent=1\jsZw \fi \fi\relax \jsResetDimen} -\def\jsResetDimen{} % \end{macrocode} % \end{macro} % +% \begin{macro}{\jsResetDimen} +% ユーザ定義用のフック。 +% \begin{macrocode} +\newcommand*\jsResetDimen{} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bxjs@setfontsize} +% 基底スケールを考慮した |\@setfontsize|。 +% \begin{macrocode} +\ifbxjs@mag + \let\bxjs@setfontsize\@setfontsize +\else + \def\bxjs@setfontsize#1#2#3{% + \@setfontsize#1{#2\bxjs@mpt}{#3\bxjs@mpt}} +\fi +% \end{macrocode} +% \end{macro} +% \end{ZRnote} +% % これらのグルーをもってしても行分割ができない場合は, % |\emergencystretch| に訴えます。 % @@ -881,6 +1512,8 @@ % % [2008-02-18] |english| オプションで最初の段落のインデントをしないようにしました。 % +% TODO: Hasumiさん [qa:54539] のご指摘は考慮中です。 +% % \begin{macrocode} \newif\ifnarrowbaselines \if@english @@ -903,6 +1536,21 @@ % \end{macro} % \end{macro} % +% \begin{ZRnote} +% |microtype| パッケージを読み込んだ場合、|\normalsize| 等の +% フォントサイズ変更命令の定義の中にif文が使われていると、 +% 不可解なエラーが発生する。 +% これは |microtype| が邪悪なトリックを使用しているせいなのだが、 +% 一応こちら側で対策をとることにする。 +% \end{ZRnote} +% \begin{macrocode} +\def\bxjs@if@narrowbaselines{% + \ifnarrowbaselines\expandafter\@firstoftwo + \else \expandafter\@secondoftwo + \fi +} +% \end{macrocode} +% % \begin{macro}{\normalsize} % % 標準のフォントサイズと行送りを選ぶコマンドです。 @@ -920,13 +1568,16 @@ % 和文の推奨値の一つ「二分四分」(1.75) % に近づきました。 % +% \begin{ZRnote} +% |microtype| 対策のためif文を避ける。 +% \end{ZRnote} % \begin{macrocode} \renewcommand{\normalsize}{% - \ifnarrowbaselines - \@setfontsize\normalsize\@xpt\@xiipt - \else - \@setfontsize\normalsize\@xpt{\n@baseline}% - \fi + \bxjs@if@narrowbaselines{% + \bxjs@setfontsize\normalsize\@xpt\@xiipt + }{%else + \bxjs@setfontsize\normalsize\@xpt{\n@baseline}% + }% % \end{macrocode} % % 数式の上のアキ(|\abovedisplayskip|), @@ -935,10 +1586,13 @@ % % [2003-02-16] ちょっと変えました。 % +% [2009-08-26] \TeX\ Q\,\&\,A 52569から始まる議論について逡巡して +% いましたが,結局,微調節してみることにしました。 +% % \begin{macrocode} - \abovedisplayskip 10\p@ \@plus3\p@ \@minus4\p@ - \abovedisplayshortskip \z@ \@plus3\p@ - \belowdisplayskip \abovedisplayskip + \abovedisplayskip 11\p@? \@plus3\p@? \@minus4\p@? + \abovedisplayshortskip \z@ \@plus3\p@? + \belowdisplayskip 9\p@? \@plus3\p@? \@minus4\p@? \belowdisplayshortskip \belowdisplayskip % \end{macrocode} % @@ -1006,17 +1660,21 @@ % また,|\topsep| と |\parsep| は,元はそれぞれ $4 \pm 2$,$2 \pm 1$ % ポイントでしたが,ここではゼロ(|\z@|)にしました。 % +% \begin{ZRnote} +% |microtype| 対策のためif文を避ける。 +% 後の |\footnotesize| も同様。 +% \end{ZRnote} % \begin{macrocode} \newcommand{\small}{% - \ifnarrowbaselines -%<!kiyou> \@setfontsize\small\@ixpt{11}% -%<kiyou> \@setfontsize\small{8.8888}{11}% - \else -%<!kiyou> \@setfontsize\small\@ixpt{13}% -%<kiyou> \@setfontsize\small{8.8888}{13.2418}% - \fi - \abovedisplayskip 9\p@ \@plus3\p@ \@minus4\p@ - \abovedisplayshortskip \z@ \@plus3\p@ + \bxjs@if@narrowbaselines{% +%<!kiyou> \bxjs@setfontsize\small\@ixpt{11}% +%<kiyou> \bxjs@setfontsize\small{8.8888}{11}% + }{%else +%<!kiyou> \bxjs@setfontsize\small\@ixpt{13}% +%<kiyou> \bxjs@setfontsize\small{8.8888}{13.2418}% + }% + \abovedisplayskip 9\p@? \@plus3\p@? \@minus4\p@? + \abovedisplayshortskip \z@ \@plus3\p@? \belowdisplayskip \abovedisplayskip \belowdisplayshortskip \belowdisplayskip \def\@listi{\leftmargin\leftmargini @@ -1034,15 +1692,15 @@ % % \begin{macrocode} \newcommand{\footnotesize}{% - \ifnarrowbaselines -%<!kiyou> \@setfontsize\footnotesize\@viiipt{9.5}% -%<kiyou> \@setfontsize\footnotesize{8.8888}{11}% - \else -%<!kiyou> \@setfontsize\footnotesize\@viiipt{11}% -%<kiyou> \@setfontsize\footnotesize{8.8888}{13.2418}% - \fi - \abovedisplayskip 6\p@ \@plus2\p@ \@minus3\p@ - \abovedisplayshortskip \z@ \@plus2\p@ + \bxjs@if@narrowbaselines{% +%<!kiyou> \bxjs@setfontsize\footnotesize\@viiipt{9.5}% +%<kiyou> \bxjs@setfontsize\footnotesize{8.8888}{11}% + }{%else +%<!kiyou> \bxjs@setfontsize\footnotesize\@viiipt{11}% +%<kiyou> \bxjs@setfontsize\footnotesize{8.8888}{13.2418}% + }% + \abovedisplayskip 6\p@? \@plus2\p@? \@minus3\p@? + \abovedisplayshortskip \z@ \@plus2\p@? \belowdisplayskip \abovedisplayskip \belowdisplayshortskip \belowdisplayskip \def\@listi{\leftmargin\leftmargini @@ -1071,21 +1729,21 @@ % [2004-11-03] |\HUGE| を追加。 % % \begin{macrocode} -\newcommand{\scriptsize}{\@setfontsize\scriptsize\@viipt\@viiipt} -\newcommand{\tiny}{\@setfontsize\tiny\@vpt\@vipt} +\newcommand{\scriptsize}{\bxjs@setfontsize\scriptsize\@viipt\@viiipt} +\newcommand{\tiny}{\bxjs@setfontsize\tiny\@vpt\@vipt} \if@twocolumn -%<!kiyou> \newcommand{\large}{\@setfontsize\large\@xiipt{\n@baseline}} -%<kiyou> \newcommand{\large}{\@setfontsize\large{11.111}{\n@baseline}} +%<!kiyou> \newcommand{\large}{\bxjs@setfontsize\large\@xiipt{\n@baseline}} +%<kiyou> \newcommand{\large}{\bxjs@setfontsize\large{11.111}{\n@baseline}} \else -%<!kiyou> \newcommand{\large}{\@setfontsize\large\@xiipt{17}} -%<kiyou> \newcommand{\large}{\@setfontsize\large{11.111}{17}} +%<!kiyou> \newcommand{\large}{\bxjs@setfontsize\large\@xiipt{17}} +%<kiyou> \newcommand{\large}{\bxjs@setfontsize\large{11.111}{17}} \fi -%<!kiyou>\newcommand{\Large}{\@setfontsize\Large\@xivpt{21}} -%<kiyou>\newcommand{\Large}{\@setfontsize\Large{12.222}{21}} -\newcommand{\LARGE}{\@setfontsize\LARGE\@xviipt{25}} -\newcommand{\huge}{\@setfontsize\huge\@xxpt{28}} -\newcommand{\Huge}{\@setfontsize\Huge\@xxvpt{33}} -\newcommand{\HUGE}{\@setfontsize\HUGE{30}{40}} +%<!kiyou>\newcommand{\Large}{\bxjs@setfontsize\Large\@xivpt{21}} +%<kiyou>\newcommand{\Large}{\bxjs@setfontsize\Large{12.222}{21}} +\newcommand{\LARGE}{\bxjs@setfontsize\LARGE\@xviipt{25}} +\newcommand{\huge}{\bxjs@setfontsize\huge\@xxpt{28}} +\newcommand{\Huge}{\bxjs@setfontsize\Huge\@xxvpt{33}} +\newcommand{\HUGE}{\bxjs@setfontsize\HUGE{30}{40}} % \end{macrocode} % \end{macro} % \end{macro} @@ -1159,10 +1817,10 @@ % \texttt{normal...} の付いた方は保存用です。 % % \begin{macrocode} -\setlength\lineskip{1\p@} -\setlength\normallineskip{1\p@} -\setlength\lineskiplimit{1\p@} -\setlength\normallineskiplimit{1\p@} +\setlength\lineskip{1\p@?} +\setlength\normallineskip{1\p@?} +\setlength\lineskiplimit{1\p@?} +\setlength\normallineskiplimit{1\p@?} % \end{macrocode} % \end{macro} % \end{macro} @@ -1248,8 +1906,10 @@ % |\topskip| も指定する。 % \end{ZRnote} % \begin{macrocode} +\ifbxjs@mag \mag=\bxjs@param@mag -\setlength{\topskip}{10pt} +\fi +\setlength{\topskip}{10\p@?} % \end{macrocode} % % \begin{ZRnote} @@ -1271,7 +1931,9 @@ % \end{ZRnote} % \begin{macrocode} \edef\bxjs@layout@paper{% - truedimen,\if@landscape landscape,\fi \bxjs@param@paper} + \ifbxjs@mag truedimen,\fi + \if@landscape landscape,\fi + \bxjs@param@paper} % \end{macrocode} % % @@ -1284,31 +1946,36 @@ \def\bxjs@layout{% headheight=\topskip,footskip=0.03367\paperheight,% headsep=\footskip-\topskip,includeheadfoot,% - hscale=0.76,,hmarginratio=1:1,% + hscale=0.76,hmarginratio=1:1,% vscale=0.83,vmarginratio=1:1,% } %</article|report> %<*book> \def\bxjs@layout{% - headheight=\topskip,headsep=6mm,nofoot,includeheadfoot,% - hmargin=36mm,hmarginratio=1:1,% - vscale=0.83%,vmarginratio=1:1,% +% 6mm=17.07164pt, 36mm=102.42992pt + headheight=\topskip,headsep=17.07164\p@?,nofoot,includeheadfoot,% + hmargin=102.42992\p@?,hmarginratio=1:1,% + vscale=0.83,vmarginratio=1:1,% } %</book> %<*slide> \def\bxjs@layout{% noheadfoot,% hscale=0.9,hmarginratio=1:1,% - vscale=0.95,vmarginratio=1:1,%% + vscale=0.944,vmarginratio=1:1,% } %</slide> % \end{macrocode} % % \begin{ZRnote} % |geometry| の後処理。 +% +% |\jsTextWidthLimit| は |bxjsbook| での |\textwidth| の +% 上限で、全角単位の実数値マクロ。 % \end{ZRnote} % \begin{macrocode} \newdimen\fullwidth +%<book>\newcommand\jsTextWidthLimit{40} \def\bxjs@postproc@layout{% % textwidth 調整 \@tempdimb=\textwidth @@ -1317,6 +1984,13 @@ \advance\@tempdimb-\textwidth \advance\oddsidemargin 0.5\@tempdimb \advance\evensidemargin 0.5\@tempdimb + \fullwidth=\textwidth +%<*book> + \ifdim\textwidth>\jsTextWidthLimit\Cwd + \textwidth=\jsTextWidthLimit\Cwd + \addtolength\evensidemargin{\fullwidth-\textwidth} + \fi +%</book> % textheight 調整 \@tempdimb=\textheight \advance\textheight-\topskip @@ -1331,16 +2005,15 @@ % marginpar 設定 \setlength\marginparsep{\columnsep} \setlength\marginparpush{\baselineskip} - \setlength\marginparwidth{\evensidemargin-1truein-\marginparsep} + \setlength\marginparwidth{\paperwidth-\oddsidemargin-1truein% + -\textwidth-1cm-\marginparsep} \divide\marginparwidth\Cwd \multiply\marginparwidth\Cwd % 連動する変数 \maxdepth=.5\topskip - \fullwidth=\textwidth } % \end{macrocode} % % \begin{ZRnote} -% ここで |geometry| を読み込む。 % |geometry| は |\topskip| が標準の行高(|\ht\strutbox|)より小さくならない % ようにする自動調整を行うが、これをどうするかは未検討。 % 今のところ、単純に回避(無効化)している。 @@ -1349,29 +2022,29 @@ \@onlypreamble\bxjs@revert \let\bxjs@revert\@empty \edef\bxjs@tmpa{\the\ht\strutbox} -\ht\strutbox=10pt +\ht\strutbox=10\p@? \g@addto@macro\bxjs@revert{\ht\strutbox=\bxjs@tmpa\relax} % \end{macrocode} % \begin{ZRnote} -% エンジンが XeTeX である場合の処理。 +% エンジンが{\XeTeX}である場合の処理。 % \begin{itemize} % \item |geometry| 4.2版の場合:\ % {\TeX} Liveの一部の版に用意されている設定ファイル |geometry.cfg| % では、|geometry| のドライバ自動検出の処理を乗っ取って、 % 強制的に |pdftex| を使用するようになっている。 -% ところが、XeTeXでは |\pdfhorigin| など未サポートのpdf{\TeX}% +% ところが、{\XeTeX}では |\pdfhorigin| など未サポートのpdf{\TeX}% % プリミティブがあり、|\mag| $\neq 1000$ の場合にエラーになる。 % そこで、|geometry.cfg| の読込の箇所にフックをかけて、|geometry.cfg| % での処理をさらに乗っ取ることにする。 % \begin{itemize} -% \item XeTeXが |\pdfpagewidth| をサポートする場合は、ダミーの\ +% \item {\XeTeX}が |\pdfpagewidth| をサポートする場合は、ダミーの\ % |\pdfhorigin|、|\pdfvorigin| を用意してドライバを |pdftex| % に強制的に変更する。 % \item そうでない場合は、ドライバを |dvipdfm| に強制的に変更する。 % \end{itemize} % \item |geometry| 5.x版の場合:\ -% この版の |geometry| はXeTeXに正式に対応(ドライバ名 |xetex|) -% していて、またXeTeXで実行した場合にドライバ自動検出の結果は\ +% この版の |geometry| は{\XeTeX}に正式に対応(ドライバ名 |xetex|) +% していて、また{\XeTeX}で実行した場合にドライバ自動検出の結果は\ % |xetex| となる。 % 従って、特に何もする必要がない。 % さらに、ドライバ自動検出処理のマクロ名を4.2版のもの @@ -1380,7 +2053,7 @@ % \end{itemize} % \end{ZRnote} % \begin{macrocode} -\if x\bxjs@engine +\if x\jsEngine \ifx\pdfpagewidth\@undefined \def\bxjs@Gm@driver{dvipdfm} \else @@ -1394,6 +2067,29 @@ \bxjs@InputIfFileExists{#1}{#2}{#3}% \edef\Gm@checkdrivers{\noexpand\Gm@setdriver{\bxjs@Gm@driver}}}% \fi +% \end{macrocode} +% \begin{ZRnote} +% |geometry| のドライバオプション指定。 +% |nopapersize| 指定時は、special命令出力を抑止するために +% ドライバを |none| にする。 +% そうでない場合は、クラスで指定したドライバオプションが引き継がれる +% ので何もしなくてよいが、例外として、ドライバが |dvipdfmx| の +% 時は、現状の |geometry| は |dvipdfm| を指定する必要がある。 +% \end{ZRnote} +% \begin{macrocode} +\ifbxjs@papersize + \ifx\bxjs@driver@given\bxjs@driver@@dvipdfmx + \PassOptionsToPackage{dvipdfm}{geometry} + \fi + \let\bxPapersizeSpecialDone=t +\else + \PassOptionsToPackage{driver=none}{geometry} +\fi +% \end{macrocode} +% \begin{ZRnote} +% ここで |geometry| を読み込む。 +% \end{ZRnote} +% \begin{macrocode} \edef\bxjs@nxt{% \noexpand\RequirePackage[\bxjs@layout@paper,\bxjs@layout]{geometry}} \bxjs@nxt \bxjs@revert @@ -1436,9 +2132,19 @@ % 脚注間に余分のアキが入らないように, % |\footnotesize| の支柱の高さ(行送りの0.7倍)に等しくします。 % +% \begin{ZRnote} +% ここは元々は +%\begin{verbatim} +%{\footnotesize\global\setlength\footnotesep{\baselineskip}} +%\end{verbatim} +% としていたが、そもそも |\global||\setlength|~ は\Pkg{calc}使用時には +% 有意義な動作をしない。 +% |\global||\footnotesep| だと所望の値が得られるが、 +% 同時に |\footnotesize| のフォントを固定させてしまうという副作用をもつ。 +% なので、実際の設定値を直接使うことにする。 +% \end{ZRnote} % \begin{macrocode} -{\footnotesize\global\setlength\footnotesep{\baselineskip}} -\setlength\footnotesep{0.7\footnotesep} +\footnotesep=11\p@? \footnotesep=0.7\footnotesep % \end{macrocode} % \end{macro} % @@ -1449,7 +2155,7 @@ % 和文の行送りを考えてもうちょっと大きくします。 % % \begin{macrocode} -\setlength{\skip\footins}{16\p@ \@plus 5\p@ \@minus 2\p@} +\setlength{\skip\footins}{16\p@? \@plus 5\p@? \@minus 2\p@?} % \end{macrocode} % \end{macro} % @@ -1575,9 +2281,9 @@ % |\intextsep| は本文の途中に出力されるフロートと本文との距離です。 % % \begin{macrocode} -\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@} -\setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@} -\setlength\intextsep {12\p@ \@plus 2\p@ \@minus 2\p@} +\setlength\floatsep {12\p@? \@plus 2\p@? \@minus 2\p@?} +\setlength\textfloatsep{20\p@? \@plus 2\p@? \@minus 4\p@?} +\setlength\intextsep {12\p@? \@plus 2\p@? \@minus 2\p@?} % \end{macrocode} % \end{macro} % \end{macro} @@ -1589,8 +2295,8 @@ % 二段組のときの段抜きのフロートについての値です。 % % \begin{macrocode} -\setlength\dblfloatsep {12\p@ \@plus 2\p@ \@minus 2\p@} -\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@} +\setlength\dblfloatsep {12\p@? \@plus 2\p@? \@minus 2\p@?} +\setlength\dbltextfloatsep{20\p@? \@plus 2\p@? \@minus 4\p@?} % \end{macrocode} % \end{macro} % \end{macro} @@ -1605,9 +2311,9 @@ % |\@fpsep| はフロート間に入ります。 % % \begin{macrocode} -\setlength\@fptop{0\p@ \@plus 1fil} -\setlength\@fpsep{8\p@ \@plus 2fil} -\setlength\@fpbot{0\p@ \@plus 1fil} +\setlength\@fptop{0\p@? \@plus 1fil} +\setlength\@fpsep{8\p@? \@plus 2fil} +\setlength\@fpbot{0\p@? \@plus 1fil} % \end{macrocode} % \end{macro} % \end{macro} @@ -1620,9 +2326,9 @@ % 段抜きフロートについての値です。 % % \begin{macrocode} -\setlength\@dblfptop{0\p@ \@plus 1fil} -\setlength\@dblfpsep{8\p@ \@plus 2fil} -\setlength\@dblfpbot{0\p@ \@plus 1fil} +\setlength\@dblfptop{0\p@? \@plus 1fil} +\setlength\@dblfpsep{8\p@? \@plus 2fil} +\setlength\@dblfpbot{0\p@? \@plus 1fil} % \end{macrocode} % \end{macro} % \end{macro} @@ -1771,9 +2477,12 @@ % \end{macrocode} % % 次は book の場合です。 +% [2011-05-10] しっぽ愛好家さん [qa:6370] のパッチを取り込ませていただきました +% (北見さん [qa:55896] のご指摘ありがとうございます)。 % % \begin{macrocode} %<*book|report> +\newif\if@omit@number \def\ps@headings{% \let\@oddfoot\@empty \let\@evenfoot\@empty @@ -1788,7 +2497,9 @@ \def\chaptermark##1{\markboth{% \ifnum \c@secnumdepth >\m@ne \if@mainmatter - \@chapapp\thechapter\@chappos\hskip1\jsZw + \if@omit@number\else + \@chapapp\thechapter\@chappos\hskip1\jsZw + \fi \fi \fi ##1}{}}% @@ -1921,16 +2632,16 @@ \begin{center} \mbox{} \\[1\jsZw] \large - {\maybeblue\hrule height0pt depth2pt\relax}\par + {\maybeblue\hrule height0\p@? depth2\p@?\relax}\par \smallskip \@title \smallskip - {\maybeblue\hrule height0pt depth2pt\relax}\par + {\maybeblue\hrule height0\p@? depth2\p@?\relax}\par \vfill {\small \@author}% \end{center} \else - \vskip 60\p@ + \vskip 60\p@? \begin{center}% {\LARGE \@title \par}% \vskip 3em% @@ -2223,6 +2934,7 @@ \unskip \@tempskipa #1\relax \hskip -\@tempskipa + \bxjs@ltj@inhibitglue \else \clubpenalty \@clubpenalty \everypar{\everyparhook}% @@ -2233,7 +2945,7 @@ \@afterheading \fi \if@slide - {\vskip-6pt\maybeblue\hrule height0pt depth1pt\vskip7pt\relax}% + {\vskip-6\p@?\maybeblue\hrule height0\p@? depth1\p@?\vskip7\p@?\relax}% \fi \par % 2000-12-18 \ignorespaces} @@ -2251,6 +2963,14 @@ \@xsect{#3}} % \end{macrocode} % +% \begin{ZRnote} +% 上記の定義中の |\bxjs@ltj@inhibitglue| は{Lua\TeX-ja}で +% 用いられるフック。 +% \begin{macrocode} +\let\bxjs@ltj@inhibitglue\@empty +% \end{macrocode} +% \end{ZRnote} +% % \paragraph{柱関係の命令} % % \begin{macro}{\chaptermark} @@ -2556,7 +3276,7 @@ \normalfont \ifnum \c@secnumdepth >-2\relax \huge\headfont \prepartname\thepart\postpartname - \par\vskip20\p@ + \par\vskip20\p@? \fi \Huge \headfont #2\par}% \@endpart} @@ -2627,7 +3347,9 @@ \plainifnotempty % 元: \thispagestyle{plain} \global\@topnum\z@ \if@english \@afterindentfalse \else \@afterindenttrue \fi - \secdef\@chapter\@schapter} + \secdef + {\@omit@numberfalse\@chapter}% + {\@omit@numbertrue\@schapter}} % \end{macrocode} % \end{macro} % @@ -2644,7 +3366,8 @@ \typeout{\@chapapp\thechapter\@chappos}% \addcontentsline{toc}{chapter}% {\protect\numberline - {\if@english\thechapter\else\@chapapp\thechapter\@chappos\fi}% +% %{\if@english\thechapter\else\@chapapp\thechapter\@chappos\fi}% + {\@chapapp\thechapter\@chappos}% #1}% \else\addcontentsline{toc}{chapter}{#1}\fi \else @@ -3118,7 +3841,7 @@ \begin{list}{}{% \listparindent=1\jsZw \itemindent=\listparindent - \rightmargin=0pt + \rightmargin=\z@ \leftmargin=5\jsZw}\item[]}{\end{list}\vspace{\baselineskip}} %</book|report> %<*article|slide> @@ -3264,11 +3987,14 @@ % これでは和文がゴシック体になってしまうので, % |\itshape| を削除しました。 % +% [2009-08-23] |\bfseries| を |\headfont| に直し, +% |\labelsep| を 1\,zw にし,括弧を全角にしました。 +% % \begin{macrocode} -\def\@begintheorem#1#2{\trivlist - \item[\hskip \labelsep{\bfseries #1\ #2}]} -\def\@opargbegintheorem#1#2#3{\trivlist - \item[\hskip \labelsep{\bfseries #1\ #2\ (#3)}]} +\def\@begintheorem#1#2{\trivlist\labelsep=1\jsZw + \item[\hskip \labelsep{\headfont #1\ #2}]} +\def\@opargbegintheorem#1#2#3{\trivlist\labelsep=1\jsZw + \item[\hskip \labelsep{\headfont #1\ #2(#3)}]} % \end{macrocode} % % \begin{environment}{titlepage} @@ -3330,7 +4056,7 @@ % |array| 環境の列間には |\arraycolsep| の2倍の幅の空きが入ります。 % % \begin{macrocode} -\setlength\arraycolsep{5\p@} +\setlength\arraycolsep{5\p@?} % \end{macrocode} % \end{macro} % @@ -3339,7 +4065,7 @@ % |tabular| 環境の列間には |\tabcolsep| の2倍の幅の空きが入ります。 % % \begin{macrocode} -\setlength\tabcolsep{6\p@} +\setlength\tabcolsep{6\p@?} % \end{macrocode} % \end{macro} % @@ -3396,7 +4122,7 @@ % |\fbox|,|\framebox| の罫線の幅です。 % % \begin{macrocode} -\setlength\fboxsep{3\p@} +\setlength\fboxsep{3\p@?} \setlength\fboxrule{.4\p@} % \end{macrocode} % \end{macro} @@ -3606,8 +4332,8 @@ % \begin{macrocode} \newlength\abovecaptionskip \newlength\belowcaptionskip -\setlength\abovecaptionskip{5\p@} % 元: 10\p@ -\setlength\belowcaptionskip{5\p@} % 元: 0\p@ +\setlength\abovecaptionskip{5\p@?} % 元: 10\p@ +\setlength\belowcaptionskip{5\p@?} % 元: 0\p@ % \end{macrocode} % \end{macro} % \end{macro} @@ -3810,9 +4536,18 @@ % % 目次を生成します。 % +% \begin{macro}{\js@tocl@width} +% +% [2013-12-30] |\prechaptername| などから見積もった目次のラベルの長さです。(by ts) +% % \begin{macrocode} +\newdimen\js@tocl@width \newcommand{\tableofcontents}{% %<*book|report> + \settowidth\js@tocl@width{\headfont\prechaptername\postchaptername}% + \settowidth\@tempdima{\headfont\appendixname}% + \ifdim\js@tocl@width<\@tempdima \setlength\js@tocl@width{\@tempdima}\fi + \ifdim\js@tocl@width<2zw \divide\js@tocl@width by 2 \advance\js@tocl@width 1zw\fi \if@twocolumn \@restonecoltrue\onecolumn \else @@ -3822,6 +4557,10 @@ \@mkboth{\contentsname}{}% %</book|report> %<*!book&!report> + \settowidth\js@tocl@width{\headfont\presectionname\postsectionname}% + \settowidth\@tempdima{\headfont\appendixname}% + \ifdim\js@tocl@width<\@tempdima\relax\setlength\js@tocl@width{\@tempdima}\fi + \ifdim\js@tocl@width<2zw \divide\js@tocl@width by 2 \advance\js@tocl@width 1zw\fi \section*{\contentsname}% \@mkboth{\contentsname}{\contentsname}% %</!book&!report> @@ -3829,7 +4568,7 @@ %<book|report> \if@restonecol\twocolumn\fi } % \end{macrocode} -% \end{macro} +% \end{macro}\end{macro} % % \begin{macro}{\l@part} % @@ -3840,7 +4579,7 @@ \ifnum \c@tocdepth >-2\relax %<!book&!report> \addpenalty\@secpenalty %<book|report> \addpenalty{-\@highpenalty}% - \addvspace{2.25em \@plus\p@}% + \addvspace{2.25em \@plus\p@?}% \begingroup \parindent \z@ % \@pnumwidth should be \@tocrmarg @@ -3863,12 +4602,15 @@ % % 章の目次です。|\@lnumwidth| を4.683zwに増やしました。 % +% [2013-12-30] |\@lnumwidth| を |\js@tocl@width| から +% 決めるようにしてみました。(by ts) +% % \begin{macrocode} %<*book|report> \newcommand*{\l@chapter}[2]{% \ifnum \c@tocdepth >\m@ne \addpenalty{-\@highpenalty}% - \addvspace{1.0em \@plus\p@} + \addvspace{1.0em \@plus\p@?} % \vskip 1.0em \@plus\p@ % book.clsでは↑がこうなっている \begingroup \parindent\z@ @@ -3876,7 +4618,8 @@ \rightskip\@tocrmarg \parfillskip-\rightskip \leavevmode\headfont - \if@english\setlength\@lnumwidth{5.5em}\else\setlength\@lnumwidth{4.683\jsZw}\fi +% % \if@english\setlength\@lnumwidth{5.5em}\else\setlength\@lnumwidth{4.683\jsZw}\fi + \setlength\@lnumwidth{\js@tocl@width}\advance\@lnumwidth 2.683\jsZw \advance\leftskip\@lnumwidth \hskip-\leftskip #1\nobreak\hfil\nobreak\hbox to\@pnumwidth{\hss#2}\par \penalty\@highpenalty @@ -3895,14 +4638,15 @@ \newcommand*{\l@section}[2]{% \ifnum \c@tocdepth >\z@ \addpenalty{\@secpenalty}% - \addvspace{1.0em \@plus\p@}% + \addvspace{1.0em \@plus\p@?}% \begingroup \parindent\z@ % \rightskip\@pnumwidth \rightskip\@tocrmarg \parfillskip-\rightskip \leavevmode\headfont - \setlength\@lnumwidth{4\jsZw}% 元1.5em [2003-03-02] +% % \setlength\@lnumwidth{4\jsZw}% 元1.5em [2003-03-02] + \setlength\@lnumwidth{\js@tocl@width}\advance\@lnumwidth 2\jsZw \advance\leftskip\@lnumwidth \hskip-\leftskip #1\nobreak\hfil\nobreak\hbox to\@pnumwidth{\hss#2}\par \endgroup @@ -3912,10 +4656,13 @@ % % インデントと幅はそれぞれ1.5em,2.3emでしたが, % 1zw,3.683zwに変えました。 -% % \begin{macrocode} -%<book|report>\newcommand*{\l@section}{\@dottedtocline{1}{1\jsZw}{3.683\jsZw}} +%<book|report> % \newcommand*{\l@section}{\@dottedtocline{1}{1\jsZw}{3.683\jsZw}} % \end{macrocode} +% +% [2013-12-30] 上のインデントは |\js@tocl@width| から決めるように +% しました。(by ts) +% % \end{macro} % % \begin{macro}{\l@subsection} @@ -3926,22 +4673,53 @@ % さらに下位レベルの目次項目の体裁です。 % あまり使ったことがありませんので,要修正かもしれません。 % +% [2013-12-30] ここも |\js@tocl@width| から決めるように +% してみました。(by ts) +% % \begin{macrocode} %<*!book&!report> % \newcommand*{\l@subsection} {\@dottedtocline{2}{1.5em}{2.3em}} -\newcommand*{\l@subsection} {\@dottedtocline{2}{1\jsZw}{3\jsZw}} % \newcommand*{\l@subsubsection}{\@dottedtocline{3}{3.8em}{3.2em}} -\newcommand*{\l@subsubsection}{\@dottedtocline{3}{2\jsZw}{3\jsZw}} % \newcommand*{\l@paragraph} {\@dottedtocline{4}{7.0em}{4.1em}} -\newcommand*{\l@paragraph} {\@dottedtocline{4}{3\jsZw}{3\jsZw}} % \newcommand*{\l@subparagraph} {\@dottedtocline{5}{10em}{5em}} -\newcommand*{\l@subparagraph} {\@dottedtocline{5}{4\jsZw}{3\jsZw}} +% +% \newcommand*{\l@subsubsection}{\@dottedtocline{3}{2\jsZw}{3\jsZw}} +% \newcommand*{\l@paragraph} {\@dottedtocline{4}{3\jsZw}{3\jsZw}} +% \newcommand*{\l@subparagraph} {\@dottedtocline{5}{4\jsZw}{3\jsZw}} +% +\newcommand*{\l@subsection}{% + \@tempdima\js@tocl@width \advance\@tempdima -1\jsZw + \@dottedtocline{2}{\@tempdima}{3\jsZw}} +\newcommand*{\l@subsubsection}{% + \@tempdima\js@tocl@width \advance\@tempdima 0\jsZw + \@dottedtocline{3}{\@tempdima}{4\jsZw}} +\newcommand*{\l@paragraph}{% + \@tempdima\js@tocl@width \advance\@tempdima 1\jsZw + \@dottedtocline{4}{\@tempdima}{5\jsZw}} +\newcommand*{\l@subparagraph}{% + \@tempdima\js@tocl@width \advance\@tempdima 2\jsZw + \@dottedtocline{5}{\@tempdima}{6\jsZw}} %</!book&!report> %<*book|report> -\newcommand*{\l@subsection} {\@dottedtocline{2}{3.8em}{3.2em}} -\newcommand*{\l@subsubsection}{\@dottedtocline{3}{7.0em}{4.1em}} -\newcommand*{\l@paragraph} {\@dottedtocline{4}{10em}{5em}} -\newcommand*{\l@subparagraph} {\@dottedtocline{5}{12em}{6em}} +% \newcommand*{\l@subsection} {\@dottedtocline{2}{3.8em}{3.2em}} +% \newcommand*{\l@subsubsection}{\@dottedtocline{3}{7.0em}{4.1em}} +% \newcommand*{\l@paragraph} {\@dottedtocline{4}{10em}{5em}} +% \newcommand*{\l@subparagraph} {\@dottedtocline{5}{12em}{6em}} +\newcommand*{\l@section}{% + \@tempdima\js@tocl@width \advance\@tempdima -1\jsZw + \@dottedtocline{1}{\@tempdima}{3.683\jsZw}} +\newcommand*{\l@subsection}{% + \@tempdima\js@tocl@width \advance\@tempdima 2.683\jsZw + \@dottedtocline{2}{\@tempdima}{3.5\jsZw}} +\newcommand*{\l@subsubsection}{% + \@tempdima\js@tocl@width \advance\@tempdima 6.183\jsZw + \@dottedtocline{3}{\@tempdima}{4.5\jsZw}} +\newcommand*{\l@paragraph}{% + \@tempdima\js@tocl@width \advance\@tempdima 10.683\jsZw + \@dottedtocline{4}{\@tempdima}{5.5\jsZw}} +\newcommand*{\l@subparagraph}{% + \@tempdima\js@tocl@width \advance\@tempdima 16.183\jsZw + \@dottedtocline{5}{\@tempdima}{6.5\jsZw}} %</book|report> % \end{macrocode} % \end{macro} @@ -3973,7 +4751,7 @@ % % \begin{macrocode} \def\@dottedtocline#1#2#3#4#5{\ifnum #1>\c@tocdepth \else - \vskip \z@ \@plus.2\p@ + \vskip \z@ \@plus.2\p@? {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip \parindent #2\relax\@afterindenttrue \interlinepenalty\@M @@ -4211,7 +4989,7 @@ %<!book&!report> \@mkboth{\indexname}{\indexname}% \plainifnotempty % \thispagestyle{plain} \parindent\z@ - \parskip\z@ \@plus .3\p@\relax + \parskip\z@ \@plus .3\p@?\relax \let\item\@idxitem \raggedright \footnotesize\narrowbaselines @@ -4246,7 +5024,7 @@ % 索引で先頭文字ごとのブロックの間に入るスペースです。 % % \begin{macrocode} -\newcommand{\indexspace}{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax} +\newcommand{\indexspace}{\par \vskip 10\p@? \@plus5\p@? \@minus3\p@?\relax} % \end{macrocode} % \end{macro} % @@ -4294,12 +5072,18 @@ % % [2002-04-09] インプリメントの仕方を変えたため消しました。 % +% [2013-04-23] 新しい\pTeX では脚注番号のまわりにスペースが入りすぎることを防ぐため, +% 北川さんのパッチ [qa:57090] を取り込みました。 +% +% [2013-05-14] plcore.ltx に倣った形に書き直しました(Thanks: 北川さん)。 +% +% \begin{ZRnote} +% {\pTeX}依存のコードなので、{\pTeX}連携モジュールに移動。 +% \end{ZRnote} % \begin{macrocode} -% \def\@makefnmark{\hbox{\@textsuperscript{\normalfont -% \ifx\@thefnmark\@empty\else -% \textasteriskcentered -% \fi -% \@thefnmark}}} +%\renewcommand\@makefnmark{\hbox{}\hbox{% +% \ifydir \@textsuperscript{\normalfont\@thefnmark}% +% \else\hbox{\yoko\@textsuperscript{\normalfont\@thefnmark}}\fi}\hbox{}} % \end{macrocode} % \end{macro} % @@ -4329,9 +5113,9 @@ % % \begin{macrocode} \renewcommand{\footnoterule}{% - \kern-3\p@ + \kern-3\p@? \hrule width .4\columnwidth - \kern 2.6\p@} + \kern 2.6\p@?} % \end{macrocode} % \end{macro} % @@ -4422,29 +5206,49 @@ % % 段落頭のかぎかっこなどを見かけ1字半下げから全角1字下げに直します。 % +% \begin{ZRnote} +% \begin{macro}{\jsInhibitGlueAtParTop} +% 「段落頭の括弧の空き補正」の処理を |\jsInhibitGlueAtParTop| +% という命令にして、これを再定義可能にした。 +% \begin{macrocode} +\let\jsInhibitGlueAtParTop\@empty +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\everyparhook} +% 全ての段落の冒頭で実行されるフック。 +% これの初期値を先述の |\jsInhibitGlueAtParTop| とする。 +% \begin{macrocode} +\def\everyparhook{\jsInhibitGlueAtParTop} +\AtBeginDocument{\everypar{\everyparhook}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@inhibitglue} +% JSクラスでの |\jsInhibitGlueAtParTop| の実装。 % \begin{macrocode} \def\@inhibitglue{% \futurelet\@let@token\@@inhibitglue} \def\@@inhibitglue{% - \ifx\@let@token「 + \ifx\@let@token「% \jsInhibitGlue \else - \ifx\@let@token( + \ifx\@let@token(% \jsInhibitGlue \else - \ifx\@let@token『 + \ifx\@let@token『% \jsInhibitGlue \else - \ifx\@let@token[ + \ifx\@let@token[% \jsInhibitGlue \fi \fi \fi \fi} -\def\everyparhook{\jsInhibitGlueAtParTop} -\let\jsInhibitGlueAtParTop\@inhibitglue -\AtBeginDocument{\everypar{\everyparhook}} % \end{macrocode} +% \end{macro} +% +% \end{ZRnote} % % これだけではいけないようです。あちこちに |\everypar| を初期化するコマンドが % 隠されていました。 @@ -4504,7 +5308,9 @@ \else \clubpenalty \@clubpenalty \everypar{\everyparhook}% - \fi\everyparhook}% + \fi + \bxjs@ltj@inhibitglue + \everyparhook}% \if@noitemarg \@noitemargfalse \if@nmbrlist @@ -4629,7 +5435,7 @@ % \begin{macro}{\tablename} % \begin{macrocode} \newcommand{\figurename}{\if@english Fig.~\else 図\fi} -\newcommand{\tablename}{\if@english Table.~\else 表\fi} +\newcommand{\tablename}{\if@english Table~\else 表\fi} % \end{macrocode} % \end{macro} % \end{macro} @@ -4637,7 +5443,8 @@ % \begin{macro}{\appendixname} % \begin{macro}{\abstractname} % \begin{macrocode} -\newcommand{\appendixname}{\if@english Appendix~\else 付録\fi} +% \newcommand{\appendixname}{\if@english Appendix~\else 付録\fi} +\newcommand{\appendixname}{\if@english \else 付録\fi} %<!book&!report>\newcommand{\abstractname}{\if@english Abstract\else 概要\fi} % \end{macrocode} % \end{macro} @@ -4651,26 +5458,59 @@ % % \begin{macro}{\today} % \begin{macrocode} +\@tempswafalse +\if p\jsEngine \@tempswatrue \fi +\if n\jsEngine \@tempswatrue \fi +\if@tempswa \expandafter\@firstoftwo +\else \expandafter\@secondoftwo +\fi +{% +% 欧文8bitTeXの場合 +\newif\ifjsSeireki \jsSeirekitrue +\def\西暦{\jsSeirekitrue} +\def\和暦{\jsSeirekifalse} +\def\Seireki{\jsSeirekitrue} +\def\Wareki{\jsSeirekifalse} +\def\bxjs@if@use@seireki{% + \ifjsSeireki \expandafter\@firstoftwo + \else \expandafter\@secondoftwo \fi} +}{% \newif\if西暦 \西暦true \def\西暦{\西暦true} \def\和暦{\西暦false} +\def\Seireki{\西暦true} +\def\Wareki{\西暦false} +\def\bxjs@if@use@seireki{% + \if西暦 \expandafter\@firstoftwo + \else \expandafter\@secondoftwo \fi} +} +% \bxjs@unxp +\let\bxjs@unxp\@firstofone +\bxjs@test@engine\unexpanded{\let\bxjs@unxp\unexpanded} +% \bxjs@iai +\if \if p\jsEngine T\else\if n\jsEngine T\else F\fi\fi T + \def\bxjs@iai{\noexpand~} +\else \def\bxjs@iai{} +\fi +% \heisei \newcount\heisei \heisei\year \advance\heisei-1988\relax -\def\today{% +% \today +\edef\today{% \if@english \ifcase\month\or January\or February\or March\or April\or May\or June\or July\or August\or September\or October\or November\or December\fi \space\number\day, \number\year \else - \if西暦 - \number\year 年 - \number\month 月 - \number\day 日 - \else - 平成\number\heisei 年 - \number\month 月 - \number\day 日 - \fi + \noexpand\bxjs@if@use@seireki{% + \number\year\bxjs@iai\bxjs@unxp{年}% + \bxjs@iai\number\month\bxjs@iai\bxjs@unxp{月}% + \bxjs@iai\number\day\bxjs@iai\bxjs@unxp{日}% + }{% + \bxjs@unxp{平成}\bxjs@iai\number\heisei\bxjs@iai\bxjs@unxp{年}% + \bxjs@iai\number\month\bxjs@iai\bxjs@unxp{月}% + \bxjs@iai\number\day\bxjs@iai\bxjs@unxp{日}% + }% \fi} % \end{macrocode} % \end{macro} @@ -4701,61 +5541,98 @@ \raggedbottom \fi %<*slide> -% \renewcommand\kanjifamilydefault{\gtdefault} \renewcommand\familydefault{\sfdefault} \raggedright -% \xkanjiskip=0.1em\relax %</slide> % \end{macrocode} -%\begin{ZRnote} -%{(u)\pTeX} 上で動作している場合は、{\pTeX} 用の -%連携モジュールを読み込む。 -%最後に日本語文字のカテゴリコードを元に戻す。 -%\end{ZRnote} +% +% \paragraph{BXJS独自の追加処理 ☆} +% +% \begin{ZRnote} +% +% 和文ドライバのファイルを読み込む。 % \begin{macrocode} -\ifbxjs@ptexmodule - \input{bxjsptex.def} +\catcode`\?=12 +\ifx\bxjs@jadriver\relax\else +\input{bxjsja-\bxjs@jadriver.def} \fi +% \end{macrocode} +% +% 最後に日本語文字のカテゴリコードを元に戻す。 +% \begin{macrocode} \bxjs@restore@jltrcc -%</!ptex> +%</!drvminimal&!drvstandard> % \end{macrocode} % +% \end{ZRnote} +% % 以上です。 % -%^^A-------------------------------------------------------- +%^^A//////////////////////////////////////////////////////// % \clearpage % \appendix +%^^A======================================================== % \section{連携モジュールの仕様 ☆} % +% 次の命令がBXJSクラス本体と和文モジュールの連携のために +% 用意されている。 +% このうち、★印を付けたものは“書込”が許されるものである。 +% % \begin{itemize} -% \item 次の命令がBXJSクラス側で定義される。 -% \begin{itemize} -% \item |\jsDocClass| \zrNote{文字トークンの let}\quad -% 文書クラスの種類を示し、次のいずれかと一致する -% (|\if| で判定可能)。 -% \begin{quote}\begin{tabular}{l@{\qquad}l} -% |\jsArticle| & |bxjsarticle| クラス\\ -% |\jsBook| & |bxjsbook| クラス\\ -% |\jsReport| & |bxjsreport| クラス\\ -% |\jsSlide| & |bxjsslide| クラス -% \end{tabular}\end{quote} -% \item |\jsUnusualPtSize| \zrNote{整数定数を表す文字列のマクロ}\quad -% 基底フォントサイズが |10pt|、|11pt|、|12pt| のいずれでもない -% 場合の |\@ptsize| の値。 -% (|\@ptsize| 自体があまり有用でないと思われる。) -% \item |\jsScale| \zrNote{実数を表す文字列のマクロ}\quad -% 和文フォントサイズの要求サイズに対するスケール。 -% クラスオプション |scale| で指定される。 -% (既定値は0.924715。) -% \item |\jsInhibitGlue| \zrNote{マクロ}\quad -% |\inhibitglue| という命令が定義されていればそれを実行し、 -% そうでなければ何もしない。 -% JSクラスで |\inhibitglue| を用いている箇所は -% 全て |\jsInhibitGlue| に置き換えられている。 -% 従って、|\inhibitglue| は未定義でも動作するが、その実装が -% ある場合はBXJSクラスはそれを活用する。 -% \end{itemize} -% \item 「現在の全角幅」を表す長さ変数 |\jsZw| が用意されていて、 +% \item |\jsDocClass| \zrNote{文字トークンの let}\quad +% 文書クラスの種類を示し、次のいずれかと一致する +% (|\if| で判定可能)。 +% \begin{quote}\begin{tabular}{l@{\qquad}l} +% |\jsArticle| & |bxjsarticle| クラス\\ +% |\jsBook| & |bxjsbook| クラス\\ +% |\jsReport| & |bxjsreport| クラス\\ +% |\jsSlide| & |bxjsslide| クラス +% \end{tabular}\end{quote} +% \item |\jsEngine| \zrNote{文字トークンの let}\quad +% 使用されているエンジンの種別。 +% (|\if| で判定可能)。 +% \begin{quote}\begin{tabular}{l@{\qquad}l} +% |p| & pdf{\TeX}(DVIモードも含む)\\ +% |l| & Lua{\TeX}(〃)\\ +% |x| & {\XeTeX}\\ +% |j| & {\pTeX}または{\upTeX}\\ +% |n| & 以上の何れでもない +% \end{tabular}\end{quote} +% \item |\ifjsWithupTeX| \zrNote{スイッチ}\quad +% 使用されているエンジンが{\upTeX}であるか。 +% \item |\ifjsWitheTeX| \zrNote{スイッチ}\quad +% 使用されているエンジンが{\eTeX}拡張であるか。 +% \item |\ifjsInPdfMode| \zrNote{スイッチ}\quad +% 使用されているエンジンが(pdf{\TeX}・Lua{\TeX}の) +% PDFモードであるか。 +% \item |\jsUnusualPtSize| \zrNote{整数定数を表す文字列のマクロ}\quad +% 基底フォントサイズが |10pt|、|11pt|、|12pt| のいずれでもない +% 場合の |\@ptsize| の値。 +% (|\@ptsize| 自体があまり有用でないと思われる。) +% \item |\jsScale| \zrNote{実数を表す文字列のマクロ}\quad +% 和文フォントサイズの要求サイズに対するスケール。 +% クラスオプション |scale| で指定される。 +% (既定値は0.924715。) +% \item |\jsJaFont| \zrNote{マクロ}\quad +% 和文フォント設定を表す文字列。 +% クラスオプション |jafont| で指定された値。 +% \item |\jsJaParam| \zrNote{マクロ}\quad +% 和文モジュールに渡すパラメタを表す文字列。 +% この値が何を表すかは決まってなくて、各々の和文モジュールが +% 独自に解釈する。 +% クラスオプション |japaram| で指定された値。 +% \item |\jsInhibitGlue| \zrNote{マクロ}\quad +% |\inhibitglue| という命令が定義されていればそれを実行し、 +% そうでなければ何もしない。 +% JSクラスで |\inhibitglue| を用いている箇所は +% 全て |\jsInhibitGlue| に置き換えられている。 +% 従って、|\inhibitglue| は未定義でも動作するが、その実装が +% ある場合はBXJSクラスはそれを活用する。 +% \item |\jsInhibitGlueAtParTop| \zrNote{マクロ}★\quad +% 段落先頭におけるカギ括弧の位置調整を行うマクロ。 +% 全ての段落先頭で呼び出される。 +% \item |\jsZw| \zrNote{内部寸法値}\quad +% 「現在の全角幅」を表す変数。 % JSクラスでzw単位で設定されている長さパラメタはこの変数を単位と % して設定されている。 % この変数の値は実際に用いられる「和文フォント」のメトリックに @@ -4767,37 +5644,85 @@ % 和文フォントサイズを調整する必要がある。 % ほとんどの場合、和文フォントをNFSSで規定する際に |\jsScale| % の値をスケール値として与えれば上手くいく。 -% \item フォントサイズが変更された時には |\jsResetDimen| という -% マクロが呼び出される。 -% 和文コンポーネントでフォントサイズに依存するパラメタを -% ここで設定することができる。 +% \item |\jsFontSizeChanged| \zrNote{マクロ}\quad +% フォントサイズが変更された時に必ず呼び出されるマクロ。 +% \item |\jsResetDimen| \zrNote{マクロ}★\quad +% 上記 |\jsFontSizeChanged| の中で呼び出される、 +% ユーザ(和文モジュール)用のフック。 +% フォントサイズに依存するパラメタをここで設定することができる。 % 既定の定義は空。 % \end{itemize} % -% \section{{\pTeX}用の連携モジュール ☆} +%^^A======================================================== +% \section{和文ドライバ:minimal ☆} +% +% |jadriver| の指定が無い場合に適用されるドライバ。 +% また、standard ドライバはまずこのドライバファイルを +% 読み込んでいる。 +% +% このドライバでは、各エンジンについての必要最低限の処理だけを +% 行っている。 +% 日本語処理のためのパッケージ(xeCJK や Lua{\TeX}-ja 等) +% を自分で読み込んで適切な設定を行うという使用状況を想定している。 +% +% ただし、(u){\pTeX}エンジンについては例外で、和文処理機構の +% 選択の余地がないため、このドライバにおいて、 +% 「JSクラスと同等の指定」を完成させるためのコードを記述する。 +% +% \begin{macrocode} +%<*drvminimal> +%% このファイルは日本語文字を含みます +% \end{macrocode} +% +% \begin{macro}{\DeclareJaTextFontCommand} +% 和文書体のための、「余計なこと」をしない |\DeclareTextFontCommand|。 +% \begin{macrocode} +\def\DeclareJaTextFontCommand#1#2{% + \DeclareRobustCommand#1[1]{% + \relax + \ifmmode \expandafter\nfss@text \fi + {#2##1}}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bxjs@if@sf@default} +% |\familydefault| の定義が“|\sfdefault|”である場合に +% 引数のコードを実行する。 +% \begin{macrocode} +\long\def\bxjs@@CSsfdefault{\sfdefault}% +\@onlypreamble\bxjs@if@sf@default +\def\bxjs@if@sf@default#1{% + \ifx\familydefault\bxjs@@CSsfdefault#1\fi + \AtBeginDocument{% + \ifx\familydefault\bxjs@@CSsfdefault#1\fi}% +} +% \end{macrocode} +% \end{macro} +% +% +% \subsection{(u){\pTeX}用の設定} +% +% \begin{macrocode} +\ifx j\jsEngine +% \end{macrocode} % -% ここでは、u{\pTeX}用の連携モジュールのコードを示す。 % 基本的に、JSクラスのコードの中で、「和文コンポーネントの管轄」 % としてBXJSクラスで除外されている部分に相当するが、 % 若干の変更が加えられている。 -% このモジュールは、BXJSクラスのオプションとして |platex| -% または |uplatex| を指定した時に自動的に読み込まれる。 -% オプションと実際のエンジンが一致しているかは -% 既に検査されている。 % % \paragraph{エンジン依存の定義} % -% 最初にエンジンに依存する定義を行う。 -% |\if@jsc@uplatex| はBXJSにおいて定義されているスイッチで、 +% 最初にエンジン({\pTeX}かu{\pTeX}か)に依存する定義を行う。 +% |\ifjsWithupTeX| はBXJSにおいて定義されているスイッチで、 % エンジンがu{\pTeX}であるかを表す。 % % |\jsc@JYn| および |\jsc@JTn| は標準の和文横書きおよび縦書き用 % エンコーディングを表す。 % \begin{macrocode} -%<*ptex> -\edef\jsc@JYn{\if@jsc@uplatex JY2\else JY1\fi} -\edef\jsc@JTn{\if@jsc@uplatex JT2\else JT1\fi} -\edef\jsc@pfx@{\if@jsc@uplatex u\fi} +\edef\jsc@JYn{\ifjsWithupTeX JY2\else JY1\fi} +\edef\jsc@JTn{\ifjsWithupTeX JT2\else JT1\fi} +\edef\jsc@pfx@{\ifjsWithupTeX u\fi} % \end{macrocode} % % |\bxjs@declarefontshape| は標準の和文フォント宣言である。 @@ -4808,12 +5733,12 @@ % JSクラスの |uplatex| オプション指定時の定義と同じである。 % \begin{macrocode} \@onlypreamble\bxjs@declarefontshape -\if@jsc@uplatex +\ifjsWithupTeX \def\bxjs@declarefontshape{% -\DeclareFontShape{JY2}{mc}{m}{n}{<->s*[\bxjs@scale]upjisr-h}{}% -\DeclareFontShape{JY2}{gt}{m}{n}{<->s*[\bxjs@scale]upjisg-h}{}% -\DeclareFontShape{JT2}{mc}{m}{n}{<->s*[\bxjs@scale]upjisr-v}{}% -\DeclareFontShape{JT2}{gt}{m}{n}{<->s*[\bxjs@scale]upjisg-v}{}% +\DeclareFontShape{JY2}{mc}{m}{n}{<->s*[\bxjs@scale]upjpnrm-h}{}% +\DeclareFontShape{JY2}{gt}{m}{n}{<->s*[\bxjs@scale]upjpngt-h}{}% +\DeclareFontShape{JT2}{mc}{m}{n}{<->s*[\bxjs@scale]upjpnrm-v}{}% +\DeclareFontShape{JT2}{gt}{m}{n}{<->s*[\bxjs@scale]upjpngt-v}{}% } \def\bxjs@sizereference{upjisr-h} % \end{macrocode} @@ -4833,11 +5758,15 @@ % \end{macrocode} % % 既に使用されている標準和文フォント定義がもしあれば取り消す。 -% (BXJSクラスの中から呼ばれている場合は不要のはずである。) - % \begin{macrocode} +% \begin{macrocode} +\def\bxjs@tmpa#1/#2/#3/#4/#5\relax{% + \def\bxjs@y{#5}} +\expandafter\expandafter\expandafter\bxjs@tmpa + \expandafter\string\the\jfont\relax \@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} + {\expandafter\let\csname\bxjs@x/10\endcsname=\@undefined + \expandafter\let\csname\bxjs@x/\bxjs@y\endcsname=\@undefined} % \end{macrocode} % % \paragraph{和文フォントスケールの補正} @@ -4907,8 +5836,15 @@ \DeclareRobustCommand\ttfamily {\not@math@alphabet\ttfamily\mathtt \romanfamily\ttdefault\kanjifamily\gtdefault\selectfont} -\def\textmc#1{\relax\ifmmode\hbox\fi{\mcfamily #1}} -\def\textgt#1{\relax\ifmmode\hbox\fi{\gtfamily #1}} +\DeclareJaTextFontCommand{\textmc}{\mcfamily} +\DeclareJaTextFontCommand{\textgt}{\gtfamily} +\bxjs@if@sf@default{% + \renewcommand\kanjifamilydefault{\gtdefault}} +% \end{macrocode} +% +% 念のため。 +% \begin{macrocode} +\selectfont % \end{macrocode} % % \paragraph{パラメタの設定} @@ -4917,6 +5853,7 @@ \prebreakpenalty\jis"2147=10000 \postbreakpenalty\jis"2148=10000 \prebreakpenalty\jis"2149=10000 +\inhibitxspcode`!=1 \inhibitxspcode`〒=2 \xspcode`+=3 \xspcode`\%=3 @@ -4926,12 +5863,771 @@ % \begin{macrocode} \@tempcnta="80 \@whilenum\@tempcnta<"100 \do{% \xspcode\@tempcnta=3\advance\@tempcnta\@ne} -%</ptex> % \end{macrocode} % -% 以上で終わり。 +% 新版の{\pTeX}で脚注番号の周囲の空きが過大になる現象への対処。 +% \begin{macrocode} +%\renewcommand\@makefnmark{\hbox{}\hbox{% +% \ifydir \@textsuperscript{\normalfont\@thefnmark}% +% \else\hbox{\yoko\@textsuperscript{\normalfont\@thefnmark}}\fi}\hbox{}} +% \end{macrocode} +% +% |\jsInhibitGlueAtParTop| の定義。 +% \begin{macrocode} +\let\jsInhibitGlueAtParTop\@inhibitglue +% \end{macrocode} +% % |\jsResetDimen| は空のままでよい。 % +% \subsection{pdf{\TeX}用の処理} +% +% \begin{macrocode} +\else\ifx p\jsEngine +% \end{macrocode} +% +% +% \begin{macrocode} +\@onlypreamble\bxjs@cjk@loaded +\def\bxjs@cjk@loaded{% + \def\@footnotemark{% + \leavevmode + \ifhmode + \edef\@x@sf{\the\spacefactor}% + \ifdim\lastkern>\z@\ifdim\lastkern<5sp\relax + \unkern\unkern + \ifdim\lastskip>\z@ \unskip \fi + \fi\fi + \nobreak + \fi + \@makefnmark + \ifhmode \spacefactor\@x@sf \fi + \relax}% + \let\bxjs@cjk@loaded\relax +} +\AtBeginDocument{% + \@ifpackageloaded{CJK}{% + \bxjs@cjk@loaded + }{}% +} +% \end{macrocode} +% +% 以上で終わり。 +% \begin{macrocode} +\fi\fi +%</drvminimal> +% \end{macrocode} +% +%^^A======================================================== +% \section{和文ドライバ:standard ☆} +% +% 標準のドライバ。 +% +% \begin{itemize} +% \item |\rmfamily|/|\sffamily|/|\ttfamily| での +% 和文ファミリ連動 +% \item |\mcfamily|/|\gtfamily| +% \item |\textmc|/|\textgt| +% \item |\zw| +% \item |\jQ|/|\jH| +% \item |\trueQ|/|\trueH|/|\ascQ| +% \item |\setkanjiskip|/|\getkanjiskip| +% \item |\setxkanjiskip|/|\getxkanjiskip| +% \end{itemize} +% +% \paragraph{和文フォント指定の扱い} +% +% |standard| 和文ドライバでは |\jsJaFont| の値を和文フォントの +% “プリセット”の指定として用いる。 +% プリセットの値は、{\TeX} Liveの |kanji-config-updmap| コマンドで +% 使う“ファミリ”と同じにすることを想定する。 +% 特別な値として、|auto| は |kanji-config-updmap| で現在指定 +% されているファミリを表す。 +% +%^^A---------------- +% \subsection{共通処理(1)} +% +% まず minimal ドライバを読み込む。 +% \begin{macrocode} +%<*drvstandard> +\input{bxjsja-minimal.def} +% \end{macrocode} +% +% \paragraph{共通命令の実装} +% +% |\jQ| 等の「単位」系の共通命令を実装する。 +% まず{$\varepsilon$-\TeX}拡張が使えるか検査する。 +% \begin{macrocode} +\ifjsWitheTeX +% \end{macrocode} +% 使える場合は、「|\dimexpr|外部寸法表記|\relax|」の形式 +% (これは内部値なので単位として使える)で各命令定義する。 +% +% \begin{macro}{\jQ} +% \begin{macro}{\jH} +% |\jQ| と |\jH| はともに0.25\,mmに等しい。 +% \begin{macrocode} + \@tempdima=0.25mm + \protected\edef\jQ{\dimexpr\the\@tempdima\relax} + \let\jH\jQ +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\trueQ} +% \begin{macro}{\trueH} +% |\trueQ| と |\trueH| はともに0.25\,true\,mmに等しい。 +% \begin{macrocode} + \ifbxjs@mag + \@tempdima=2.5mm + \@tempdimb=\jsBaseFontSize\relax + \edef\bxjs@tmpa{\strip@pt\@tempdimb}% + \bxjs@invscale\@tempdima\bxjs@tmpa + \edef\trueQ{\dimexpr\the\@tempdima\relax} + \else \let\trueQ\jQ + \fi + \let\trueH\trueQ +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\ascQ} +% |\ascQ| は |\trueQ| を和文スケール値で割った値。 +% 例えば、|\fontsize{12\ascQ}{16\trueH}| とすると、 +% 和文が12Qになる。 +% \begin{macrocode} + \@tempdima\trueQ \bxjs@invscale\@tempdima\jsScale + \edef\ascQ{\dimexpr\the\@tempdima\relax} +\fi +% \end{macrocode} +% \end{macro} +% +% 続いて、和文間空白・和欧文間空白関連の命令を実装する。 +% (エンジン依存のコード。) +% +% \begin{macro}{\bxjs@kanjiskip} +% 和文間空白の量を表すテキスト。 +% \begin{macrocode} +\def\bxjs@kanjiskip{0pt} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\setkanjiskip} +% 和文間空白の量を設定する。 +% \begin{macrocode} +\newcommand*\setkanjiskip[1]{% + \edef\bxjs@kanjiskip{#1}% + \bxjs@reset@kanjiskip} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\getkanjiskip} +% 和文間空白の量を表すテキストに展開する。 +% \begin{macrocode} +\newcommand*\getkanjiskip{% + \bxjs@kanjiskip} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ifbxjs@kanjiskip@enabled} +% 和文間空白の挿入が有効か。 +% ただし{\pTeX}では自身の |\(no)autospacing| での制御を +% 用いるのでこの変数は常に真とする。 +% \begin{macrocode} +\newif\ifbxjs@kanjiskip@enabled \bxjs@kanjiskip@enabledtrue +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bxjs@enable@kanjiskip} +% \begin{macro}{\bxjs@disable@kanjiskip} +% 和文間空白の挿入を有効/無効にする。({\pTeX}以外) +% \begin{macrocode} +\bxjs@robust@def\bxjs@enable@kanjiskip{% + \bxjs@kanjiskip@enabledtrue + \bxjs@reset@kanjiskip} +\bxjs@robust@def\bxjs@disable@kanjiskip{% + \bxjs@kanjiskip@enabledfalse + \bxjs@reset@kanjiskip} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\bxjs@reset@kanjiskip} +% 現在の和文間空白の設定を実際にエンジンに反映させる。 +% \begin{macrocode} +\bxjs@robust@def\bxjs@reset@kanjiskip{% + \ifbxjs@kanjiskip@enabled + \setlength{\@tempskipa}{\bxjs@kanjiskip}% + \else \@tempskipa\z@ + \fi + \bxjs@apply@kanjiskip} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bxjs@xkanjiskip} +% \begin{macro}{\setxkanjiskip} +% \begin{macro}{\getxkanjiskip} +% \begin{macro}{\ifbxjs@xkanjiskip@enabled} +% \begin{macro}{\bxjs@enable@xkanjiskip} +% \begin{macro}{\bxjs@disable@xkanjiskip} +% \begin{macro}{\bxjs@reset@xkanjiskip} +% 和欧文間空白について同様のものを用意する。 +% \begin{macrocode} +\def\bxjs@xkanjiskip{0pt} +\newcommand*\setxkanjiskip[1]{% + \edef\bxjs@xkanjiskip{#1}% + \bxjs@reset@xkanjiskip} +\newcommand*\getxkanjiskip{% + \bxjs@xkanjiskip} +\newif\ifbxjs@xkanjiskip@enabled \bxjs@xkanjiskip@enabledtrue +\bxjs@robust@def\bxjs@enable@xkanjiskip{% + \bxjs@xkanjiskip@enabledtrue + \bxjs@reset@xkanjiskip} +\bxjs@robust@def\bxjs@disable@xkanjiskip{% + \bxjs@xkanjiskip@enabledfalse + \bxjs@reset@xkanjiskip} +\bxjs@robust@def\bxjs@reset@xkanjiskip{% + \ifbxjs@xkanjiskip@enabled + \setlength{\@tempskipa}{\bxjs@xkanjiskip}% + \else \@tempskipa\z@ + \fi + \bxjs@apply@xkanjiskip} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% |\jsResetDimen| を用いて、フォントサイズが変更された時に +% 空白の量が追随するようにする。 +% \begin{macrocode} +\g@addto@macro\jsResetDimen{% + \bxjs@reset@kanjiskip + \bxjs@reset@xkanjiskip} +\let\bxjs@apply@kanjiskip\relax +\let\bxjs@apply@xkanjiskip\relax +% \end{macrocode} +% +% \paragraph{和文フォント指定の扱い} +% +% \begin{macro}{\bxjs@adjust@jafont} +% ムニャムニャ…。 +% \begin{macrocode} +\@onlypreamble\bxjs@adjust@jafont +\def\bxjs@adjust@jafont#1{% + \ifx\jsJaFont\bxjs@@auto + \bxjs@get@kanjiEmbed + \ifx\bxjs@kanjiEmbed\relax + \let\bxjs@tmpa\@empty + \else + \let\bxjs@tmpa\bxjs@kanjiEmbed + \fi + \else + \let\bxjs@tmpa\jsJaFont + \fi + \if f#1\ifx\bxjs@tmpa\bxjs@@noEmbed + \ClassWarning\bxjs@clsname + {Option 'jafont=noEmbed' is ignored, because no-embed\MessageBreak + is not available}% + \let\bxjs@tmpa\@empty + \fi\fi +} +\def\bxjs@@auto{auto} +\def\bxjs@@noEmbed{noEmbed} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bxjs@kanjiEmbed} +% 現在の |updmap| の |kanjiEmbed| パラメタの値。 +% |\bxjs@get@kanjiEmbed| により設定される。 +% \begin{macrocode} +\let\bxjs@kanjiEmbed\relax +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bxjs@get@kanjiEmbed} +% 現在の |updmap| の |kanjiEmbed| パラメタの値を取得する。 +% \begin{macrocode} +\@onlypreamble\bxjs@get@kanjiEmbed +\def\bxjs@get@kanjiEmbed{% + \begingroup\setbox\z@=\hbox{% + \global\let\bxjs@g@tmpa\relax + \endlinechar\m@ne + \let\do\@makeother\dospecials + \catcode32=10 \catcode12=10 %form-feed + \let\bxjs@tmpa\@empty + \openin\@inputcheck="|kpsewhich updmap.cfg"\relax + \ifeof\@inputcheck\else + \read\@inputcheck to\bxjs@tmpa + \closein\@inputcheck + \fi + \ifx\bxjs@tmpa\@empty\else + \openin\@inputcheck="\bxjs@tmpa"\relax + \@tempswatrue + \loop\if@tempswa + \read\@inputcheck to\bxjs@tmpa + \expandafter\bxjs@get@ke@a\bxjs@tmpa\@nil kanjiEmbed \@nil\@nnil + \ifx\bxjs@tmpa\relax\else + \global\let\bxjs@g@tmpa\bxjs@tmpa + \@tempswafalse + \fi + \ifeof\@inputcheck \@tempswafalse \fi + \repeat + \fi + }\endgroup + \let\bxjs@kanjiEmbed\bxjs@g@tmpa +} +\@onlypreamble\bxjs@get@ke@a +\def\bxjs@get@ke@a#1kanjiEmbed #2\@nil#3\@nnil{% + \ifx$#1$\def\bxjs@tmpa{#2}% + \else \let\bxjs@tmpa\relax + \fi} +% \end{macrocode} +% \end{macro} +% +% \paragraph{hyperref対策} +% +% 出力ページサイズに館する処理は |geometry| パッケージが行うので、 +% |hyperref| 側の処理は無効にしておく。 +% \begin{macrocode} +\PassOptionsToPackage{setpagesize=false}{hyperref} +% \end{macrocode} +% +% \begin{macro}{\bxjs@fix@hyperref@unicode} +% |hyperref| の |unicode| オプションの値を固定する。 +% \begin{macrocode} +\@onlypreamble\bxjs@fix@hyperref@unicode +\def\bxjs@fix@hyperref@unicode#1{% + \PassOptionsToPackage{bxjs/hook=#1}{hyperref}% + \@namedef{KV@Hyp@bxjs/hook}##1{% + \KV@Hyp@unicode{##1}% + \def\KV@Hyp@unicode####1{% + \expandafter\ifx\csname if##1\expandafter\endcsname + \csname if####1\endcsname\else + \ClassWarningNoLine\bxjs@clsname + {Blcoked hyperref option 'unicode=####1'}% + \fi + }% + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bxjs@urgent@special} +% DVIのなるべく早い位置にspecialを出力する。 +% \begin{macrocode} +\@onlypreamble\bxjs@urgent@special +\def\bxjs@urgent@special#1{% + \AtBeginDvi{\special{#1}}% + \AtBeginDocument{% + \@ifpackageloaded{atbegshi}{% + \begingroup + \toks\z@{\special{#1}}% + \toks\tw@\expandafter{\AtBegShi@HookFirst}% + \xdef\AtBegShi@HookFirst{\the\toks@\the\toks\tw@}% + \endgroup + }{}% + }% +} +% \end{macrocode} +% \end{macro} +% +%^^A---------------- +% \subsection{{\pTeX}用設定} +% +% \begin{macrocode} +\if j\jsEngine +% \end{macrocode} +% +% \paragraph{共通命令の実装} +% +% \begin{macrocode} +\def\bxjs@apply@kanjiskip{% + \kanjiskip\@tempskipa} +\def\bxjs@apply@xkanjiskip{% + \xkanjiskip\@tempskipa} +% \end{macrocode} +% +% \paragraph{和文フォント指定の扱い} +% +% {\pTeX}は既定で |kanji-config-updmap| の設定に従うため、 +% |\jsJaFont| が |auto| の場合は何もする必要がない。 +% 無指定でも |auto| でもない場合は、|\jsJaFont| をオプションに +% して |pxchfon| パッケージを読み込む。 +% \begin{macrocode} +\let\bxjs@tmpa\jsJaFont +\ifx\bxjs@tmpa\bxjs@@auto + \let\bxjs@tmpa\@empty +\else\ifx\bxjs@tmpa\bxjs@@noEmbed + \def\bxjs@tmpa{noembed} +\fi\fi +\ifx\jsJaFont\@empty\else + \edef\bxjs@nxt{% + \noexpand\RequirePackage[\jsJaFont] + {pxchfon}[2010/05/12]}% v0.5 + \bxjs@nxt +\fi +% \end{macrocode} +% +% \paragraph{otfパッケージ対策} +% +% インストールされている |otf| パッケージが |scale| オプションに +% 対応している場合は |scale=(\jsScaleの値)| を事前に |otf| に渡す。 +% \Note otf.sty の中に「|\RequirePackage{keyval}|」の行が存在する +% かにより判定している。 +% (もっといい方法はないのか……。) +% +% \begin{macrocode} +\begingroup + \global\let\@gtempa\relax + \catcode`\|=0 \catcode`\\=12 + |def|bxjs@check#1|@nil{% + |bxjs@check@a#1|@nil\RequirePackage|@nnil}% + |def|bxjs@check@a#1\RequirePackage#2|@nnil{% + |ifx$#1$|bxjs@check@b#2|@nil keyval|@nnil |fi}% + |catcode`|\=0 \catcode`\|=12 + \def\bxjs@check@b#1keyval#2\@nnil{% + \ifx$#2$\else + \xdef\@gtempa{% + \noexpand\PassOptionsToPackage{scale=\jsScale}{otf}}% + \fi} +\@firstofone{% + \catcode10=12 \endlinechar\m@ne + \let\do\@makeother \dospecials \catcode32=10 + \openin\@inputcheck=otf.sty\relax + \@tempswatrue + \loop\if@tempswa + \ifeof\@inputcheck \@tempswafalse \fi + \if@tempswa + \read\@inputcheck to\bxjs@line + \expandafter\bxjs@check\bxjs@line\@nil + \fi + \repeat + \closein\@inputcheck +\endgroup} +\@gtempa +% \end{macrocode} +% +% \paragraph{hyperref対策} +% +% |unicode| にしてはいけない。 +% \begin{macrocode} +\bxjs@fix@hyperref@unicode{false} +% \end{macrocode} +% +% |tounicode| special命令を出力する。 +% \begin{macrocode} +\ifx\bxjs@driver@given\bxjs@driver@@dvipdfmx + \ifnum\jis"2121="A1A1 %euc + \bxjs@urgent@special{pdf:tounicode EUC-UCS2} + \else\ifnum\jis"2121="8140 %sjis + \bxjs@urgent@special{pdf:tounicode 90ms-RKSJ-UCS2} + \else\ifnum\jis"2121="3000 %uptex + \bxjs@urgent@special{pdf:tounicode UTF8-UCS2} + \fi\fi\fi + \let\bxToUnicodeSpecialDone=t +\fi +% \end{macrocode} +% +% \paragraph{microtype対策} +% +% \begin{macrocode} +\@namedef{ver@microtype.sty}{2000/01/01} +\newcommand*\UseMicrotypeSet[2][]{} +% \end{macrocode} +% +%^^A---------------- +% \subsection{pdf{\TeX}用設定: CJK + bxcjkjatype} +% +% \begin{macrocode} +\else\if p\jsEngine +% \end{macrocode} +% +% \paragraph{bxcjkjatypeパッケージの読込} +% +% |\jsJaFont| が指定されている場合は、その値を |bxcjkjatype| の +% オプション(プリセット指定)に渡す。 +% (|auto| ならば |\bxjs@get@kanjiEmbed| を実行する。) +% \begin{macrocode} +\bxjs@adjust@jafont{f} +\edef\bxjs@nxt{% + \noexpand\RequirePackage[% + \ifx\bxjs@tmpa\@empty\else \bxjs@tmpa,\fi + whole,autotilde]{bxcjkjatype}[2013/10/15]}% v0.2c +\bxjs@nxt +\bxjs@cjk@loaded +% \end{macrocode} +% +% \paragraph{hyperref対策} +% +% |bxcjkjatype| 使用時は |unicode| にするべき。 +% \Note 取りあえず固定はしない。 +% +% \begin{macrocode} +\PassOptionsToPackage{unicode}{hyperref} +% \end{macrocode} +% +% \paragraph{共通命令の実装} +% +% \begin{macrocode} +\newskip\jsKanjiSkip +\newskip\jsXKanjiSkip +\ifx\CJKecglue\@undefined + \def\CJKtilde{\CJK@global\def~{\CJKecglue\ignorespaces}} +\fi +\let\autospacing\bxjs@enable@kanjiskip +\let\noautospacing\bxjs@disable@kanjiskip +\protected\def\bxjs@CJKglue{\hskip\jsKanjiSkip} +\def\bxjs@apply@kanjiskip{% + \jsKanjiSkip\@tempskipa + \let\CJKglue\bxjs@CJKglue} +\let\autoxspacing\bxjs@enable@xkanjiskip +\let\noautoxspacing\bxjs@disable@xkanjiskip +\protected\def\bxjs@CJKecglue{\hskip\jsXKanjiSkip} +\def\bxjs@apply@xkanjiskip{% + \jsXKanjiSkip\@tempskipa + \let\CJKecglue\bxjs@CJKecglue} +% \end{macrocode} +% +%^^A---------------- +% \subsection{{\XeTeX}用設定: xeCJK + zxjatype} +% +% \begin{macrocode} +\else\if x\jsEngine +% \end{macrocode} +% +% \paragraph{zxjatypeパッケージの読込} +% +% スケール値(|\jsScale|)の反映は zxjatype の側で行われる。 +% \begin{macrocode} +\RequirePackage{zxjatype} +\PassOptionsToPackage{no-math}{fontspec}%! +\ifx\zxJaFamilyName\@undefined + \ClassError\bxjs@clsname + {xeCJK or zxjatype is too old}\@ehc +\fi +% \end{macrocode} +% +% \paragraph{和文フォント定義} +% +% |\jsJaFont| が指定された場合は、その値をオプションと +% して |zxjafont| を読み込む。 +% 非指定の場合はIPAexフォントを使用する。 +% \begin{macrocode} +\bxjs@adjust@jafont{f} +\ifx\bxjs@tmpa\@empty + \setCJKmainfont[BoldFont=IPAexGothic]{IPAexMincho} + \setCJKsansfont[BoldFont=IPAexGothic]{IPAexGothic} +\else + \edef\bxjs@nxt{% + \noexpand\RequirePackage[\bxjs@tmpa]% + {zxjafont}[2013/01/28]}% v0.2a + \bxjs@nxt +\fi +% \end{macrocode} +% +% \paragraph{hyperref対策} +% +% 昔の |hyperref| では |unicode| を無効にするのが正解だった。 +% ところが、現在では“形式上は” |unicode| を有効にするのが正解で、 +% 無効だと警告が出て強制的に有効化される。 +% 内部動作としては、「通常({\XeTeX}以外)の |unicode| 無効」の時と +% 同じになるようである。 +% 取りあえず、ここでは |unicode| オプションの設定を行わない。 +% +% \paragraph{段落頭でのグルー挿入禁止} +% +% \begin{macrocode} +\let\jsInhibitGlueAtParTop\@inhibitglue +% \end{macrocode} +% +% \paragraph{共通命令の実装} +% +% \begin{macrocode} +\newskip\jsKanjiSkip +\newskip\jsXKanjiSkip +\ifx\CJKecglue\@undefined + \def\CJKtilde{\CJK@global\def~{\CJKecglue\ignorespaces}} +\fi +\let\autospacing\bxjs@enable@kanjiskip +\let\noautospacing\bxjs@disable@kanjiskip +\protected\def\bxjs@CJKglue{\hskip\jsKanjiSkip} +\def\bxjs@apply@kanjiskip{% + \jsKanjiSkip\@tempskipa + \xeCJKsetup{CJKglue={\bxjs@CJKglue}}} +\let\autoxspacing\bxjs@enable@xkanjiskip +\let\noautoxspacing\bxjs@disable@xkanjiskip +\protected\def\bxjs@CJKecglue{\hskip\jsXKanjiSkip} +\def\bxjs@apply@xkanjiskip{% + \jsXKanjiSkip\@tempskipa + \xeCJKsetup{CJKecglue={\bxjs@CJKecglue}}} +% \end{macrocode} +% +% |\mcfamily|、|\gtfamily| は本来は zxjatype の方で定義すべき +% であろうが、現状は暫定的にここで定義する。 +% \begin{macrocode} +\ifx\mcfamily\@undefined + \protected\def\mcfamily{\CJKfamily{\CJKrmdefault}} + \protected\def\gtfamily{\CJKfamily{\CJKsfdefault}} +\fi +% \end{macrocode} +% +%^^A---------------- +% \subsection{Lua{\TeX}用設定: Lua{\TeX}-ja} +% +% \begin{macrocode} +\else\if l\jsEngine +% \end{macrocode} +% +% \paragraph{Lua{\TeX}-jaパッケージの読込} +% +% |luatexja| とともに |luatexja-fontspec| パッケージを読み込む。 +% +% |luatexja| は自前の |\zw|(これは実際の現在和文フォントに +% 基づく値を返す)を定義するので、|\zw| の定義を消しておく。 +% なお、レイアウト定義の「全角幅」は「規定」に基づく |\jsZw| で +% あることに注意が必要。 +% +% \begin{macrocode} +\let\zw\@undefined +\RequirePackage{luatexja} +\RequirePackage{luatexja-fontspec} +% \end{macrocode} +% +% \paragraph{和文フォント定義} +% +% |luatexja-fontspec| で使用する和文スケール値を |\jsScale| と合致 +% させたいのだが……もっと良い方法はないのか? +% \begin{macrocode} +\ExplSyntaxOn +\fp_gset:Nn \g_ltj_fontspec_scale_fp { \jsScale } +\ExplSyntaxOff +% \end{macrocode} +% +% |\jsJaFont| が指定された場合は、その値をオプションと +% して |luatexja-preset| を読み込む。 +% 非指定の場合は、|luatexja-preset| パッケージの |ipaex| +% オプション(IPAexフォント使用)と等価な設定を用いる +% (|luatexja-preset| は読み込まない)。 +% \begin{macrocode} +\bxjs@adjust@jafont{t} +\ifx\bxjs@tmpa\bxjs@@noEmbed + \def\bxjs@tmpa{noembed} +\fi +\ifx\bxjs@tmpa\@empty + \defaultjfontfeatures{ Kerning=Off } + \setmainjfont[BoldFont=IPAexGothic,JFM=ujis]{IPAexMincho} + \setsansjfont[BoldFont=IPAexGothic,JFM=ujis]{IPAexGothic} +\else + \edef\bxjs@nxt{% + \noexpand\RequirePackage[\bxjs@tmpa] + {luatexja-preset}}% + \bxjs@nxt +\fi +% \end{macrocode} +% +% 欧文総称フォント命令で和文フォントが連動するように修正する。 +% その他の和文フォント関係の定義を行う。 +% \begin{macrocode} +\DeclareRobustCommand\rmfamily + {\not@math@alphabet\rmfamily\mathrm + \romanfamily\rmdefault\kanjifamily\mcdefault\selectfont} +\DeclareRobustCommand\sffamily + {\not@math@alphabet\sffamily\mathsf + \romanfamily\sfdefault\kanjifamily\gtdefault\selectfont} +\DeclareRobustCommand\ttfamily + {\not@math@alphabet\ttfamily\mathtt + \romanfamily\ttdefault\kanjifamily\gtdefault\selectfont} +\AtBeginDocument{% + \reDeclareMathAlphabet{\mathrm}{\mathrm}{\mathmc} + \reDeclareMathAlphabet{\mathbf}{\mathbf}{\mathgt}}% +\bxjs@if@sf@default{% + \renewcommand\kanjifamilydefault{\gtdefault}} +% \end{macrocode} +% +% \paragraph{和文パラメタの設定} +% +% \begin{macrocode} +% 次の3つは既定値の通り +%\ltjsetparameter{prebreakpenalty={`’,10000}} +%\ltjsetparameter{postbreakpenalty={`“,10000}} +%\ltjsetparameter{prebreakpenalty={`”,10000}} +\ltjsetparameter{jaxspmode={`!,1}} +\ltjsetparameter{jaxspmode={`〒,2}} +\ltjsetparameter{alxspmode={`+,3}} +\ltjsetparameter{alxspmode={`\%,3}} +% \end{macrocode} +% +% \paragraph{段落頭でのグルー挿入禁止} +% +% \begin{macrocode} +\protected\def\@inhibitglue{% + \directlua{% + luatexja.jfmglue.create_beginpar_node()}} +\let\bxjs@ltj@inhibitglue\@inhibitglue +\let\@@inhibitglue\@undefined +% \end{macrocode} +% +% \paragraph{hyperref対策} +% +% |unicode| にするべき。 +% \begin{macrocode} +\bxjs@fix@hyperref@unicode{true} +% \end{macrocode} +% +% \paragraph{共通命令の実装} +% +% \begin{macrocode} +\protected\def\autospacing{% + \ltjsetparameter{autospacing=true}} +\protected\def\noautospacing{% + \ltjsetparameter{autospacing=false}} +\protected\def\autoxspacing{% + \ltjsetparameter{autoxspacing=true}} +\protected\def\noautoxspacing{% + \ltjsetparameter{autoxspacing=false}} +\def\bxjs@apply@kanjiskip{% + \ltjsetparameter{kanjiskip={\@tempskipa}}} +\def\bxjs@apply@xkanjiskip{% + \ltjsetparameter{xkanjiskip={\@tempskipa}}} +% \end{macrocode} +% +%^^A---------------- +% \subsection{共通処理(2)} +% +% \begin{macrocode} +\fi\fi\fi\fi +% \end{macrocode} +% +% \paragraph{共通命令の実装} +% \begin{macro}{\textmc} +% \begin{macro}{\textgt} +% minimal ドライバ実装中で定義した |\DeclareJaTextFontCommand| +% を利用する。 +% \begin{macrocode} +\DeclareJaTextFontCommand{\textmc}{\mcfamily} +\DeclareJaTextFontCommand{\textgt}{\gtfamily} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \paragraph{和文・和欧文間空白の初期値} +% +% \begin{macrocode} +\setkanjiskip{0pt plus.1\jsZw minus.01\jsZw} +\ifx\jsDocClass\jsSlide \setxkanjiskip{0.1em} +\else \setxkanjiskip{0.25em plus 0.15em minus 0.06em} +\fi +% \end{macrocode} +% +% 以上で終わり。 +% +% \begin{macrocode} +%</drvstandard> +% \end{macrocode} +% % \Finale % \endinput diff --git a/Master/texmf-dist/source/latex/bxjscls/bxjscls.ins b/Master/texmf-dist/source/latex/bxjscls/bxjscls.ins new file mode 100644 index 00000000000..b7697b1d67e --- /dev/null +++ b/Master/texmf-dist/source/latex/bxjscls/bxjscls.ins @@ -0,0 +1,11 @@ +%% bxjscls.ins : installer file for bxjscls.dtx +\def\batchfile{bxjscls.ins} +\input docstrip.tex +\keepsilent +\generateFile{bxjsarticle.cls}{f}{\from{bxjscls.dtx}{article}} +\generateFile{bxjsreport.cls}{f}{\from{bxjscls.dtx}{report}} +\generateFile{bxjsja-minimal.def}{f}{\from{bxjscls.dtx}{drvminimal}} +\generateFile{bxjsja-standard.def}{f}{\from{bxjscls.dtx}{drvstandard}} +\generateFile{bxjsbook.cls}{f}{\from{bxjscls.dtx}{book}} +\generateFile{bxjsslide.cls}{f}{\from{bxjscls.dtx}{slide}} +%% EOF |