% 文字コードは UTF-8 % lualatex で組版する \documentclass[a4paper]{ltjsarticle} \usepackage{color} \definecolor{myblue}{rgb}{0,0,0.75} \definecolor{mygreen}{rgb}{0,0.45,0} %\usepackage{url} \usepackage[unicode,colorlinks,hyperfootnotes=false]{hyperref} \hypersetup{linkcolor=myblue,urlcolor=mygreen} \usepackage{metalogo} \pdfstringdefDisableCommands{% \renewcommand*{\XeLaTeX}{XeLaTeX}} \usepackage{shortvrb} \MakeShortVerb{\|} \newcommand{\PkgVersion}{1.7} \newcommand{\PkgDate}{2017/10/21} \newcommand{\Pkg}[1]{\textsf{#1}} \newcommand{\Meta}[1]{$\langle$\mbox{}#1\mbox{}$\rangle$} \newcommand{\Note}{\par\noindent ※} \newcommand{\Means}{:\ } \newcommand{\jemph}{\textsf} \newcommand{\wbr}{\linebreak[0]} \providecommand{\pTeX}{p\TeX} \providecommand{\pLaTeX}{p\LaTeX} \providecommand{\upTeX}{u\pTeX} \providecommand{\upLaTeX}{u\pLaTeX} \providecommand{\pdfLaTeX}{pdf\LaTeX} \providecommand{\BibTeX}{Bib\TeX} %----------------------------------------------------------- \begin{document} \title{\Pkg{BXjscls} パッケージ\\ (BXJS文書クラス集)\\ ユーザマニュアル} \author{八登崇之\ (Takayuki YATO; aka.~``ZR'')} \date{v\PkgVersion\quad[\PkgDate]} \maketitle \tableofcontents %=========================================================== \section*{注意} BXJS文書クラスについては、“{\TeX} Wiki”中の記事、 \footnote{\url{https://texwiki.texjp.org/?BXjscls}}% およびそこからたどれるサイトにある情報も併せて参照してほしい。 %=========================================================== \section{概要} \label{sec:Ovewview} 本パッケージに含まれる文書クラス集 (以下では\jemph{BXJS(文書)クラス}と呼ぶ) は、奥村晴彦氏および“日本語{\TeX}開発コミュニティ”により作製された \Pkg{jsclasses}パッケージの文書クラス集 (以下では\jemph{JS(文書)クラス}と呼ぶ) の拡張版に相当する。 JSクラスのレイアウトデザインと機能をほぼ踏襲しているが、 以下の点で改良が加えられている。 \begin{itemize} \item JSクラスは{\pLaTeX}と{\upLaTeX}のみをサポートするが、 BXJSクラスはこれらに加えて{\pdfLaTeX}と{\XeLaTeX}と{\LuaLaTeX}を サポートしており主要エンジンの全てで使用可能である。 \item (u){\pLaTeX}以外では各々のエンジンの日本語処理パッケージを 利用するが、“標準設定”を用いることで、それらのパッケージの 設定を書かずに済ませられるので、{\pLaTeX}並に簡単に日本語の 文書を書き始めることができる。 \item JSクラスでは、フォントのオプティカルサイズを最適にするため、 (基底フォントサイズが10pt以外の時に){\TeX}の版面拡大(mag)機能を 利用しているが、これが他のパッケージと衝突して 不具合を起こすことがある。 BXJSクラスではmag機能を使う他に別の方式を選べるようにしている。 \Note JSクラスについても新しい(2016/07/11以降の)版では 同様の機能が提供されている。 \item 用紙サイズや基底フォントサイズについて、任意の値を指定する ことができる。 \end{itemize} %=========================================================== \section{最も基本的な使い方} \label{sec:Basic} ここでは、BXJSクラスを“標準設定”(standard和文ドライバ)で 用いる場合について解説する。 この場合、|\documentclass| 命令を次のように書く。 \footnote{もちろんクラスオプションの順序は任意である。}% \begin{quote} |\documentclass[|\Meta{エンジン}|,|\Meta{ドライバ}% |,ja=standard,jafont=|\Meta{フォント指定}|,|\Meta{他オプション}|]|\\ | {|\Meta{クラス名}|}| \end{quote} \begin{itemize} \item \Meta{エンジン}の指定は必須で、実際に使っている 「{\LaTeX}のコマンド名」を書く。 |latex|、|platex|、|uplatex|、 |pdflatex|、|xelatex|、|lualatex|が指定できる。 \item DVI出力のエンジンを使う場合は、\Meta{ドライバ}の指定が必須で、 これは実際に使っている「DVIウェアの名前」を書く。 |dvips|、|dvipdfmx|、|dviout|、|xdvi|が指定できる。 PDF出力のエンジンの場合は\Meta{ドライバ}の指定は不要である。 \item “標準設定”を適用するので |ja=standard| を指定する。 (|ja| の代わりに |jadriver| と書いてもよい。) \item 既定以外のフォント設定を利用する場合は、\Meta{フォント指定}に その名前を書く。 既定の設定を用いる場合は |jafont=...| 自体を省略する。 \item その他のクラスオプション(|a4paper| 等)については、 多くの場合JSクラスと同じものが使える。 \item BXJSクラスについて、\Meta{クラス名}は以下のものがある。 \begin{itemize} \item \Pkg{bxjsarticle}\Means 章のないレポート (\Pkg{jsarticle}に相当する) \item \Pkg{bxjsreport}\Means 章のあるレポート (\Pkg{jsbook}\,+\,|report| に相当する) \item \Pkg{bxjsbook}\Means 書籍 (\Pkg{jsbook}に相当する) \item \Pkg{bxjsslide}\Means スライド (\Pkg{jsarticle}\,+\,|slide|に相当する) \end{itemize} \end{itemize} {\XeLaTeX}で\Pkg{bxjsarticle}クラスを用いた文書の例を示す。 \footnote{組版結果における日付の出力はJSクラスと同様の 「2015年7月3日」の形式になる。}% \begin{quote}\small\begin{verbatim} \documentclass[a4paper,xelatex,ja=standard]{bxjsarticle} \usepackage[unicode,colorlinks, pdftitle={いきなり日本語}]{hyperref} \title{いきなり日本語} \author{七篠 権兵衛} \begin{document} \maketitle \section{日本語で{\LaTeX}する} 中身はまだない。 \end{document} \end{verbatim}\end{quote} 以下では各エンジンについて、挙動を少し詳しく説明する。 %------------------- \subsection{{\pLaTeX}の場合} 例えば次の設定は: \begin{quote}\small\begin{verbatim} \documentclass[a4paper,platex,dvipdfmx,ja=standard]{bxjsarticle} \end{verbatim}\end{quote} 対応するJSクラスを用いた次の設定と(ほぼ)等価になる \footnote{すなわち、論理フォントは明朝がjis、 ゴシックがjisgが使われる。 なお、BXJSでは |mingoth| 等の論理フォント変更の オプションはサポートされていない。}: \begin{quote}\small\begin{verbatim} \documentclass[a4paper,dvipdfmx]{jsarticle} \end{verbatim}\end{quote} 次のように |jafont| を指定した場合は: \begin{quote}\small\begin{verbatim} \documentclass[a4paper,platex,dvipdfmx,ja=standard,jafont=ms]{bxjsarticle} \end{verbatim}\end{quote} その値をプリセットオプションとして\Pkg{pxchfon}が読み込まれる: \begin{quote}\small\begin{verbatim} \documentclass[a4paper,dvipdfmx]{jsarticle} \usepackage[ms]{pxchfon} \end{verbatim}\end{quote} %------------------- \subsection{{\upLaTeX}の場合} 例えば次の設定は: \begin{quote}\small\begin{verbatim} \documentclass[a5paper,uplatex,dvipdfmx,ja=standard]{bxjsarticle} \end{verbatim}\end{quote} 次の設定と(ほぼ)等価になる \footnote{論理フォントについては、従来のもの (明朝がupjisr-h、ゴシックがupjisg-h) に代わって、BMP外の文字に対応したもの (明朝がupjpnrm-h、ゴシックがupjpngt-h) を採用した。 組み方は従来のものと変わらない。}: \begin{quote}\small\begin{verbatim} \documentclass[uplatex,a4paper,dvipdfmx]{jsarticle} \end{verbatim}\end{quote} |jafont| オプションの扱いは{\pLaTeX}の場合と同じである。 %------------------- \subsection{{\pdfLaTeX}の場合} エンジン指定が |pdflatex| の場合、 日本語処理パッケージとして\Pkg{bxcjkjatype} (これ自体は内部で\Pkg{CJK}パッケージを読み込む) を利用する。 例えば次の設定は: \begin{quote}\small\begin{verbatim} \documentclass[a4paper,pdflatex,ja=standard]{bxjsarticle} \end{verbatim}\end{quote} 次の設定と大体同じであるが、ただし文書レイアウトは \Pkg{article}でなく\Pkg{jsarticle}とほぼ同じになっている: \begin{quote}\small\begin{verbatim} \documentclass[a4paper]{article} \usepackage[whole,autotilde]{bxcjkjatype} \end{verbatim}\end{quote} |jafont| を指定した場合は: \begin{quote}\small\begin{verbatim} \documentclass[a4paper,pdflatex,ja=standard,jafont=ipaex]{bxjsarticle} \end{verbatim}\end{quote} その値が\Pkg{bxcjkjatype}のフォントプリセットになる。 \begin{quote}\small\begin{verbatim} \documentclass[a4paper]{article} \usepackage[whole,autotilde,ipaex]{bxcjkjatype} \end{verbatim}\end{quote} \Note 補足: \begin{itemize} \item 自動的に文書本体が |CJK*| 環境 \footnote{\Pkg{CJKspace}パッケージが読み込まれた下での |CJK*| 環境である。}% で囲まれかつ |\CJKtilde| が有効な状態になっている。 従っていきなり日本語を書き始めることができる。 ただし和欧文間空白(四分空き)は手動で |~| を入れる必要がある。 \footnote{\Pkg{CJK}パッケージには自動で和欧文間空白を入れる 機能はない。}% 日本語出力の挙動の詳細については\Pkg{bxcjkjatype}のマニュアルを 参照してほしい。 以下に完全な文書ソースの例を示す: \begin{quote}\small\begin{verbatim} \documentclass[a4paper,pdflatex,ja=standard]{bxjsarticle} \begin{document} 日本語で~pdf{\LaTeX}~するテスト。 \end{document} \end{verbatim}\end{quote} \item \Pkg{bxcjkjatype}パッケージにおけるフォントの既定設定は 「Type1形式のIPAexフォント」(\Pkg{ipaex-type1}パッケージ)である。 一方、|ipaex| プリセットを指定した場合は 「TrueType形式のIPAexフォント」が使われるので、両者の出力は “PDFデータとしては”異なる(見かけは同じのはずだが)。 \footnote{ちなみに、\Pkg{bxcjkjatype}には |ipaex-type1| という オプションもあるが、この設定と既定設定(オプション無し)も 動作は異なる。 BXJSクラスが用いるのは既定設定の方である。}% \end{itemize} %------------------- \subsection{{\XeLaTeX}の場合} エンジン指定が |xelatex| の場合、 日本語処理パッケージとして\Pkg{zxjatype} (これ自体は内部で\Pkg{xeCJK}パッケージを読み込む) を利用する。 例えば次の設定は: \begin{quote}\small\begin{verbatim} \documentclass[a4paper,twocolumn,xelatex,ja=standard]{bxjsarticle} \end{verbatim}\end{quote} 次の設定と大体同じであるが、ただし文書レイアウトは \Pkg{jsarticle}とほぼ同じになっている: \begin{quote}\small\begin{verbatim} \documentclass[a4paper,twocolumn]{article} \usepackage{zxjatype} \setCJKmainfont[BoldFont=IPAexGothic]{IPAexMincho}% 明朝→IPAex明朝 \setCJKsansfont[BoldFont=IPAexGothic]{IPAexGothic}% ゴシック→IPAexゴシック \end{verbatim}\end{quote} |jafont| を指定した場合は: \begin{quote}\small\begin{verbatim} \documentclass[a4paper,xelatex,ja=standard,jafont=ms]{bxjsarticle} \end{verbatim}\end{quote} その値が\Pkg{zxjafont}のプリセットになる。 \begin{quote}\small\begin{verbatim} \usepackage{zxjatype} \usepackage[ms]{zxjafont} \end{verbatim}\end{quote} %------------------- \subsection{{\LuaLaTeX}の場合} エンジン指定が |lualatex| の場合、 日本語処理パッケージとして\Pkg{\LuaTeX-ja}を利用する。 例えば次の設定は: \begin{quote}\small\begin{verbatim} \documentclass[b5paper,9pt,lualatex,ja=standard]{bxjsarticle} \end{verbatim}\end{quote} 次の設定と(ほぼ)等価になる (ただし\Pkg{luatexja-preset}は実際には読み込まれない): \begin{quote}\small\begin{verbatim} \documentclass[b5paper,9pt]{ltjsarticle} \usepackage{luatexja-fontspec} \usepackage[ipaex]{luatexja-preset} \end{verbatim}\end{quote} |jafont| を指定した場合は: \begin{quote}\small\begin{verbatim} \documentclass[b5paper,lualatex,ja=standard,jafont=ms]{bxjsarticle} \end{verbatim}\end{quote} 次の設定と(ほぼ)等価になる: \begin{quote}\small\begin{verbatim} \documentclass[b5paper]{ltjsarticle} \usepackage{luatexja-fontspec} \usepackage[ms]{luatexja-preset} \end{verbatim}\end{quote} \Note 補足: \begin{itemize} \item \Pkg{luatexja-preset}パッケージの読込が行われるのは |jafont| を 指定した場合に限られる。 \end{itemize} %------------------- \subsection{注意事項} 主にJSクラスとの違いについての注意。 \begin{itemize} \item ページレイアウトについて、JSクラスの設計思想を受け継いで いるが、全く同じになるわけではない。 \item JSクラスの一部のオプションで、 BXJSクラスでは使用不可能なものがある。 (\ref{ssec:JS-deleted-option}節参照。) \item BXJSクラスではページレイアウトを設定するために 内部で\Pkg{geometry}パッケージを読み込んでいる。 そのため、後からユーザが\Pkg{geometry}を読み込むことはできない。 ページレイアウトを変更する場合は、BXJSクラスが用意している 再設定用の命令(\ref{ssec:page-layout}節参照)か、または \Pkg{geometry}パッケージが提供する再設定用命令(|\geometry| 等) を利用する。 \item |papersize|オプションは既定で有効になっていて、 出力用紙サイズはクラスオプションで指定したものに 自動的に設定される。 この処理を無効にするには|nopapersize|オプションを指定すればよい。 \item |papersize|オプションの処理は\Pkg{geometry}パッケージの 機能により行われる。 \Pkg{hyperref}パッケージや(最近の)\Pkg{graphics}/ \Pkg{color}パッケージがもつ出力用紙サイズ設定の機能は これと干渉する可能性があるので、 BXJSクラスにおいては自動的に無効化される。 \item \Pkg{hyperref}パッケージにおける“PDFの文字コード”の設定は エンジンごとに適切な値が異なっていて複雑であり、 これが不適切であるためにPDF文書情報(しおり等)が文字化けして しまう事例が数知れない。 そこで、文書クラス側でエンジン毎に適切な設定を予め行う ようにした。 \footnote{従って、(u){\pLaTeX}において、ほとんどの場合に \Pkg{pxjahyper}パッケージを読み込む必要がない。 ただし読み込んでも構わないし、必要な場合もある。}% (ただし文書クラスが\Pkg{hyperref}を読み込むわけではない。) \item pdf{\LaTeX}上で\Pkg{hyperref}で |pdftitle| 等の文書情報に 和文文字を含めたい場合は、|\hypersetup| 命令を通常通り 使うことができる。 \footnote{ちなみに、普通に\Pkg{CJKutf8}パッケージを用いた場合は、 この方法では失敗してしまう。 恐らく |\hypersetup| 命令全体を |CJK*| 環境で囲う必要が あるのだと思われる。}% \begin{quote}\small\begin{verbatim} \documentclass[pdflatex,a4paper,ja=standard]{bxjsarticle} \usepackage[colorlinks]{hyperref} \hypersetup{pdftitle={日本語タイトル}} \end{verbatim}\end{quote} \Pkg{hyperref}のパッケージオプションで和文文字を含む文書情報を 指定することはできない。 \item |jafont| が無い場合の“既定のフォント設定”は多くのエンジンに おいて「IPAexフォント使用」であるが、(u){\pLaTeX}だけは異なっていて 「何も指定しない状態」(JSクラスと同様)である。 すなわち実際に使われる物理フォントの選択はDVIウェアの設定に 委ねられている。 \item JSクラスは |\ifdraft| という公開名のスイッチ \footnote{スイッチなので{\LaTeX}レベルの命令ではない。 標準クラスではこれに相当するものは |\if@draft| という非公開の 制御綴で定義されている。}% を用いているが、これは\Pkg{ifdraft}パッケージと衝突する。 そこでBXJSクラスでは代わりに |\ifjsDraft| の名前を 用い、本文開始時に |\ifdraft| が未定義の場合に限り、 |\ifjsDraft| を |\ifdraft| にコピーする処理にしている。 \Note JSクラスの |\ifdraft| は2016/07/13版で廃止された。 従って、BXJSクラスにおいて |\ifdraft| スイッチの使用を 非推奨とし、将来的に廃止を予定する。 \item 1.2版より、|\bf| や |\it| 等の {\pLaTeX}\,2.09方式のフォント選択命令の使用が 非推奨となり、これらの命令を使うと警告が出るようになった。 詳細は\ref{sec:Old-font-commands}節を参照。 % TODO: \@ptsize の話 \end{itemize} %=========================================================== \section{Pandocモードの使い方} \label{sec:Pandoc-mode} 「Pandocモード」は文書形式変換ツールである Pandoc\footnote{\url{http://pandoc.org/}}% での日本語{\LaTeX}文書生成(および{\LaTeX}経由のPDF生成) のために調整された設定である。 \begin{quote} |\documentclass[pandoc,|\Meta{ドライバ}% |,jafont=|\Meta{フォント指定}|,|\Meta{他オプション}|]|% |{|\Meta{クラス名}|}| \end{quote} \begin{itemize} \item クラスオプションに |pandoc| を指定し、代わりに 「エンジン」と「和文ドライバ(|ja|)」のオプションを省く。 \footnote{|pandoc| が指定された場合は、エンジンオプションの 値は |autodetect-engine|、和文ドライバの値は |pandoc| に 固定される。} \item エンジンがDVI出力である場合のドライバの 既定値が |dvipdfmx| になる。 ただし明示的にドライバオプションを与えることで |dvips| などに 変更できる。 \item 「和文フォント(|jafont|)」および他のクラスオプションは 従来通り使用できる。 \end{itemize} 以下でPandocでBXJSクラスを用いる例を示す。 \begin{itemize} \item \Pkg{bxjsarticle}クラスを使用する一例。 \begin{itemize} \item {\XeLaTeX}経由 \item 用紙サイズはA4判 \item 和文フォント設定は |ipaex| \end{itemize} コマンド行は次のようになる \footnote{もちろん、実際には改行を含めず1行で書く。 なお、Pandoc 1.16版以降では、用紙サイズオプションについては、 変数 |papersize| の値に“|paper|”を付加したもの (|-V papersize=a4| ならば |a4paper|)が使われる。 ここで |a4var| や |b5var| を使えるようにするため、 BXJSクラスでは |a4varpaper| 等を別名として用意している。}: \begin{quote} |pandoc| \Meta{入力ファイル名}\ |-o| \Meta{出力ファイル名}|.pdf| |-t latex|\\\quad |--latex-engine=xelatex| |--no-tex-ligatures|\\\quad |-V papersize=a4| |-V documentclass=bxjsarticle| |-V classoption=pandoc|\\\quad |-V classoption=jafont=ipaex| \end{quote} なおこの場合、途中で生成される{\LaTeX}文書のクラス指定は 以下のようになる: \begin{quote} |\documentclass[a4paper,jafont=ipaex,pandoc]{bxjsarticle}| \end{quote} \item \Pkg{bxjsbook}クラスを用いる場合の一例。 \begin{itemize} \item 節番号を出力する \item Lua{\LaTeX}経由 \item 用紙サイズはB5判 \item 和文の基底フォントサイズは11Q \item 和文フォント設定は |ipaex| \item 欧文フォントをPandocの機能で設定 \end{itemize} コマンド行は次のようになる: \begin{quote} |pandoc| \Meta{入力ファイル名}\ |-o| \Meta{出力ファイル名}|.pdf| |-N| |-t latex|\\\quad |--top-level-division=chapter| |--latex-engine=xelatex| |--no-tex-ligatures|\\\quad |-V papersize=b5| |-V documentclass=bxjsbook| |-V classoption=pandoc|\\\quad |-V classoption=jbase=11Q| |-V classoption=jafont=ipaex|\\\quad |-V mainfont="TeX Gyre Termes"| |-V sansfont="TeX Gyre Heros"| \end{quote} 注意事項: \begin{itemize} \item \Pkg{bxjsbook}クラスは「章(|\chapter|)」をもつクラスなので、 Pandocで |--top-level-division=|\linebreak[0]|chapter| の指定 \footnote{|--top-level-division| はPandocの1.18版で新設された オプションで、それより前は代わりに |--chapters| オプションを 指定していた。}% が必要。 \end{itemize} \item Pandocで({\LaTeX}経由で)PDFを出力する場合、 エンジン指定(|--latex-engine|)は |pdflatex|、|xelatex|、|lualatex|のみがサポートされる。 しかし、Pandocの出力を「単体の{\LaTeX}文書」とすることで、 {\LaTeX}エンジンに(u){\pLaTeX}を使用することができる。 出力された{\LaTeX}文書は通常の方法でPDFやPostScript形式に 変換できる。 \begin{quote}\small \begin{verbatim} pandoc mydoc.md -o mydoc.tex -s -V documentclass=bxjsarticle -V classoption=pandoc uplatex mydoc uplatex mydoc dvipdfmx mydoc \end{verbatim} \end{quote} \end{itemize} %=========================================================== \section{クラスオプション} \label{sec:Class-Option} %------------------- \subsection{BXJSクラスに特有のオプション} \label{ssec:BXJS-specific-option} JSクラスには無くBXJSクラスで追加されたクラスオプション。 \begin{itemize} \item エンジンオプション\Means 実際に使用するエンジン({\LaTeX}コマンド名)を指定する。 有効な値は |latex|、|platex|、|uplatex|、|pdflatex|、|xelatex|、 |lualatex|、|platex-ng| である。 エンジンオプション(と次項の |autodetect-engine| の何れか) の指定は必須である。 \Note |platex-ng| は{\pTeX-ng}エンジン (別名“A\pTeX”、“Asiatic \pTeX”)のためのオプションである。 現時点では |platex-ng| 指定時の仕様は流動的であり詳細を述べる ことは避けるが、大体は |uplatex| と同様になる。 {\pTeX-ng}はPDF出力を行うので、ドライバオプションは指定しない。 \footnote{現状の実装では、自動的に |dvipdfmx| が グローバルオプションに追加される。 また、|platex-ng| オプションの変種に |platex-ng*| があり、 こちらは |dvipdfmx| の自動追加を行わない。} \item |autodetect-engine|\Means 使用しているエンジンを判定して、自動的に適切なエンジンオプションを 設定する。 \footnote{実はエンジンの判定は常に行っていて、エンジンオプションが 指定された場合はそれが正しいかを検査して、誤りの場合はエラーを 出すようにしている。}% \Note BXJSクラスの設計の思想としては、 「{\LaTeX}文書がどのエンジンでコンパイルすべきものかは ソース中に明示されるべき」と考えていて、 従って、“人間が普通に”文書を作る際にはこのオプションの 使用は推奨されない。 このオプションは“{\LaTeX}ソースの自動生成”が絡む処理を念頭において 用意されている。 \item ドライバオプション\Means DVI出力のエンジンを用いる場合に、実際に使用するDVIウェアの名前を 指定する。 有効な値は |dvips|、|dvipdfmx|、|dviout|、|xdvi| である。 DVI出力時はドライバオプション(と次項の |nodvidriver| の何れか) の指定は必須である。 \footnote{ただし現状では、ドライバオプションが無い場合には エラーではなく警告が出る。} \item |nodvidriver|\Means 特殊なドライバオプションの一種で、BXJSクラスが持つ ドライバ依存の機能を全て抑止することを指定する。% \footnote{従って、ドライバ依存のパッケージを使用しなければ、 出力されるDVIファイルは特定のDVIウェアに依存しないものになる。} \item |dvi=|\Meta{ドライバ名}\Means エンジンがDVI出力の場合に限り、指定のドライバオプションを 有効にする。 \footnote{実際にドライバオプションが有効化された場合は、 そのオプションがグローバルオプションとしても働く。 例えば、DVI出力のエンジンで |dvi=dvipdfmx| が指定された場合は、 |dvipdfmx| がグローバルオプションに追加される。}% |autodetect-engine| と一緒に使うことが想定されている。 \item |dvipdfmx-if-dvi|\Means |dvi=dvipdfmx| と同値。 \Note |dvi| オプションは1.2版で新設されたもので、以前は このオプションのみが存在した。 \item |pandoc|\Means 「Pandocモード」(\ref{sec:Pandoc-mode}節)を指定する。 以下の設定が行われる: \begin{itemize} \item エンジンオプションが |autodetect-engine| に固定される。 \item 和文ドライバが |pandoc| に固定される。 \item ドライバオプションについて |dvi=dvipdfmx| が既定になる (明示指定で上書可能)。 \end{itemize} \item |nopapersize|\Means “papersize special出力”を抑止する。 (JSクラスとは異なり、special出力のオプション |papersize| は既定で有効である。) \Note papersize specialを出力する他のパッケージとの干渉に 対する対策。 \item |ja=|\Meta{名前}\Means 使用する和文ドライバの名前を指定する。 (詳細は\ref{sec:Ja-Driver}節を参照。) 標準で提供されている和文ドライバには |minimal|、 |standard|、|pandoc| がある。 既定値は、エンジンが |platex| か |uplatex| の時は |standard|、 それ以外は |minimal|。 \item |jadriver=|\Meta{名前}\Means 「|ja=|\Meta{名前}」の(0.9版以前で使われていた)別名。 \item |jafont=|\Meta{名前}\Means “和文フォントプリセット指定”の名雨を設定する。 \Note \ref{sec:Basic}節で解説した通り、standard和文ドライバでは |jafont| の値が利用される。 \item |japaram={|\Meta{キー}|=|\Meta{値}|,...}|\Means “和文ドライバパラメタ”の値を設定する。 詳しくは\ref{sec:Ja-Driver-Param}節を参照。 \Note |jafont| と |japaram| の値がどのように解釈されるかは 和文ドライバの仕様次第である。 minimal和文ドライバではこの2つの値は全く参照されない。 \item |base=|\Meta{長さ}\Means 基底フォントサイズ(|\normalsize| のフォントのサイズ)を指定する。 JSクラスの |10pt|、|11pt| 等と同じ役割で、任意の値を指定できる。 基底フォントサイズの既定値は10\,ptである。 \Note |##pt| の形のオプションには名前と実際に設定される値が ずれているものが多く、例えば |11pt| は10.95\,pt、 |14pt| は 14.4\,pt が実際の設定値である。 \footnote{これは昔の{\LaTeX}の“magstep”の習慣に由来する。}% これに対して |base=14pt| は文字通り14\,ptを設定する。 \Note \Meta{長さ}には\Pkg{calc}パッケージの式が使用できる。 この他に、特別に、(u){\pLaTeX}以外のエンジンでも |11Q| の ようにQ単位で指定することができる (この場合は“\Meta{実数}|Q|”の形に限られ式は使えない)。 \footnote{なお、(u){\pLaTeX}ではエンジンが単位 |Q| をサポート するので、|11Q| も |10Q+1Q| も\Pkg{calc}の式として受け付けられる。} \item |jbase=|\Meta{長さ}\Means 和文を基準にして基底フォントサイズを指定する。 すなわち和文フォントの |\normalsize| のサイズを指定の長さとする。 \footnote{この場合に決定されるmag値は和文スケール値にも依存する ことに注意。}% \Note \Meta{長さ}の書式は |base| オプションと同様。 \item |scale=|\Meta{実数}\Means 和文スケール値を設定する。 既定値は 0.924715(= 13\,Q/10\,pt)である。 \footnote{これはJSクラスの設計に基づく値である。 ただし実装の都合で、JSクラスの実際のスケール値はこれから 僅かだけずれている。}% \item |noscale|\Means |scale=1| と同値。 \item |paper={|\Meta{横幅}|}{|\Meta{縦幅}|}|\Means 用紙サイズ設定。 |a4paper| 等と同じ役割で、任意の値を指定できる。 用紙サイズの既定値はA4縦 ($\mbox{210\,mm}\times\mbox{294\,mm}$)である。 \item |enablejfam=|\Meta{値}\Means 数式中の和文出力をサポートするか否か。 値は |true|(有効)/|false|(無効)/|default|(既定値に従う) の何れかである。 エンジンや和文ドライバの種類により、 既定値が有効・無効の何れになるかは異なり、また、 そもそも有効・無効の一方しか選択できない場合もある。 詳細については\ref{sec:Ja-math-fonts}節を参照されたい。 \item |disablejfam|\Means |enablejfam=false| と同値。 \Note JSクラスとの互換のため存在する。 \end{itemize} 以下に挙げるのは上級者向けのオプションである。 \begin{itemize} \item |zw|(既定)\Means |\jsZw| と等価な命令として |\zw| を定義する。 \item |nozw|\Means |zw| の否定。 \Note 命令名の衝突に対する対策。 \item |js|(既定)\Means JSクラス(例えば\Pkg{bxjsreport}の場合は\Pkg{jsbook}) が読込済であるように振舞う。 \Note 「JSクラスであるかによって挙動を変える」 パッケージに対する対策。 \item |nojs|\Means |js| の否定。 \Note つまり「JSクラスの一種である」と判定されると不都合な場合に このオプションを指定する。 \item |bigcode|\Means {\upTeX}エンジンとdvipdfmxの組合せで\Pkg{hyperref}パッケージを 利用する時に適用されるToUnicode CMapとして |UTF8-UTF16| を指定する。 PDFの文書情報の文字列にBMP外の文字が含まれる場合には この指定が必要である。 |UTF8-UTF16| のファイルがインストールされていないと、 dvipdfmxの処理が失敗する。 \item |nobigcode|\Means |bigcode| の否定。ToUnicode CMapとして |UTF8-UCS2| を指定する。 この場合は文書情報の文字列にBMP外の文字を使用できない。 \Note |UTF8-UTF16| のファイルが利用できるかを確実に判定するのは 困難なため、|bigcode| の既定値は次のようなアドホックな方法で 決めている: {\TeX}エンジンのバージョンが3.14159265以上 \footnote{{\TeX}のバージョン3.14159265は2014年1月にリリースされた。} である場合は、 ({\TeX}環境がある程度新しく、|UTF8-UTF16| が利用可能と思われるので) |bigcode| を既定とし、それ以外は |nobigcode| を既定とする。 \item |precisetext|\Means {\XeTeX}エンジンにおいて、「ActualText生成機能」を有効化する。 \footnote{つまり、|\XeTeXgenerateactualtext=1| を行う。 ActualText 生成機能と日本語処理は相性が悪いため、これを使うと 出力PDFのサイズが増大する(1.5~2倍)ことに注意。} \item |noprecisetext|(既定)\Means |precisetext|の否定。 \item |simplejasetup|(既定)\Means {\XeTeX}エンジン自体の行組版機能(|\XeTeXlinebreaklocale| 等) を利用した、簡易的な日本語用組版設定を行う。 \Note {\XeTeX}エンジン以外では無効である。 また、\Pkg{xeCJK}や\Pkg{zhspacing}等の日本語(CJK)組版用 パッケージが読み込まれた場合も無効化される。 特に、和文ドライバがstandardである場合は、必ず\Pkg{xeCJK}が 読み込まれるため、このオプションは無意味である。 \item |nosimplejasetup|\Means |simplejasetup| の否定。 \item |a4varpaper|、|b5varpaper|\Means 用紙サイズ指定オプション |a4var|、|b5var| の別名。 \Note Pandocで |-V papersize=a4var| の指定を可能にするため。 \item |mag=|\Meta{整数}\Means 版面拡大率(mag値)の直接設定。 既定は |base| から算出する。 \Note mag値が$n$の場合、版面が $n/1000$ 倍に拡大される。 \item |magstyle=|\Meta{値}\Means “版面拡大”の実現方法を指定する。 有効な値は |usemag|、|nomag|、|nomag*| の何れか。 詳細は\ref{ssec:magstyle}節を参照。 \item |geometry=|\Meta{値}\Means \Pkg{geometry}パッケージの読込に対する制御。 \begin{itemize} \item |class|(既定)\Means 通常通り、文書クラスが\Pkg{geometry}パッケージを読み込む。 ユーザは\Pkg{geometry}を後から読み込むことはできない。 \item |user|\Means 文書クラスによる\Pkg{geometry}パッケージの読込をスキップする。 この場合、ユーザが自分で\Pkg{geometry}を読み込むことが想定される。 \footnote{\Pkg{geometry}の読込は必須ではなく、ページレイアウトの パラメタを自分で設定しても構わない。 ただし\Pkg{geometry}の読込が強く推奨される。 (\Pkg{geometry}非読込時の動作テストはほとんど行っていない。)} \end{itemize} \Note “どうしても\Pkg{geometry}パッケージを自分で読み込みたい” という人のための設定。 \item |oldfontcommands|\Means |\bf| 等の“二文字フォント命令”の使用を許容する。 \item |nooldfontcommands|(既定)\Means “二文字フォント命令”の使用に対して警告を出す。 詳細については\ref{sec:Old-font-commands}節を参照されたい。 \item |fancyhdr=|\Meta{真偽値}% \footnote{真偽値は |true|(真)または |false|(偽)で指定する。}\Means \Pkg{fancyhdr}パッケージの機能に対する補正を行うか。 真の場合、以下の補正が行われる。既定値は真。 \begin{itemize} \item ヘッダ・フッタ書式の既定値に含まれる“二文字フォント命令” を除去する。 \item \Pkg{bxjsbook}クラスでヘッダ・フッタの横幅を(|\textwidth| ではなく)|\fullwidth| に一致させる。 \end{itemize} \item |textwidth-limit=|\Meta{整数}\Means \Pkg{bxjsbook}クラスにおける、|\textwidth| の上限の長さ (全角単位)。% \footnote{つまり、\Pkg{bxjsbook}クラスにおいては、\Pkg{geometry}で 指定する“width”の値は |\fullwidth| の値と見なされ、それが このオプションで指定する上限値を超えている場合は、|\textwidth| は上限値になる。 この場合の本文領域の配置の様式は\Pkg{jsbook}クラスと同様である。} % 既定値は40。 \item |paragraph-mark=|\Meta{文字1つ}\Means パラグラフ(|\paragraph|)の見出し先頭に付く記号。 既定値は“■”。 \item |whole-zw-lines=|\Meta{真偽値}\Means ページレイアウト策定において「行長を全角幅の整数倍に丸める処理」 を行うか否か。 \item |hyperref-enc=|\Meta{真偽値}\Means \Pkg{hyperref}パッケージについて 「PDF文字列の文字コード設定を補正する処理」 を行うか否か。 \item |jaspace-cmd=|\Meta{真偽値}\Means 以下に挙げる和文空白命令を定義するか否か。 (詳しくは\ref{ssec:ja-settings}節を参照。) \begin{quote} |\jaenspace|、|\jathinspace|、|\>|、 |\_|(|\|\,+\,全角空白) \end{quote} \item |layout=|\Meta{値}\Means レイアウトの変種を選択する。 現状では、過去の版との互換性を維持するために用いられている。 有効な値は以下の通り。 \begin{itemize} \item \Pkg{bxjsbook}クラスの場合: \begin{itemize} \item |v2|(既定)\Means 現版の既定のレイアウト。 \item |v1|\Means 1.2a版以前の(本来は不適切な)水平マージンの設定を適用する。 (詳細は\ref{ssec:page-layout}節を参照。) \end{itemize} \item \Pkg{bxjsreport}クラスの場合: \begin{itemize} \item |v2|(既定 \footnote{1.6版より既定値が |v2| に変更された。})\Means JSクラスに新設された\Pkg{jsreport}クラスのレイアウトを継承する。 \item |v1|\Means 従来の「\Pkg{jsbook}クラス\,+\,|report|オプション」の レイアウトを継承する。 \end{itemize} \item それ以外のクラスでは、本オプションは無効である。 \end{itemize} \end{itemize} %------------------- \subsection{JSクラスのオプションで使用可能なもの} \label{ssec:JS-inherited-option} これらについては名前だけ列挙するに留める。 ただし、“JSクラス特有”(標準クラスに無い)オプションの一部に ついては解説を加える。 \paragraph{用紙サイズ指定} |a3paper|、|a4paper|、|a5paper|、|a6paper|、 |b4paper|、|b5paper|、|b6paper|、 |a4j|、|a5j|、|b4j|、|b5j|、|a4var|、|b5var|、 |letterpaper|、|legalpaper|、|executivepaper|。 \Note |a4var| はA4変判($\mbox{210\,mm}\times\mbox{283\,mm}$)、 |b5var| はB5変判($\mbox{182\,mm}\times\mbox{230\,mm}$)。 \Note (BX)\|\Means (非数式モードで \footnote{|\>| という命令名は、plain {\TeX}では数式中の空白 ({\LaTeX}の |\:| と同等)を表す。 このため、実際には{\LaTeX}でも |\>| は |\:| と同等の命令として 定義されている。 この「plain互換の |\>|」を利用したコードが影響を受けるのを避ける ため、数式中では |\>| は従来通り |\:| と同等の動作を行う。}% )和欧文間空白を挿入する。 \Note |jaspace-cmd=false| 指定時は定義されない。% \footnote{ただし、standard和文ドライバで自動的に読み込まれる \Pkg{zxjatype}や\Pkg{bxcjkjatype}のパッケージは、 それ自体が同様の機能の |\>| を提供することにも注意を要する。} \item |\jachar{|\Meta{文字1つ}|]|\Means 指定の文字を和文文字として(現在の和文フォントで)出力する。 \item |\jafontsize{|\Meta{フォントサイズ}|}{|\Meta{行送り}|}|\Means “和文規準”でフォントサイズを指定する。 すなわち、和文の1\,zwが\Meta{フォントサイズ}と等しくなるように フォントサイズを設定する。 \Note 命令の引数の長さ指定ではエンジンの種類に関わらず |Q|/|H| の単位が使用できる。 \item 和文数式フォント命令\Means JSクラスと同様に、 |\mathmc| で「明朝」、|\mathgt| で「ゴシック」の 和文数式フォントを指定する。 \item 欧文数式フォント命令での和文の連動\Means |\mathrm| で和文が「明朝」、 |\mathsf| および |\mathtt| で和文が「ゴシック」に指定される。 \Note JSクラスとは異なり、“連動の組合せ”は テキストと同一であることに注意。 \end{itemize} 例えば、{\pLaTeX}において、次のように「和文間空白」を 利用して均等割りを行うという技法が知られている。 \begin{quote}\small\begin{verbatim} %% \kintouwari{<整数n>}{<テキスト>} % n全角の幅にテキストを均等割りで出力する. \newcommand\kintouwari[2]{{% \setlength{\kanjiskip}{\fill}% \makebox[#1zw][s]{#2}}} \end{verbatim}\end{quote} これと同等のものを、次のようにエンジン非依存な形で書くことができる。 \begin{quote}\small\begin{verbatim} \newcommand\kintouwari[2]{{% \setkanjiskip{\fill}% \makebox[#1\zw][s]{#2}}} \end{verbatim}\end{quote} %=========================================================== \section{数式中の和文出力について} \label{sec:Ja-math-fonts} minimal和文ドライバは数式中の和文出力の機能を何も提供しない。 従って、そのような機能を提供する他のパッケージを併用するので ない限り、数式中に和文を書いたときの挙動は未定義である。 standard和文ドライバ(およびそれを継承する和文ドライバ)に おける数式中の和文出力の扱いは、エンジンと |enablejfam| オプション の値の組合せにより異なり、表\ref{tbl:ja-math}に示すようになる。 以下でこの表に関する補足説明を行う。 \begin{itemize} \item この表にある以外のエンジンと |enablejfam| 値の組合せは 許容されない。 この場合、警告が出て、|enablejfam| が可能な値に自動的に変更される。 \item 「直書き」が「可」の場合、数式フォント命令(|\mathXX{}|)の外に 書いた和文文字は明朝体で出力される。 「不可」の場合、そのような和文文字の扱いは未定義である。 \item 「|\mathmc|/|gt|」が「サポート有り」の場合、これらの命令は “本物”の数式フォント命令として働く。 「フォールバック」の場合は、これらの命令は内部で一旦テキストモードに 切り替えて非数式として出力される。 このフォールバック機能を実用したい場合は、 \Pkg{amstext}(または\Pkg{amsmath})パッケージの併用が望ましい。% \footnote{\Pkg{amstext}を読み込まない場合、 添字中で |\mathmc|/|gt| を用いたときに 文字サイズが非添字のものに戻ってしまうという不具合が出る。} \end{itemize} \DeleteShortVerb{\|} \MakeShortVerb{\+} \begin{table}[t] \caption{standard和文ドライバにおける数式中の和文出力のサポート} \label{tbl:ja-math} \small\centering \begin{tabular}{ll|ccc} \hline エンジン & +enablejfam+ & 直書き & +\mathmc+/+gt+ & 和欧文連動 \\ \hline +(u)platex+ & +true+(既定) & 可 & サポート有り & 有り \\ & +false+ & 不可 & フォールバック & --- \\ +lualatex+ & +true+ & 可 & サポート有り & 有り \\ +xelatex+ & +true+ & 可 & フォールバック & 無し \\ & +false+(既定)& 不可 & フォールバック & --- \\ +pdflatex+ & +false+ & 不可 & フォールバック & --- \\ \hline \end{tabular} \end{table} \DeleteShortVerb{\+} \MakeShortVerb{\|} %=========================================================== \section{“二文字フォント命令”に対する警告} \label{sec:Old-font-commands} ここでいう“二文字フォント命令”というのは、|\bf| や |\it| 等の {\LaTeX}~2.09で標準であったフォント選択命令のことである。 \footnote{なお、|\em| は「二文字の名前のフォント命令」であるが、 これは{\LaTeXe}でも標準命令であり、“二文字フォント命令”には 含まれない。}\ {\LaTeXe}においては、これらに代わって、|\bfseries| 等の (NFSSに基づく)新しい命令群が標準となり、 古い二文字フォント命令はカーネルではもはサポートされなくなった。 しかし同時に、二文字フォント命令を利用したパッケージを 動作させるための“当面の” \footnote{ちなみに、 {\LaTeXe}が最初にリリースされたのは1994年のことである。}% 互換性対策として、 「標準の文書クラス(article、book等)で二文字フォント命令の サポートを行う」という方針がとられた。 これに倣って、他の文書クラスの多くもクラスのレベルで 二文字フォント命令をサポートしていて、 BXJSクラスもその例に含まれる。 ところが最近になって、一部の文書クラス (\Pkg{KOMA-Script}クラス群や\Pkg{memoir}クラス等) において、二文字フォント命令を明示的に非推奨の扱いにした上で、 その使用に制限を設ける (警告を出す、オプションを指定しないと使えない、等) という措置が取られるようになっている。 これに合わせて、BXJSクラスでは1.2版より 二文字フォント命令を非推奨とし、また、 既定でその使用に対して警告を出すようにした。 %------------------- \subsection{警告の内容} 現状では警告はとても控えめに出される。 すなわち、文書中で |\bf| などの二文字フォント命令が呼び出された場合、 コンパイルの最後に(一度だけ)以下の警告メッセージが表示される。 \begin{quote}\small\begin{verbatim} Class bxjsarticle Warning: Some old font commands were used in text (bxjsarticle) (see the log output for detail). \end{verbatim} \end{quote} 少し詳細な注意メッセージが、ログファイルのみに書き出される。 なお、この警告は、パッケージの機能の実装として用いられたものも含めて 全ての二文字フォント命令の呼出が対象になる。 ただし例外として、thebibliography環境の内部で呼び出されたものだけは 対象から除外される。 {\BibTeX}の文献スタイルファイル(|.bst|)や文献データベース(|.bib|) のファイルは(パッケージと比較しても)極めて古いものが 割と普通に使い続けられることが多い。 そういった極めて古いファイルに由来する二文字フォント命令を 警告したとしても、多くの場合、ユーザ側には対処する方法が存在しない。 これが文献リスト環境中で警告を抑止する理由である。 %------------------- \subsection{警告の制御} 二文字フォント命令に対する警告の有無はクラスオプションで制御できる。 \begin{itemize} \item |oldfontcommands|\Means 二文字フォント命令を警告の対象にしない。 \item |nooldfontcommands|(既定)\Means 二文字フォント命令を警告の対象にする。 \end{itemize} また、以下の命令により、文書中で一時的に警告の設定を変えられる。 \footnote{これらの命令の効果はグルーピングの影響を受ける。} \begin{itemize} \item |\allowoldfontcommands|\Means これ以降に実行される二文字フォント命令を警告の対象にしない。 \item |\disallowoldfontcommands|\Means これ以降に実行される二文字フォント命令を警告の対象にする。 \end{itemize} %------------------- \subsection{将来的な二文字フォント命令の扱い} \Note 以下の記述は現在存在する和文ドライバを使用する場合に ついてのものである。 \begin{itemize} \item 二文字フォント命令に対する警告の様式は、 今後変更される可能性がある。 \item しかし、将来に二文字フォント命令のサポートが廃止されることはない。 \item |oldfontcommands| オプションよおび |\allowoldfontcommands| 命令 は継続して提供され、 これらの機能を用いた場合は、二文字フォント命令に関する警告が 端末に表示されることは一切無い。 \end{itemize} %=========================================================== \end{document} %=========================================================== \appendix \section{パッケージレベル公開命令の一覧} \begin{itemize} % \jsAtEndOfClass はBXJSの補助パッケージ専用 \item |\jsBaseFontSize| \item |\jsDocClass| \begin{itemize} \item |\jsArticle| \item |\jsBook| \item |\jsReport| \item |\jsSlide| \end{itemize} \item |\ifjsDraft| \item |\jsEngine| \item |\jsFontSizeChanged| \item |\jsGeometryOptions| \item |\jsInhibitGlue| \item |\jsInhibitGlueAtParTop| \item |\jsInJaParen| \item |\ifjsInPdfMode| \item |\jsJaChar| \item |\jsJaFont| \item |\jsJaParam| \item |\jsKanjiSkip| \item |\jsLetHeadChar| \item |\jsParagraphMark| \item |\jsResetDimen| \item |\jsScale| \item |\ifjsSeireki| \item |\jsSimpleJaSetup| \item |\jsSubtitle| \item |\jsTextWidthLimit| \item |\jsUnusualPtSize| % \jsUseMinimalPageLayout はテスト用 \item |\ifjsWitheTeX| \item |\ifjsWithupTeX| \item |\jsXKanjiSkip| % \jsZw はユーザレベル命令 \end{itemize} %% EOF