summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex')
-rw-r--r--Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx131
1 files changed, 110 insertions, 21 deletions
diff --git a/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx b/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx
index 9ac556f805c..5b7c8d1435d 100644
--- a/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx
+++ b/Master/texmf-dist/source/latex/bxjscls/bxjscls.dtx
@@ -23,7 +23,7 @@
%
% Copyright 1993 1994 1995 1996 1997 1998 1999
% The LaTeX3 Project and any individual authors listed elsewhere
-% in this file.
+% in this file.
%
% Copyright 1995-1999 ASCII Corporation.
%
@@ -58,7 +58,8 @@
%<*driver>
\ProvidesFile{bxjscls.dtx}
%</driver>
- [2015/08/05 v1.0 BXJS document classes]
+ [2015/08/23 v1.0a 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]
@@ -395,7 +396,7 @@
% \pLaTeXe の \texttt{b5paper}
% は $257\,\mathrm{mm} \times 182\,\mathrm{mm}$ になっています。
% ここでは\pLaTeXe にならってJISに従いました。
-%
+%
% デフォルトは \texttt{a4paper} です。
%
% \texttt{b5var}(B5変形,182mm×230mm),
@@ -464,13 +465,60 @@
\newcommand{\@ptsize}{0}
\def\bxjs@param@basefontsize{10pt}
\def\jsUnusualPtSize{-20}
+% \end{macrocode}
+% \begin{ZRnote}
+% \begin{macro}{\bxjs@setbasefontsize}
+% 基底フォントサイズを実際に変更する。
+% \begin{macrocode}
\def\bxjs@setbasefontsize#1{%
- \setlength\@tempdima{#1}%
+ \bxjs@setbasefontlength\@tempdima{#1}%
\edef\bxjs@param@basefontsize{\the\@tempdima}%
\ifdim\@tempdima=10pt \long\def\@ptsize{0}%
\else\ifdim\@tempdima=10.95pt \long\def\@ptsize{1}%
\else\ifdim\@tempdima=12pt \long\def\@ptsize{2}%
\else \long\edef\@ptsize{\jsUnusualPtSize}\fi\fi\fi}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\bxjs@setbasefontlength}
+% |base|、|jbase| で指定される長さ(式)のための
+% 特別な |\setlength|。
+% 与えられた式が“\Meta{実数}|Q|”の形の場合、Q単位の長さを
+% 代入する(この場合“式”は使えない)。
+% \Note クラスオプションのトークン列の中に展開可能なトークンが
+% ある場合、{\LaTeX}はファイルの読込の前にそれを展開しようとする。
+% このため、この位置で |\jQ| をサポートすることは
+% 原理的に不可能である。
+% \begin{macrocode}
+\def\bxjs@setbasefontlength#1#2{%
+% \end{macrocode}
+% ここで |true| の長さが使われるのは不合理なので、
+% 式が“|true|”を含む場合には警告を出す。
+% \begin{macrocode}
+ \bxjs@setbasefontlength@a#2true\@nnil
+% \end{macrocode}
+% 式の末尾が“|Q|”である時は特別に扱い、
+% それ以外は |\setlength| に移譲する。
+% \begin{macrocode}
+ \ifx j\jsEngine \setlength#1{#2}%
+ \else
+ \bxjs@setbasefontlength@b#2\@nil Q\@nil\@nnil
+ \ifx\bxjs@tmpa\relax \setlength#1{#2}%
+ \else \@tempdimc0.25mm #1=\bxjs@tmpa\@tempdimc
+ \fi
+ \fi}
+\def\bxjs@setbasefontlength@b#1Q\@nil#2\@nnil{%
+ \ifx\@nnil#2\@nnil \let\bxjs@tmpa\relax
+ \else \def\bxjs@tmpa{#1}%
+ \fi}
+\def\bxjs@setbasefontlength@a#1true#2\@nnil{%
+ \ifx\@nnil#2\@nnil\else
+ \ClassWarningNoLine\bxjs@clsname
+ {You should not use 'true' lengths here}%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+% \end{ZRnote}
+% \begin{macrocode}
\DeclareOption{8pt}{\bxjs@setbasefontsize{8pt}}
\DeclareOption{9pt}{\bxjs@setbasefontsize{9pt}}
\DeclareOption{10pt}{\bxjs@setbasefontsize{10pt}}
@@ -638,7 +686,7 @@
% これは |ifdraft| パッケージと衝突するので、代わりに |\ifjsDraft|
% の名前を用い、本文開始時に |\ifdraft| が未定義の場合に限り、
% |\ifjsDraft| を |\ifdraft| にコピーする処理にする。
-%
+%
% \end{ZRnote}
% \begin{macrocode}
\let\ifjsDraft\iffalse
@@ -697,17 +745,25 @@
% \mbox{}
% \begin{ZRnote}
% \begin{itemize}
+% \item エンジンオプション: |xelatex| 等。
+% \item ドライバオプション: |dvipdfmx| 等。
+% \item |nopapersize| : |papersize|(既定で有効)の否定。
+% \item |zw|/|nozw| : |\jsZw| と等価な命令として |\zw| を
+% 定義する/しない。
+% \item |js|/|nojs| : JSクラスを読込済として扱う/扱わない。
% \item |base=|\meta{dimen} : 基底フォントサイズを直接指定する。
% (|xxpt| オプションの代用なので、既定値は10\,ptである。)
+% \item |jbase=|\meta{dimen} : 基底フォントサイズを“和文規準で”
+% 直接指定する。
% \item |scale=|\meta{real} : 和文フォントのスケールを表すマクロ |\jsScale|
% の値を設定する。
% もちろんこの値を何らかの方法で和文処理モジュールに渡さないと意味を成さない。
% 既定値は 0.924715(= 13\,Q/10\,pt)。
+% \item |noscale| : |scale=1| と等価。
% \item |mag=|\meta{int} : |\mag| 値の直接設定。既定は |base| から算出する。
% \item |paper={|\meta{dimen:width}|}{|\meta{dimen:height}|}| : 用紙サイズ設定。
% 用紙サイズオプションの代用で、既定値は |a4paper| 相当。
-% \item |platex|, |uplatex| : (u){\pTeX}用の連携モジュールを有効化する。
-% \item |CJK| : CJKパッケージ用の連携モジュールを有効化する。
+% \item |magstyle=|\meta{name} : “版面拡大”の実現方法の選択。
% \end{itemize}
%
% \begin{macro}{\bxjs@invscale}
@@ -897,7 +953,7 @@
\define@key{bxjs}{jbase}{\bxjs@setjbasefontsize{#1}}
\def\bxjs@setjbasefontsize#1{%
\def\bxjs@do@opt@jbase{%
- \setlength\@tempdima{#1}%
+ \bxjs@setbasefontlength\@tempdima{#1}%
\bxjs@invscale\@tempdima\jsScale
\bxjs@setbasefontsize{\@tempdima}}}
% \end{macrocode}
@@ -1301,7 +1357,7 @@
\chardef\bxjs@qmcc=\catcode`\?\relax
% \end{macrocode}
% \end{ZRnote}
-%
+%
% \begin{ZRnote}
% ここで{p\TeX}のzwに相当する単位として用いる長さ変数 |\jsZw| を作成する。
% 約束により、これは |\jsScale| $\times$ (指定フォントサイズ) に等しい。
@@ -2028,7 +2084,7 @@
% \begin{ZRnote}
% エンジンが{\XeTeX}である場合の処理。
% \begin{itemize}
-% \item |geometry| 4.2版の場合:\
+% \item |geometry| 4.2版の場合:\
% {\TeX} Liveの一部の版に用意されている設定ファイル |geometry.cfg|
% では、|geometry| のドライバ自動検出の処理を乗っ取って、
% 強制的に |pdftex| を使用するようになっている。
@@ -2037,14 +2093,14 @@
% そこで、|geometry.cfg| の読込の箇所にフックをかけて、|geometry.cfg|
% での処理をさらに乗っ取ることにする。
% \begin{itemize}
-% \item {\XeTeX}が |\pdfpagewidth| をサポートする場合は、ダミーの\
+% \item {\XeTeX}が |\pdfpagewidth| をサポートする場合は、ダミーの\
% |\pdfhorigin|、|\pdfvorigin| を用意してドライバを |pdftex|
% に強制的に変更する。
% \item そうでない場合は、ドライバを |dvipdfm| に強制的に変更する。
% \end{itemize}
-% \item |geometry| 5.x版の場合:\
+% \item |geometry| 5.x版の場合:\
% この版の |geometry| は{\XeTeX}に正式に対応(ドライバ名 |xetex|)
-% していて、また{\XeTeX}で実行した場合にドライバ自動検出の結果は\
+% していて、また{\XeTeX}で実行した場合にドライバ自動検出の結果は\
% |xetex| となる。
% 従って、特に何もする必要がない。
% さらに、ドライバ自動検出処理のマクロ名を4.2版のもの
@@ -2339,7 +2395,7 @@
% ページスタイルとして,\LaTeXe (欧文版)の標準クラス
% では |empty|,|plain|,|headings|,|myheadings| があります。
% このうち |empty|,|plain| スタイルは\LaTeXe 本体
-% で定義されています。
+% で定義されています。
%
% アスキーのクラスファイルでは |headnombre|,|footnombre|,
% |bothstyle|,|jpl@in| が追加されていますが,
@@ -4547,7 +4603,7 @@
\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
+ \ifdim\js@tocl@width<2\jsZw \divide\js@tocl@width by 2 \advance\js@tocl@width 1\jsZw\fi
\if@twocolumn
\@restonecoltrue\onecolumn
\else
@@ -4560,7 +4616,7 @@
\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
+ \ifdim\js@tocl@width<2\jsZw \divide\js@tocl@width by 2 \advance\js@tocl@width 1\jsZw\fi
\section*{\contentsname}%
\@mkboth{\contentsname}{\contentsname}%
%</!book&!report>
@@ -4759,7 +4815,7 @@
\@lnumwidth #3\relax
\advance\leftskip \@lnumwidth \null\nobreak\hskip -\leftskip
{#4}\nobreak
- \leaders\hbox{$\m@th \mkern \@dotsep mu\hbox{.}\mkern \@dotsep
+ \leaders\hbox{$\m@th \mkern \@dotsep mu\hbox{.}\mkern \@dotsep
mu$}\hfill \nobreak\hb@xt@\@pnumwidth{%
\hfil\normalfont \normalcolor #5}\par}\fi}
% \end{macrocode}
@@ -5636,7 +5692,7 @@
% JSクラスでzw単位で設定されている長さパラメタはこの変数を単位と
% して設定されている。
% この変数の値は実際に用いられる「和文フォント」のメトリックに
-% 基づくのではなく、機械的に\
+% 基づくのではなく、機械的に\
% |\jsScale| $\times$(フォントサイズ)
% であると定められている
% (フォントサイズ変更の度に再設定される)。
@@ -5885,7 +5941,7 @@
\else\ifx p\jsEngine
% \end{macrocode}
%
-%
+%
% \begin{macrocode}
\@onlypreamble\bxjs@cjk@loaded
\def\bxjs@cjk@loaded{%
@@ -6350,6 +6406,7 @@
% |\jsJaFont| が指定されている場合は、その値を |bxcjkjatype| の
% オプション(プリセット指定)に渡す。
% (|auto| ならば |\bxjs@get@kanjiEmbed| を実行する。)
+% スケール値(|\jsScale|)の反映は bxcjkjatype の側で行われる。
% \begin{macrocode}
\bxjs@adjust@jafont{f}
\edef\bxjs@nxt{%
@@ -6364,11 +6421,43 @@
%
% |bxcjkjatype| 使用時は |unicode| にするべき。
% \Note 取りあえず固定はしない。
-%
% \begin{macrocode}
\PassOptionsToPackage{unicode}{hyperref}
% \end{macrocode}
%
+% |\hypersetup| 命令で(|CJK*| 環境に入れなくても)日本語文字を
+% 含む文書情報を設定できるようにするための細工。
+% \Note bxcjkjatype を |whole| 付きで使っていることが前提。
+% \Note パッケージオプションでの指定に対応するのは、
+% 「アクティブな高位バイトトークンがその場で展開されてしまう」
+% ため困難である。
+% \begin{macrocode}
+\begingroup
+ \CJK@input{UTF8.bdg}
+\endgroup
+\g@addto@macro\pdfstringdefPreHook{%
+ \@nameuse{CJK@UTF8Binding}%
+}
+% \end{macrocode}
+%
+% |~| が和欧文間空白である場合はPDF文字列中で空白文字で
+% なく空に展開させる。
+% \begin{macrocode}
+\g@addto@macro\pdfstringdefPreHook{%
+ \ifx~\bxjs@@CJKtilde
+ \let\bxjs@org@LetUnexpandableSpace\HyPsd@LetUnexpandableSpace
+ \let\HyPsd@LetUnexpandableSpace\bxjs@LetUnexpandableSpace
+ \let~\@empty
+ \fi
+}
+\def\bxjs@@CJKtilde{\CJKecglue\ignorespaces}
+\def\bxjs@@tildecmd{~}
+\def\bxjs@LetUnexpandableSpace#1{%
+ \def\bxjs@tmpa{#1}\ifx\bxjs@tmpa\bxjs@@tildecmd\else
+ \bxjs@org@LetUnexpandableSpace#1%
+ \fi}
+% \end{macrocode}
+%
% \paragraph{共通命令の実装}
%
% \begin{macrocode}
@@ -6390,7 +6479,7 @@
\jsXKanjiSkip\@tempskipa
\let\CJKecglue\bxjs@CJKecglue}
% \end{macrocode}
-%
+%
%^^A----------------
% \subsection{{\XeTeX}用設定: xeCJK + zxjatype}
%