% 文字コードは UTF-8
% lualatex で組版する
\documentclass[a4paper]{ltjsarticle}
\renewcommand{\headfont}{\romanseries{sbc}\sffamily}
\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{bxtexlogo}
\bxtexlogoimport{*}
\usepackage{shortvrb}
\MakeShortVerb{\|}
\newcommand{\PkgVersion}{2.9d}
\newcommand{\PkgDate}{2025/06/06}
\newcommand{\Pkg}[1]{\textsf{#1}}
\newcommand{\Meta}[1]{$\langle$\mbox{}\nobr#1\nobr\mbox{}$\rangle$}
\newcommand{\Note}{\par\noindent ※}
\newcommand{\Means}{：\ }
\newcommand{\jemph}{\textsf}
\newcommand{\wbr}{\linebreak[0]}
\newcommand{\nobr}{\nolinebreak[4]}
\newcommand{\xast}{\mbox{}\mbox{$^*$}}
\newcommand{\JSl}{\mbox{}／\mbox{}}
\newcommand{\JSS}{\raisebox{-0.12\zw}{\makebox[1\zw]{%
  \rule{0.4pt}{0.25\zw}\rule{0.9\zw}{0.4pt}\rule{0.4pt}{0.25\zw}}}}
%-----------------------------------------------------------
\begin{document}
\title{\Pkg{BXjscls} パッケージ\\
  （BXJS文書クラス集）\\
  ユーザマニュアル}
\author{八登崇之\ （Takayuki YATO; aka.~``ZR''）}
\date{v\PkgVersion\quad[\PkgDate]}
\maketitle

\begin{abstract}
本パッケージに含まれる文書クラス集は、
奥村晴彦氏および“日本語{\TeX}開発コミュニティ”により作製された
\Pkg{jsclasses}パッケージの文書クラス集
の拡張版に相当する。
元の\Pkg{jsclasses}のクラスが{\pLaTeX}と{\upLaTeX}のみを
サポートするのに対して、
本パッケージのクラスは主要エンジンの全てをサポートする。
\end{abstract}

\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クラスはこれらに加えて{(pdf)\LaTeX}と{\XeLaTeX}と{\LuaLaTeX}を
  サポートしており主要エンジンの全てで使用可能である。
\item (u){\pLaTeX}以外では各々のエンジンの日本語処理パッケージを
  利用するが、“標準設定”を用いることで、それらのパッケージの
  設定を書かずに済ませられるので、{\pLaTeX}並に簡単に日本語の
  文書を書き始めることができる。
\item JSクラスでは、フォントのオプティカルサイズを最適にするため、
  基底フォントサイズが10\,pt以外の時に{\TeX}の版面拡大（mag）機能を
  利用しているが、これが他のパッケージと衝突して
  不具合を起こすことがある。
  BXJSクラスではmag機能を使う他に別の方式を選べるようにしている。
  \Note JSクラスについても新しい（2016/07/11以降の）版では
  同様の機能が提供されている。
\item 用紙サイズや基底フォントサイズについて、任意の値を指定する
  ことができる。
\item 文書形式変換ツールPandocを用いた日本語{\LaTeX}文書生成の
  ために調整された設定である「Pandocモード」が利用できる。
\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}のコマンド名」を書く。
  |platex|、|uplatex|、
  |pdflatex|、|xelatex|、|lualatex|等が指定できる。
\item DVI出力のエンジンを使う場合は、\Meta{ドライバ}の指定が必須で、
  これは実際に使っている「DVIウェアの名前」を書く。
  |dvips|、|dvipdfmx|、|dviout|、|xdvi|が指定できる。
  PDF出力のエンジンの場合は\Meta{ドライバ}の指定は不要である。
\item “標準設定”を適用するので |ja=standard| を指定する。
\item 既定以外のフォント設定を利用する場合は、\Meta{フォント指定}に
  その名前を書く。
  既定の設定を用いる場合は |jafont=...| 自体を省略する。
\item その他のクラスオプション（|a4paper| 等）については、
  多くの場合JSクラスと同じものが使える。
\item BXJSクラスについて、\Meta{クラス名}は以下のものがある。
  \begin{itemize}
  \item \Pkg{bxjsarticle}\Means 章のないレポート
    （\Pkg{jsarticle}に相当する）
  \item \Pkg{bxjsreport}\Means 章のあるレポート
    （\Pkg{jsreport}に相当する）
  \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}
|jafont| の値をプリセットオプションとして\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[a4paper,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}%ただしレイアウトはjsarticle相当
\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}%ただしレイアウトはjsarticle相当
\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}%ただしレイアウトはjsarticle相当
\usepackage{zxjatype}
\setCJKmainfont[BoldFont=HaranoAjiGothic-Medium.otf]{HaranoAjiMincho-Regular.otf}
\setCJKsansfont[BoldFont=HaranoAjiGothic-Medium.otf]{HaranoAjiGothic-Medium.otf}
\end{verbatim}\end{quote}

\Note 2.0版より、既定の和文フォントが「IPAexフォント」から
「原ノ味フォント」に変更された。

|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[haranoaji]{luatexja-preset}%実際にはパッケージは読み込まれない
\end{verbatim}\end{quote}

\Note 2.0版より、既定の和文フォントが「IPAexフォント」から
「原ノ味フォント」に変更された。

|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[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}\JSl
  \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}
  \Note \Pkg{hyperref}のパッケージオプションで和文文字を含む文書情報を
  指定することはできない。
  （\Pkg{hyperref}の制限仕様。）
\item (u){\pLaTeX}において、
  |jafont| が無い場合の既定のフォント設定は
  「何も指定しない状態」（JSクラスと同様）である。
  すなわち実際に使われる物理フォントの選択はDVIウェアの設定に
  委ねられている。
\item 1.2版より、|\bf| や |\it| 等の
  {\LaTeX}\,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生成）
のために調整された設定である。
特に
「Pandoc（2.0版以降）の既定の{\LaTeX}出力用テンプレートをそのまま
用いても日本語文書として適切な出力が得られる」
ことを主要な目的としている。

現状のPandocモードでは以下の調整が行われる。
\Note これらの一部についてはユーザによる設定変更が可能である。
詳細は\ref{ssec:pandoc-param}節、\ref{ssec:ja-settings}節を参照。

\begin{itemize}
\item PandocのStrong（重要）要素の出力を |\strong| 命令に合わせるため、
  |\textbf| 命令を |\strong| 命令に移譲させる。
\item |\texttt| 命令・|\verb| 命令と和文との間に入る和欧文間空白を
  調節している。
\item Pandocは入力文書中の三点リーダ“…”を |\ldots| 命令に変換するが、
  このせいで欧文扱いになるのを回避するため、
  |\ldots| を一定の条件下において和文で出力させる。
\item 全角空白文字の入力を（文字ではなく）空きの挿入と解釈する。
\item Pandocの一部の設定は |\paragraph| の見出しの体裁を変更するが、
  この場合に連動して |paragraph-mark| の既定値を空に変更する。
\item Pandocの一部の設定はプレアンブルでの\Pkg{geometry}の読込を
  発生させるが、この場合に重複読込のエラーになるのを回避するため、
  \Pkg{geometry}の読込を |\setpagelayout*| の呼出に振り替える。
\item 入力文書が言語指定を含む場合にはBabelパッケージが読み込まれるが、
  この際に発生する可能性がある不整合を回避する。
\item \Pkg{hyperref}パッケージの |unicode| オプションの有無について
  適切な選択（エンジンにより決まる）を強制する。
  （(u){\pLaTeX}をサポートするための措置。）
\end{itemize}

%-------------------
\subsection{Pandocモードの使い方}

Pandocモードを使う場合はクラスオプションを以下のように指定する。

\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}

%-------------------
\subsection{Pandocの設定の例}

BXJSクラスを用いる場合のPandocの設定について、以下で例を示す。

\Note なお、以下の記述はPandoc 2.x版に従う。
（3,x版でも通用すると思われる。）
Pandocのオプション体系は2.x版と1.x版とでかなり異なることに
注意されたい。

\paragraph{bxjsarticleの例}

以下の設定で\Pkg{bxjsarticle}クラスを使用したい。
  \begin{itemize}
  \item {\XeLaTeX}経由
  \item 用紙サイズはA4判
  \item 和文フォント設定は |ipaex|
  \end{itemize}

  この場合のコマンド行は次のようになる：
  \footnote{もちろん、実際には改行を含めず1行で書く。
    以降の例でも同様。}
  \begin{quote}
  |pandoc| \Meta{入力ファイル名}\ 
    |-o| \Meta{出力ファイル名}|.pdf|
    |-t latex-smart|\\\quad
    |--pdf-engine=xelatex|
    |-V papersize=a4|
    |-V documentclass=bxjsarticle|\\\quad
    |-V classoption=pandoc|
    |-V classoption=jafont=ipaex|
  \end{quote}

  なおこの場合、途中で生成される{\LaTeX}文書のクラス指定は
  以下のようになる：
  \begin{quote}
    |\documentclass[a4paper,jafont=ipaex,pandoc]{bxjsarticle}|
  \end{quote}

\Note 注意事項：
  \begin{itemize}
  \item Pandocの |latex| 出力の |smart| 機能は
    普通の日本語文書においては悪影響を及ぼすので、
    変換先書式（|-t|）の値は |latex|
    でなく |latex-smart|（|smart| 機能を無効化）とすべきである。
  \end{itemize}

\paragraph{bxjsbookの例}

以下の設定で\Pkg{bxjsbook}クラスを使用したい。

  \begin{itemize}
  \item 節番号を出力する
  \item Lua{\LaTeX}経由
  \item 用紙サイズはJIS~B5判
  \item 和文の基底フォントサイズは11\,Q
  \item 和文フォント設定は |haranoaji|
  \item 欧文フォントをPandocの機能で設定
  \end{itemize}

  この場合のコマンド行は次のようになる：
  \begin{quote}
  |pandoc| \Meta{入力ファイル名}\ 
    |-o| \Meta{出力ファイル名}|.pdf|
    |-N|
    |-t latex-smart|\\\quad
    |--top-level-division=chapter|
    |--pdf-engine=luslatex|\\\quad
    |-V papersize=b5|
    |-V documentclass=bxjsbook|
    |-V classoption=pandoc|\\\quad
    |-V classoption=jbase=11Q|
    |-V classoption=jafont=haranoaji|\\\quad
    |-V mainfont="TeX Gyre Termes"|
    |-V sansfont="TeX Gyre Heros"|
  \end{quote}

\Note 注意事項：
  \begin{itemize}
  \item \Pkg{bxjsbook}クラスは「章（|\chapter|）」をもつクラスなので、
    Pandocで |--top-level-division=|\linebreak[0]|chapter| の指定
    が必要。
  \item 既定テンプレート使用時は、|papersize=～| の指定は
    「クラスオプションに |～paper| を指定する」
    という形で反映される。
    BXJSクラスでは |b～paper| はJISのB列を表すので、
    |papersize=b5| でJIS~B5判に設定される。
    出力形式を{\LaTeX}以外にする（あるいは他の文書クラスを利用する）
    場合は |papersize=b5| でISO~B5判に設定される可能性が
    あることに注意。
  \end{itemize}

\paragraph{(u)\pLaTeX の使用}

Pandocで{\LaTeX}経由でPDFを出力する場合、
エンジン指定（|--pdf-engine|）は
|pdflatex|、|xelatex|、|lualatex|のみがサポートされる。
これに対して、Pandocの出力を「単体の{\LaTeX}文書」（|-s|指定）と
するとPandocが{\LaTeX}を実行しなくなり、
この場合は{\LaTeX}エンジンに(u){\pLaTeX}を使用することができる。
出力された{\LaTeX}文書は通常の方法でPDFやPostScript形式に
変換できる。

\begin{quote}\small\begin{verbatim}
pandoc mydoc.md -o mydoc.tex -s -V documentclass=bxjsreport -V classoption=pandoc ...
uplatex mydoc
uplatex mydoc
dvipdfmx mydoc
\end{verbatim}\end{quote}

%===========================================================
\section{クラスオプション}
\label{sec:Class-Option}

一般的な値の書式についての注意\Means
\begin{itemize}
\item 真偽値は、|true|（真）または |false|（偽）で指定する。
\item 長さ値および整数値は\Pkg{calc}パッケージの式
  （|2cm+3pt| 等）で指定できる。
\item \Meta{長さ\xast}のように“\xast”のついた長さパラメタについては、
  \Pkg{calc}の長さ式の代わりに、和文用単位（|Q|、|H|、|zw|、|zh|）
  付きの実数値で指定することもできる。
  \footnote{この機能は |units| 和文パラメタとは無関係である。
    和文用単位を含む長さ式は（(u){\pLaTeX}以外では）使えない。
    なお、ここで使われる |zw| は常に（(u){\pLaTeX}でも）
    “規約上の全角幅”（|\jsZw|）を指す
    （和文フォント設定が未完了のため）。}
\item 真偽値を引数にもつオプションについて、
  引数を省略してキー名のみを指定した場合は、
  引数に |true| を与えたものと見なされる。
  例えば、|use-zw| というオプション指定は |use-zw=true| と等価になる。
\end{itemize}

%-------------------
\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| と |dvi| の何れか）
  の指定は必須である。
  \footnote{ただし現状では、ドライバオプションが無い場合には
    エラーではなく警告が出る。}
\item |nodvidriver|／|class-nodvidriver|\Means
  特殊なドライバオプションの一種で、BXJSクラスが持つ
  ドライバ依存の機能を全て抑止することを指定する。
  \footnote{従って、別にドライバ依存の機能を使用しなければ、
    出力されるDVIファイルは特定のDVIウェアに依存しないものになる。
    ただし最近の{\LaTeX}カーネルはそれ自身がドライバ依存をもつ
    ことに注意。}
  \Note BXJSクラス内では |nodvidriver| と |class-nodvidriver| は
  等価であるが、「何がグローバルオプションにあるか」という観点で
  両者は異なる。
  現状で |nodvidriver| オプションを認識するパッケージがあり、
  |nodvidriver| の方はそれらのパッケージについても有効になる。
\item |dvi=|\Meta{ドライバオプション名}\Means
  エンジンがDVI出力の場合に限り、指定のドライバオプションを
  有効にする。
  \footnote{実際にドライバオプションが有効化された場合は、
    そのオプションがグローバルオプションとしても働く。
    例えば、DVI出力のエンジンで |dvi=dvipdfmx| が指定された場合は、
    |dvipdfmx| がグローバルオプションに追加される。}%
  |autodetect-engine| と一緒に使うことが想定されている。
\item |pandoc|\Means
  「Pandocモード」（\ref{sec:Pandoc-mode}節参照）を指定する。
  以下の設定が行われる：
  \begin{itemize}
  \item エンジンオプションが |autodetect-engine| に\jemph{固定}される。
  \item 和文ドライバが |pandoc| に\jemph{固定}される。
  \item ドライバオプションについて |dvi=dvipdfmx| が既定になる
    （明示指定で上書可能）。
  \end{itemize}
\item |nopapersize|\Means
  出力用紙サイズ設定
  （DVI出力の場合は所謂“papersize special出力”）
  を抑止する。
  \Note JSクラスの |papersize| オプションの否定に相当する。
  JSクラスとは異なり、|papersize| は既定で有効である。
  \Note 出力用紙サイズ設定を行う他のパッケージとの干渉に
  対する対策。
\item |ja=|\Meta{名前}\Means
  使用する「和文ドライバ」の名前を指定する。
  （詳細は\ref{sec:Ja-Driver}節を参照。）
  標準で提供されている和文ドライバには |minimal|、
  |standard|、|pandoc| がある。
  エンジンが |platex| か |uplatex| の時は |ja| の
  既定値は |standard| である。
  それ以外の場合は、一応 |minimal| となるが、
  2.0版以降ではこの場合の |ja| の省略は\jemph{非推奨}であり、
  3.0版で\jemph{禁止}される予定である。
\item |jafont=|\Meta{名前}\Means
  「和文フォントプリセット指定」の名前を設定する。
  既定値は空。
  \Note 詳細については\ref{ssec:ja-font-settings}節を参照。
  \par
  プリセット指定の値が丸括弧を含む（例えば“|sourcehan(-otc)|”）場合、
  以下のように解釈される。
  \begin{itemize}
  \item エンジンが{\XeLaTeX}\JSl{\LuaLaTeX}の場合は、
    丸括弧囲いの部分を削除した文字列（“|sourcehan|”）が使われる。
  \item それ以外の場合は、
    丸括弧だけ削除した文字列（“|sourcehan-otc|”）が使われる。
  \end{itemize}
\item |japaram={|\Meta{キー}|=|\Meta{値}|,...}|\Means
  「和文ドライバパラメタ」の値を設定する。
  既定値は空。
  \Note 詳細については\ref{sec:Ja-Driver-Param}節を参照。
  \Note |japaram| を複数回指定した場合は各々の指定内容
  （キーと値の組の列）が累積する。
  \Note |jafont| と |japaram| の値がどのように解釈されるかは
  和文ドライバの仕様次第である。
\item |ja:|\Meta{キー}|=|\Meta{値}\Means
  和文ドライバパラメタ設定の代替書式で、
  |japaram={|\Meta{キー}|=|\Meta{値}|}|
  と書いたのと同値である。
  \Note Pandocで波括弧の扱いが面倒になる場合があることへの対策。
\item |base=|\Meta{長さ\xast}\Means
  基底フォントサイズ（|\normalsize| のサイズ）を指定する。
  JSクラスの |10pt|、|11pt| 等と同じ役割で、任意の長さ値を指定できる。
  基底フォントサイズの既定値は10\,pt
  （\Pkg{bxjsslide}クラスのみ36\,pt）である。
  \Note~|##pt| の形のオプションには名前と実際に設定される値が
  ずれているものが多く、例えば |11pt| は10.95\,pt、
  |14pt| は14.4\,ptが実際の設定値である。
  \footnote{これは昔の{\LaTeX}の“magstep”の習慣に由来する。}%
  これに対して |base=14pt| は文字通り
  基底フォントサイズに14\,ptを設定する。
\item |jbase=|\Meta{長さ\xast}\Means
  和文を基準にして基底フォントサイズを指定する。
  すなわち、和文フォントの |\normalsize| のサイズを指定の長さとする。
  \footnote{この場合に決定されるmag値は和文スケール値にも依存する
    ことに注意。}
  \Note 1.8版から、|base| と |jbase| の両方の指定が可能になった。
  この場合、和文スケール値がそれらに基づいて決定される
  （|scale| 指定は無効になる）。
\item |scale=|\Meta{実数}\Means
  和文スケール値
  （$\mbox{和文の全角幅}\div\mbox{要求フォントサイズ}$）
  を設定する。
  既定値は0.924715（= 13\,Q/10\,pt）である。
  \footnote{これはJSクラスの設計に基づく値である。
    ただし実装の都合で、JSクラスの実際のスケール値はこれから
    僅かだけずれている。}
\item 用紙サイズオプション\Means
  用紙サイズ名のオプションはJSクラスで定義されているもの
  （\ref{ssec:JS-inherited-option}節参照）の他に以下のものが使える。
  \begin{itemize}
  \item |iso-bsize|\Means
    |bNpaper| の名前のオプションをISO~B判の指定と見なす。
    既定では |bNpaper| はJIS~B判の指定と見なされる。
  \item \Pkg{geometry}パッケージ（5.x版）の用紙サイズ名のオプション\Means
    以下に挙げるもの
    \footnote{JSクラスにあるオプションも含めている。}：
    \begin{quote}
      |a0paper|～|a6paper|、
      |b0paper|～|b6paper|、
      |c0paper|～|c6paper|、
      |b0j|～|b6j|、
      |ansiapaper|～|ansiepaper|、
      |letterpaper|、|executivepaper|、|legalpaper|、
      |screen|
    \end{quote}
    \Note |bNpaper| は\Pkg{geometry}ではISO~B判を意味するが、
    BXJSでの意味は |iso-bsize| の有無に従う
    （つまり既定ではJIS~B判）。
    |bNj| は\Pkg{geometry}と同じく常にJIS~B判である。
  \item 末尾が |～paper| でない名前のオプションについて、
    末尾に |～paper| を付けたもの。
    以下のものが該当する
    \footnote{|aNj|・|bNj| は |aNpaper|・|bNpaper| で代用できるので
      除いている。}：
    \begin{quote}
      |a4varpaper|、|b5varpaper|、|screenpaper|
    \end{quote}
    \Note Pandocで |-V papersize=a4var| 等の指定を可能にするため。
  \item |custompaper|\Means
    実際には何もしないダミーの用紙サイズ指定オプション。
    \Note 外部ツールと連携する場合に、
    「何らかの用紙サイズの名前が要求されるが、用紙サイズは別の方法
    （|paper| オプション等）で指定したい」
    という場合のダミーとして利用する。
  \end{itemize}
\item |paper={|\Meta{横幅}|}{|\Meta{縦幅}|}|\Means
  長さ値の直接指定による用紙サイズ設定。
  用紙サイズの既定値はA4縦
  （$\mbox{210\,mm}\times\mbox{294\,mm}$）である。
\item |paper=|\Meta{横幅}|*|\Meta{縦幅}\Means
  用紙サイズ指定の別形式で、
  |paper={|\Meta{横幅}|}{|\Meta{縦幅}|}| と等価。
  \Note Pandocで波括弧の扱いが面倒になる場合があることへの対策。
  \Note 用紙サイズ指定にはさらに\Pkg{jlreq}互換の別形式 %
    |paper={|\Meta{横幅}|,|\Meta{縦幅}|}| もある。
\item |enablejfam=|\Meta{値}\Means
  数式中の和文出力をサポートするか否か。
  値は |true|（有効）\JSl|false|（無効）\JSl|default|（既定値に従う）
  の何れかである。
  エンジンや和文ドライバの種類により、
  既定値が有効・無効の何れになるかは異なり、また、
  そもそも有効・無効の一方しか選択できない場合もある。
  \Note 詳細については\ref{sec:Ja-math-fonts}節を参照。
\item |textwidth=|\Meta{長さ}\Means
  行長（本文領域の横幅；|\textwidth|）を指定する。
  \Note 実際には全角の整数倍に丸めた値が使われる
  （\ref{ssec:page-layout}節参照）。
  \begin{itemize}
  \item \Pkg{bxjsbook}以外では、\Pkg{geometry}で |textwidth| を
    指定したのと同値。
    この場合、既定では |textwidth| を指定しない。
  \item \Pkg{bxjsbook}では、\Pkg{geometry}の |textwidth| は
    実際には |\fullwidth|（ヘッダ部分の横幅）の指定とみなされる。
    従って、|\textwidth| はこのオプションで指定する必要がある。
    この場合の既定値は40\,zwである。
    \Note |\textwidth| が |\fullwidth| を超えている
    場合は |\fullwidth| と同じと見なされる。
  \end{itemize}
\item |number-of-lines=|\Meta{整数}\Means
  1ページあたりの行数を指定する。
  \Pkg{geometry}で |lines| を指定したのと同値。
  既定では\Pkg{geometry}の |lines| は指定されない。
\end{itemize}

\paragraph{上級者向けのオプション}\mbox{}

\begin{itemize}
\item |use-zw=|\Meta{真偽値}\Means
  |\jsZw| と等価な命令として |\zw| を定義するか。
  既定値は真。
  \Note つまり |\zw| の命令名が衝突する場合に、
  |use-zw=false| を指定する。
\item |disguise-js=|\Meta{真偽値}\Means
  継承元のJSクラス（例えば\Pkg{bxjsbook}の場合は\Pkg{jsbook}）
  が読込済であるように振舞うか否か。
  既定値は真。
  \Note つまり「JSクラスの一種である」と判定されると不都合な場合に、
  |disguise-js=false| を指定する。
\item |bigcode|（既定
    \footnote{2.0版より常に |bigcode| が既定になる。
      昔の版では{\TeX}エンジンの版に応じて既定値を変えていた。}）\Means
  {\upTeX}エンジンとdvipdfmxの組合せで\Pkg{hyperref}パッケージを
  利用する時に適用されるToUnicode CMapとして |UTF8-UTF16| を指定する。
  PDFの文書情報の文字列にBMP外の文字が含まれる場合には
  この指定が必要である。
  |UTF8-UTF16| のファイルがインストールされていないと、
  dvipdfmxの処理が失敗する。
\item |nobigcode|\Means
  |bigcode| の否定。ToUnicode CMapとして |UTF8-UCS2| を指定する。
  この場合は文書情報の文字列にBMP外の文字を使用できない。
\item |precise-text=|\Meta{真偽値}\Means
  {\XeTeX}エンジンにおいて、「ActualText生成機能」を有効化する
  \footnote{つまり、|\XeTeXgenerateactualtext=1| を行う。
    ActualText 生成機能と日本語処理は相性が悪いため、これを使うと
    出力PDFのサイズが増大する（1.5～2倍）ことに注意。}%
  か否か。
  既定値は偽。
\item |simple-ja-setup=|\Meta{真偽値}\Means
  {\XeTeX}エンジン自体の行組版機能（|\XeTeXlinebreaklocale| 等）
  を利用した、簡易的な日本語用組版設定を行うか否か。
  既定値は真（だが多くの場合に無効化される）。
  \Note {\XeTeX}エンジン以外では無効である。
  また、\Pkg{xeCJK}や\Pkg{zhspacing}等の日本語（CJK）組版用
  パッケージが読み込まれた場合も無効化される。
  特に、和文ドライバがstandardである場合は、必ず\Pkg{xeCJK}が
  読み込まれるため、このオプションは無意味である。
\item |plautopatch=|\Meta{真偽値}\Means
  エンジンが\,(u){\pLaTeX}である場合に（十分に早い時点で）%
  \Pkg{plautopatch}パッケージを読み込む。
  既定値は偽。
  \Note ただし、Pandocモードの場合は既定値が真になる。
\item |mag=|\Meta{整数}\Means
  版面拡大率（mag値）の直接設定。
  既定は基底フォントサイズから算出する。
  \Note mag値が$n$の場合、版面が$n/1000$倍に拡大される。
\item |magstyle=|\Meta{値}\Means
  “版面拡大”の実現方法を指定する。
  有効な値は |usemag|、|nomag|、|nomag*| の何れか。
  \Note 詳細については\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}非読込時の動作テストはほとんど行っていない。）}
    \Note 「自動読込の際に指定するはずのオプション列」
      が |\jsGeometryOptions| に保存されている。
  \end{itemize}
  \Note 「どうしても\Pkg{geometry}パッケージを自分で読み込みたい」
  という人のための設定。
\item |oldfontcommands|\Means
  |\bf| 等の“二文字フォント命令”の使用を許容する。
\item |nooldfontcommands|（既定）\Means
  “二文字フォント命令”の使用に対して警告を出す。
  \Note 詳細については\ref{sec:Old-font-commands}節を参照。
\item |fancyhdr=|\Meta{真偽値}\Means
  \Pkg{fancyhdr}パッケージの機能に対する補正を行うか。
  真の場合、以下の補正が行われる。既定値は真。
  \begin{itemize}
  \item ヘッダ・フッタ書式の既定値に含まれる“二文字フォント命令”
    を除去する。
  \item \Pkg{bxjsbook}クラスでヘッダ・フッタの横幅を（|\textwidth|
    ではなく）|\fullwidth| に一致させる。
  \end{itemize}
\item |paragraph-mark=|\Meta{文字1つ}\Means
  パラグラフ（|\paragraph|）の見出し先頭に付く記号。
  既定値は“■”。
  \Note “|paragraph-mark=|”のように値を空にするのも可能。
\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|、|\>|、
    |\|\JSS（|\|\,+\,全角空白）、|\jaspace|
  \end{quote}
  既定値は真。
\item |fix-at-cmd=|\Meta{真偽値}\Means
  |\@| 命令に対してJSクラスと同様の拡張を施すか否か。
  既定値は真。
\item |label-section=|\Meta{値}\Means
  節番号の書式出力、特に
  「|\pre|/|postsectionname|」
  「\Pkg{bxjsarticle}での付録部における |\appendixname|」
  の語句の付加の方法を選択する。
  \begin{itemize}
  \item |compat|（既定）\Means
    JSクラスと同じ実装を用いる。
    この場合、節のカウンタの書式（|\thesection|）そのものに語句が
    付加されるため、|\thesection| を参照する他のカウンタ書式が
    奇妙になる可能性がある。
  \item |modern|\Means
    節のカウンタの書式（|\thesection|）には語句の付加を行わず、
    実際にそれが節番号として出力される際に語句を付加する。
  \item |none|\Means
    節番号に対する語句の付加を抑止する。
    欧文・和文の標準文書クラスと同等になる。
  \end{itemize}
\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}

\paragraph{jlreq文書クラスとの互換用のオプション}\mbox{}

\begin{itemize}
\item |paper={|\Meta{横幅}|,|\Meta{縦幅}|}|\Means
  |paper={|\Meta{横幅}|}{|\Meta{縦幅}|}| と同値（用紙サイズ設定）。
\item |fontsize=|\Meta{長さ}\Means
  |base=|\Meta{長さ} と同値（基底フォントサイズ）。
\item |jafontsize=|\Meta{長さ}\Means
  |jbase=|\Meta{長さ} と同値（和文基底フォントサイズ）。
\item |line_length=|\Meta{長さ}\Means
  |textwidth=|\Meta{長さ} と同値（行長指定）。
\item |number_of_lines=|\Meta{整数}\Means
  |number-of-lines=|\Meta{整数} と同値（行数指定）。
\end{itemize}

\paragraph{旧版との互換用のオプション}\mbox{}

2.0版以降では、これらのオプションの使用は\jemph{非推奨}である。
\Note (|no|)|zw|、(|no|)|js|、|jadriver|、|noscale| については、
3.0版で\jemph{廃止}する予定。

\begin{itemize}
\item |zw|\Means
  |use-zw=true| と同値。
\item |nozw|\Means
  |use-zw=false| と同値。
\item |js|\Means
  |disguise-js=true| と同値。
\item |nojs|\Means
  |disguise-js=false| と同値。
\item |precisetext|\Means
  |precise-text=true| と同値。
\item |noprecisetext|\Means
  |precise-text=false| と同値。
\item |simplejasetup|\Means
  |simple-ja-setup=true| と同値。
\item |nosimplejasetup|\Means
  |simple-ja-setup=false| と同値。
  \Note 以上の8個は1.9版より前で使われた。
\item |textwidth-limit=|\Meta{整数}\Means
  |textwidth=|\Meta{整数}|zw| と同値。
  \Note 1.8版より前で使われた。
\item |dvipdfmx-if-dvi|\Means
  |dvi=dvipdfmx| と同値。
  \Note 1.2版より前で使われた。
\item |magstyle=mag|/|real|/|xreal|\Means
  それぞれ |magstyle=usemag|/|nomag|/|nomag*| と同値。
  \Note 1.1f版より前で使われた。
\item |jadriver=|\Meta{名前}\Means
  |ja=|\Meta{名前} と同値（和文ドライバ指定）。
  \Note 1.0版より前で使われた。
\item |noscale|\Means
  |scale=1| と同値。
  \Note 0.9版より前で使われた。
\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 JS\JSl BXJSクラスでは |a4j| は |a4paper| と全く等価である。
（他の |b4j| 等も同様。）

\paragraph{横置き}
|landscape|。

\paragraph{基底フォントサイズ}
|8pt|、|9pt|、|10pt|、|11pt|、|12pt|、|14pt|、|17pt|、|20pt|、
|21pt|、|25pt|、|30pt|、|36pt|、|43pt|、
|12Q|、|14Q|、
|10ptj|、|10.5ptj|、|11ptj|、|12ptj|。
\Note |10pt|（10\,pt）、
|11pt|（10.95\,pt）、
|12pt|（12\,pt）、
|14pt|（14.4\,pt）、
|17pt|（17.28\,pt）、
|21pt|（20.74\,pt）、.
|25pt|（24.88\,pt）、
|30pt|（29.86\,pt）、
|36pt|（35.83\,pt）、
|43pt|（43\,pt）はそれぞれmagstepの
0、0.5、1、2、3、4、5、6、7、8に相当し、
括弧内が実際の値である。
これ以外の |8pt|、|9pt|、|20pt| は文字通りの値。
|##Q|\JSl|##ptj| は |jbase=##Q|\JSl|jbase=##pt| と等価
（つまり和文規準）。
\footnote{ちなみにJSクラスの（固定の）和文スケール値に従うと |10pt|
  が |jbase=13Q| に相当するので |13Q| というオプションは無い。}%

\paragraph{両面用レイアウト}
|oneside|、|twoside|、|vartwoside|。
\Note |vartwoside| は |twoside| と同様だが
傍注が常に右側余白に出力される。

\paragraph{段組み}
|onecolumn|、|twocolumn|。

\paragraph{表題ページ}
|titlepage|、|notitlepage|。

\paragraph{起こし}
|openright|、|openleft|、|openany|。
\Note \Pkg{jsreport}と\Pkg{jsbook}にのみ存在するオプション。
\Note |openleft| は部・章の開始を見開き左側のページ
（偶数ページ）に強制する（左起こし）。

\paragraph{数式配置}
|leqno|、|fleqn|。

\paragraph{オーバーフル警告}
|final|、|draft|。

\paragraph{papersize special出力}
|papersize|。
\Note BXJSクラスでは |papersize| は既定で有効。

\paragraph{英語化}
|english|。

\paragraph{エンジン種別}
|uplatex|、|autodetect-engine|。
\Note 既に\ref{ssec:BXJS-specific-option}節で述べた通り。

\paragraph{magstyle指定}
|usemag|、|nomag|、|nomag*|。
\Note BXJSクラスでは、これらは“|magstyle=|”を前置したものと
同等に扱われる。
詳細は\ref{ssec:magstyle}節を参照。

\paragraph{和文数式ファミリ不使用}
|disablejfam|。
\Note BXJSクラスでは |enablejfam=false| と同値。
詳細は\ref{sec:Ja-math-fonts}節を参照。

\paragraph{ロゴ命令パッケージの読込}
|jslogo|、|nojslogo|。
\Note BXJSクラスでは |nojslogo| が既定値である。

%-------------------
\subsection{JSクラスのオプションで使用不可能なもの}
\label{ssec:JS-deleted-option}

\begin{itemize}
\item クラス変種指定\Means
  |report|、|slide|。
  \Note |report| 相当は\Pkg{bxjsreport}、|slide| 相当は\Pkg{bxjsslide}と
  別クラスになっている。 
\item トンボ出力\Means
  |tombow|、|tombo|、|mentuke|
  \Note これは{\pLaTeX}のカーネル命令を利用しているので
  とりあえず除外。 
\item 和文フォントメトリック指定\Means
  |jis|、|mingoth|。
  \Note 異なるエンジンで汎用的に扱うのが難しい。
\end{itemize}

%-------------------
\subsection{クラスオプション設定の既定値}

\begin{itemize}
\item BXJSクラス共通\Means
  |a4paper|、|onecolumn|、|final|、
  その他は各オプションの解説
  （\ref{ssec:BXJS-specific-option}節）を参照。
\item \Pkg{bxjsarticle}\Means
  |10pt|、|oneside|、|notitlepage|
\item \Pkg{bxjsreport}\Means
  |10pt|、|oneside|、|titlepage|、|openany|
\item \Pkg{bxjsbook}\Means
  |10pt|、|twoside|、|titlepage|、|openright|
\item \Pkg{bxjsslide}\Means
  |36pt|、|oneside|、|notitlepage|
\end{itemize}

%-------------------
\subsection{magstyleオプション}
\label{ssec:magstyle}

JSクラスにおけるページレイアウト決定の過程では、
基底フォントサイズが10\,pt以外の場合に、
「版面を拡大縮小する」という処理を採用している。
\footnote{例えば、基底フォントサイズが20\,ptだとすると、
まずは指定されたものの半分の縦横幅をもつ用紙に対して
基底フォントサイズが10\,ptとしてレイアウトを決定し、
それを縦横2倍に拡大する、という過程をとっている。}%
これには、「フォントのオプティカルサイズの選択を最適にするため
\footnote{{\LaTeX}の既定の欧文フォントであるComputer Modernフォントが
オプティカルサイズの性質をもつことは有名であるが、
少々癖が強くて、本文を10\,pt（cmr10）で組んだ場合と
12\,pt（cmr12）で組んだ場合でかなり異なった印象を受ける場合がある。
JSクラスではそれを嫌って、本文（|\normalsize| のフォント）が
必ず「cmr10を拡大縮小したもの」で組まれることを
企図しているのである。}%
」という理由があり、またこれにより、多種の基底フォントサイズへの
対応が容易になるという利点もある。
\footnote{BXJSで「任意の」基底フォントサイズが設定できるのも
この利点があるため。}%
ところがここで、JSクラスではこの“版面拡大”を実現するために
{\TeX}エンジンが持つ版面拡大機能（仮に「mag設定」と呼称する）
を用いていて、これについて批判されることが多い。
また、現実問題として、mag設定が{\LaTeX}で用いられる機会は少ないため、
実際に用いられた時にそれを想定していないパッケージが誤動作すると
いう問題もある。

これらの問題を緩和するため、BXJSクラスでは“版面拡大”について
他の実現方法を提供している。
それを選択するのが以下に挙げる「magstyleオプション」である。
\footnote{「magstyleオプション」の値は、|magstyle|をキー名にした
keyval形式（例えば|magstyle=nomag*|）で書くこともできる。}

\begin{itemize}
\item |usemag|\Means
  JSクラスと同様に、“版面拡大”のためにmag設定を用いる。
\item |nomag|\Means
  mag設定を一切用いず、代わりに、
  全てのページレイアウトのパラメタの値をスケールさせる。
  |\normalsize| や |\large| 等の高位フォントサイズ命令で指定される
  フォントサイズもスケールさせるが、
  “オプティカルサイズの調整”は行わない。
  いわゆる「基本35書体」のようなオプティカルサイズでない
  \footnote{或いは、オプティカルサイズに“変な癖”のない。}%
  フォントのみを用いるのであれば、この設定が最も適切である。
\item |nomag*|\Means
  |nomag| と同様に、
  全てのページレイアウトのパラメタの値をスケールさせる。
  さらに、“オプティカルサイズの調整”を実現するために、
  NFSSの実装コードにパッチを当てる。
  \footnote{要するに、|OT1/cmr/m/n/12| が要求された時に、
    |cmr12| でなくて |cmr10 at 12pt| が選ばれるようにする。}%
  この場合、mag設定による不具合は起こらなくなるが、
  当然、NFSSのパッチのせいで別の不具合が起こる可能性はある。
\end{itemize}

\Note Lua{\TeX}の0.87版以降では「PDF出力時のmag設定」の機能が
廃止されている。
そのため、そのようなエンジンでは |usemag| はサポートされない
（エラーになる）。

\Note |magstyle| オプションの既定値は |usemag| である。
ただし例外として、|usemag| がサポートされない
エンジンでは |nomag*| が既定値となる。

%===========================================================
\section{和文ドライバ}
\label{sec:Ja-Driver}

BXJSクラスでは様々なエンジンについて、そのエンジンおよび
それに対応するパッケージが提供する日本語処理機能を活用することで、
日本語用の文書クラスとしての機能を実現している。
そこでの汎用性を確保するため、
“日本語処理機能と連携する部分”の実装をモジュールとして分離していて、
これを\jemph{和文ドライバ}と呼ぶ。
\footnote{\Pkg{graphicx}パッケージ等の「ドライバ」と類似した概念
のためこの名称を用いた。}%
\Pkg{BXjscls}のバンドルでは以下に挙げる和文ドライバを提供している。

\begin{itemize}
\item standard和文ドライバ\Means
各エンジンについて、最も一般的に用いられる特定の
“日本語処理機能”（例えば |lualatex| なら\LuaTeX-ja）
を連携対象とした和文ドライバ。
(u){\pLaTeX}上のJSクラスと同じくらい容易に日本語が
書き始められることを目指している。
\item minimal和文ドライバ\Means
“何も実装されていない”和文ドライバ。
上級ユーザがプレアンブルや自作パッケージ等に
アドホックな連携コードを書いて、
好きな“日本語処理機能”との連携を実現するために
用いることを想定している。
\item pandoc和文ドライバ\Means
「Pandocモード」で使用される和文ドライバ。
standardドライバの機能を継承するが、
「Pandocの既定の |latex| テンプレート」が使われることを前提として、
それとBXJSの設定を整合させるための措置を加えている。
\Note 本マニュアルで「standard和文ドライバの場合」という場合、
特に明示されない限りはpandoc和文ドライバも含まれる。
\end{itemize}

和文ドライバは自分で作製することも可能である。
\footnote{和文ドライバの実装に必要な連携仕様の
  情報については、ソースコード説明書（bxjscls.pdf）
  の付録Aを参照してほしい。}%
|bxjsja-XXX.def|（|XXX| は任意の文字列
\footnote{{\LaTeX}の非特殊文字
（{\TeX}言語でいうとカテゴリコードが11または12の文字）
からなる必要がある。}%
）の名前のファイルに実装コードを書いてそのファイルを配置すると、
|ja=XXX| のオプション指定でその和文ドライバを利用できる。

なお、和文ドライバの指定（|ja| オプション）は\jemph{必須}である。
現状では |minimal| が既定値となっているが、
2.0版より省略は\jemph{非推奨}の扱いであり、
% （既に1.8版で明示指定が推奨されていた。）
3.0版で\jemph{禁止}される予定である。

\Note ただし、(u){\pLaTeX}については、日本語処理機能がエンジン自体に
備わっていて不可分なため例外的な扱いになっていて、
\footnote{JSクラスの実装から分離した「日本語処理関連」のコードを
minimalに配置している。}%
和文ドライバ指定は省略可能で %
|standard| が既定値になっている。

%-------------------
\subsection{standardドライバで用いられる日本語処理機構}
\label{ssec:ja-package}

\begin{itemize}
\item \pLaTeX、\upLaTeX（および{\pLaTeX-ng}）の場合\Means
  エンジン自体が日本語処理の能力を持っているので
  それが常に用いられる。
\item (pdf){\LaTeX}の場合\Means
  \Pkg{bxcjkjatype}パッケージが |whole| と |autotilde| の
  オプション付で読み込まれる。
\item \XeLaTeX{}の場合\Means
  \Pkg{zxjatype}パッケージが読み込まれる。
\item \LuaLaTeX{}の場合\Means
  \Pkg{luatexja}パッケージが読み込まれる。
\end{itemize}

%-------------------
\subsection{和文フォント設定}
\label{ssec:ja-font-settings}

\jemph{和文フォントプリセット}（|jafont| オプション）
が指定されない場合は、JSクラスと同様の
「明朝・ゴシックで各1ウェイトのみを用いて、
明朝の太字がゴシックになる」
という設定が適用される。

明朝・ゴシックのファミリとして用いられる物理フォントの
割当（マッピング）は以下のようになる：
\begin{itemize}
\item \pLaTeX、{\upLaTeX}の場合\Means
  クラスでは何もマッピングを設定しない。
  従って、DVIウェアでの設定が適用される。
\item pdf{\LaTeX}の場合\Means
  \Pkg{bxcjkjatype}パッケージの既定設定となり、
  従って、Type1形式のIPAexフォント（\Pkg{ipaex-type1}で提供される）
  が使用される。
\item \XeLaTeX{}の場合\Means
  「原ノ味フォント」が使用される。
  \Pkg{zxjafont}パッケージの |haranoaji| プリセットの
  単ウェイト使用と同等であるが、パッケージが読み込まれるわけではない。
\item \LuaLaTeX{}の場合\Means
  「原ノ味フォント」が使用される。
  \Pkg{luatexja-preset}パッケージの |haranoaji| プリセットの
  単ウェイト使用と同等であるが、パッケージが読み込まれるわけではない。
\end{itemize}

\Note DVIウェアにおける既定の和文フォントマッピング
（すなわち(u){\pLaTeX}における既定の和文フォント）
の設定は、昔は「IPAexフォント」であったが
{\TeX} Live 2020において
「原ノ味フォント」に変更された。
これに追随する形で、
BXJSクラスの{\XeLaTeX}・{\LuaLaTeX}での既定設定についても、
2.0版より「原ノ味フォント」に変更された。
ただしType1形式の原ノ味フォントは存在しないため、
(pdf){\LaTeX}では\Pkg{ipaex-type1}のフォントが引き続き使用される。
\par\medskip

和文フォントプリセット（|jafont|）を指定した場合、
具体的には以下のように処理される：
\begin{itemize}
\item \pLaTeX、{\upLaTeX}の場合\Means
  「|jafont| の値」をオプションにして
  \Pkg{pxchfon}パッケージを読み込む。
\item (pdf){\LaTeX}の場合\Means
  \Pkg{bxcjkjatype}のオプションに「|jafont| の値」を追加する。
\item \XeLaTeX{}の場合\Means
  「|jafont| の値」をオプションにして
  \Pkg{zxjafont}パッケージを読み込む。
\item \LuaLaTeX{}の場合\Means
  「|jafont| の値」をオプションにして
  \Pkg{luatexja-preset}パッケージを読み込む。
\end{itemize}

ただし、|jafont| の値として |auto| は特別な意味をもち、
「{\TeX} Liveのupdmap-kanji-configで指定した和文フォント設定を
全エンジンに
\footnote{updmap-kanji-configはDVIウェアのフォントマップ設定を行う
ものであるため、そこでの設定は本来は(u){\pLaTeX}にしか影響しない。}%
適用する」
という動作を行う。
具体的には以下のように処理される
\footnote{当然であるが、\texttt{jafont=auto} の指定は{\TeX} Live以外の
  {\TeX}システムではサポートされず、また敢えてその指定を行った場合の
  動作は未定義である。}：
\begin{itemize}
\item \pLaTeX、\upLaTeX{}の場合\Means
  何もマッピングを設定しない。
  （実際にupdmap-kanji-configの設定を活かせばよいため。）
\item それ以外の場合\Means
  「updmap-kanji-configで指定されたファミリ名」が |jafont|
  の値に指定されたと見なされる。
  \footnote{|updmap-kanji-config| の |--jis2004| オプションにより
  2004JIS字形が選択されている場合は、さらに |jis2004| 和文パラメタを
  有効にする。}
\end{itemize}

%===========================================================
\section{和文ドライバパラメタ}
\label{sec:Ja-Driver-Param}

\jemph{和文ドライバパラメタ}（|japaram| オプション）は
和文ドライバに依存する設定を指定するために用意されている。
|japaram| オプションの値はそれ自身がキー値ペアのリストであり、
一般的に次のような形式で指定される。
\begin{quote}\small\begin{verbatim}
\usepackage[...,japaram={key=value,...},...]{bxjsarticle}
\end{verbatim}\end{quote}

minimal和文ドライバには有効な和文ドライバパラメタは存在しない。

\paragraph{和文ドライバパラメタの代替表記}
Pandoc（の{\LaTeX}出力の既定テンプレート）では、
|classoption| というパラメタで任意のクラスオプションを指定できるが、
この際に波括弧 |{…}| の扱いがしばしば厄介なことになる。
例えば和文パラメタ指定の
\begin{quote}\small\begin{verbatim}
japaram={jis2004}
\end{verbatim}\end{quote}
という値をYAMLメタデータブロックで指定したいとする。
この場合、単純に
\begin{quote}\small\begin{verbatim}
classoption: japaram={jis2004}
\end{verbatim}\end{quote}
と書いたのでは、
|{jis2004}| の部分が |\{jis2004\}| のように“エスケープ”されて
しまって失敗する。
所望の指定をするには代わりに
\begin{quote}\small\begin{verbatim}
classoption: "`japaram={jis2004}`{=latex}"
\end{verbatim}\end{quote}
のような複雑怪奇な書き方をする必要がある。%
\footnote{YAMLメタデータブロックで指定された
  文字列（YAMLの文字列型の値）について、Pandocでは
  「Markdownソースとして解釈される」
  という奇妙な仕様を（歴史的経緯のため）採用している。
  このため、|{jis2004}| は
  「Markdown→{\LaTeX}の変換」
  が適用されて |\{jis2004\}| となってしまう。
  余計な変換を回避するためにはPandoc MarkdownのRawInLine要素を
  利用して |`japaram={jis2004}`{=latex}| と書く必要がある。
  さらに、YAMLの文法規則として、
  文字列が |`| で始まる場合には |"…"| で全体を囲わなければならない。}

この問題に対処するため、2.9版において
「和文ドライバパラメタ代替表記」をサポートすることにした。
クラスオプションに |ja:| で始まる文字列を書くと、
以下のように解釈される。
\begin{itemize}
\item |ja:XXX| と書くと、|japaram={XXX}| を指定したことになる。
\item |ja:XXX=YYY| と書くと、|japaram={XXX=YYY}| を指定したことになる。
\end{itemize}
代替表記を利用すると、先ほどの例は以下のように書くことができる。
\begin{quote}\small\begin{verbatim}
classoption: ja:jis2004
\end{verbatim}\end{quote}

%-------------------
\subsection{standard和文ドライバの場合}

以下の和文ドライバパラメタが存在する。

\begin{itemize}
\item |jis2004=|\Meta{真偽値}\Means
  漢字の字形について「2004JIS字形を優先させる」処理を行うか。
  真の場合、以下の処理が行われる。既定値は偽。
  \begin{itemize}
  \item グローバルオプションに |jis2004| を追加する。%
    \footnote{\Pkg{japanese-otf}や\Pkg{luatexja-preset}などの
      パッケージが |jis2004| オプションを利用する。}
  \item エンジンが{(u)\pLaTeX}の場合、|pxchfon| と |pxbabel|
    パッケージに予め |prefer2004jis| オプションが渡される。
  \end{itemize}
\item |units=|\Meta{真偽値}\Means
  これを真にすると、
  {\LaTeX}における長さ指定において、{\pTeX}の和文用の単位
  （|zw|、|zh|、(|true|)|Q|、(|true|)|H|）
  を全てのエンジンで使用できるようにする。
  既定値は偽。
  \Note \Pkg{bxcalc}パッケージを読み込む。
  \Note 厳密にいうと、「\Pkg{calc}の長さ数式が使える箇所」
  において和文用の単位が使用できるようになる。
\item |font={|\Meta{文字列}|}|\Means
  standard和文ドライバが利用する和文フォントパッケージについて
  追加のオプションを指定する。
\item |strong-cmd=|\Meta{真偽値}\Means
  \Pkg{fontspec}パッケージと互換の\,|\strong|命令と
  |strongenv|環境を定義するか。
  既定値は真。
\end{itemize}

%-------------------
\subsection{pandoc和文ドライバの場合}
\label{ssec:pandoc-param}

standard用のものに加えて、以下の和文ドライバパラメタが存在する。

\begin{itemize}
\item |strong=|\Meta{値}\Means
  |\strong| 命令・|strongenv| 環境で実際に適用される書体
  （フォント変更命令）を選択する。
  \begin{itemize}
  \item |bold|（既定）\Means
    太字（|\bfseries|）。
  \item |sans|\Means
    サンセリフ（|\sffamily|）。
  \item |boldsans|\Means
    太字サンセリフ（|\sffamily\bfseries|）。
  \end{itemize}
  \Note Pandocモードの既定ではPandocの重要（Strong）要素は |\strong| 命令
  で実現されるので、このパラメタの設定に追随する。
\item |fix-strong=|\Meta{真偽値}\Means
  |\textbf| 命令の動作を |\strong| と同等にするか。
  既定値は真。
  \Note Pandocの重要（Strong）要素は{\LaTeX}への変換において |\textbf|
  命令が適用される。
  和文フォントを単ウェイトで用いている場合、生の |\textbf| は体裁
  が悪い（ゴシックの和文とセリフの欧文の組み合わせになる）ため、
  |\strong| に移譲して調整ができるようにしている。
  \footnote{|\strong| に適用される書体は |strong| パラメタで選択
    できるが、|\strongfontdeclare| 命令
    （\ref{ssec:markup}節）でも設定できる。}
  \Note |\bfseries| 命令の動作は変わらない。
\item |fix-code=|\Meta{真偽値}\Means
  |\texttt| 命令と周囲の和文の間に和欧文間空白が常に入るようにするか。
  既定値は真。
  \Note Pandocのインラインコード（Code）要素は{\LaTeX}への変換に
  おいて |\texttt| 命令が適用される。
  \Note 真である場合、|\texttt| の出力の周囲に欧文ゴーストが挿入される。

\end{itemize}

%===========================================================
\section{ユーザ用命令}
\label{sec:Commands}

原則として、BXJSクラスで追加されたものだけを説明する。

%-------------------
\subsection{レイアウト設定関連}
\label{ssec:page-layout}

BXJSクラスではページレイアウトの設定に\Pkg{geometry}パッケージを
用いて次の手順で行っている。 

\begin{enumerate}
\item
  基底フォントサイズにより決定されたmag値を実際に設定する。
\item
  \Pkg{geometry}で次のパラメタを設定する。
  \label{itm:pl-param}
  \begin{enumerate}
  \item
    クラスオプションで指定された用紙サイズ、
    および|truedimen| とドライバ指定。
    \label{itm:pl-parama}
  \item
    \Pkg{bxjsarticle}\JSl\Pkg{bxjsreport}の場合は次のパラメタ値。 
    \label{itm:pl-paramb}
\begin{quote}\small\begin{verbatim}
headheight=10pt, footskip=0.03367\paperheight,
headsep=\footskip-\topskip, includeheadfoot,
hscale=0.76, hmarginratio=1:1, vscale=0.83, vmarginratio=1:1
\end{verbatim}\end{quote}
  \item
    \Pkg{bxjsbook}の場合は次のパラメタ値。%
    \label{itm:pl-paramc}
\begin{quote}\small\begin{verbatim}
headheight=10pt, headsep=6mm, nofoot, includeheadfoot,
hmargin=18mm, vscale=0.83, vmarginratio=1:1
\end{verbatim}\end{quote}
    \Note \Pkg{bxjsbook}の1.2a版以前では、この設定の中の
    “|hmargin=18mm|”の代わりに“|hmargin=36mm,| |hmarginratio=1:1|”
    を用いていた。
    これでは\Pkg{jsbook}の水平マージン設定と同等にならないため
    1.3版で現在の設定に修正された。
    もし1.2a版以前との互換性を保ちたい場合は、
    クラスオプションに |layout=v1| を指定してほしい。
  \item
    \Pkg{bxjsslide}の場合は次のパラメタ値。
    \label{itm:pl-paramd}
\begin{quote}\small\begin{verbatim}
noheadfoot, hscale=0.9, hmarginratio=1:1,
vscale=0.944, vmarginratio=1:1
\end{verbatim}\end{quote}
  \end{enumerate}
\item
  後処理を行う。
  \label{itm:pl-post}%
  以下の処理が含まれる。
  \begin{itemize}
  \item |textwidth| を全角幅の整数倍に、|textheight| を整数行分の
    自然長になるように丸める。
  \item |marginpar| 関連の設定を行う。
  \end{itemize}
  \Note ただし、横幅の全角整数倍への丸めは、|whole-zw-lines=false|
  指定時には抑止される。
\end{enumerate}

ページレイアウトの再設定のために次の命令が用意されている。
\begin{itemize}
\item |\setpagelayout{|\Meta{設定}|}|\Means
  現在のページレイアウトの設定の一部を修正する。
  \Meta{設定}は\Pkg{geometry}のパラメタの記述であり、
  現在の設定に追記して\Pkg{geometry}が再設定を行った後、
  再び\ref{itm:pl-post}の後処理が行われる。
\item |\setpagelayout*{|\Meta{設定}|}|\Means
  用紙以外の設定をリセットして改めてページレイアウトの設定を行う。
  具体的には、まず\Pkg{geometry}の |reset| オプションで初期化し、
  その後\ref{itm:pl-parama}と\Meta{設定}の
  内容を用いて再設定を行った後、
  再び\ref{itm:pl-post}の後処理が行われる。
\item |\setpagelayout+{|\Meta{設定}|}|\Means
  |\setpagelayout*| の変種で、「本文領域のサイズと位置」の設定のみを
  リセットして改めてページレイアウトの設定を行う。
  すなわち、前項の“再設定”の際に、
  \ref{itm:pl-paramb}～\ref{itm:pl-paramd}の内容のうち
  「本文領域」以外のものが追加される。
\end{itemize}

なお、|\geometry| 命令を直接呼び出すことも可能である。
当然この場合は\ref{itm:pl-post}の後処理は行われない。

%-------------------
\subsection{構造マークアップ関連}
\label{ssec:markup}

\begin{itemize}
\item |\subtitle{|\Meta{テキスト}|}|\Means
  サブタイトルを設定する。
  \Note |\maketitle| の出力にサブタイトルが含まれるようになる。
\item |chapterabstract| 環境\Means
  \Pkg{jsbook}クラスの |abstract| 環境
  \footnote{article系やreport系のクラスにあるような
    （文書要旨のための）abstract 環境は、book系クラスでは
    用意されていないことが多いことに注意。}%
  と等価な環境で、
  「各章の初めにちょっとしたことを書く」用途を想定したもの。
  （ただし使用可能な場所に特に制限はない。）

  なお、|abstract| 環境の機能については継承元のJSクラスと同一に
  なるため以下のようになる。
  \begin{itemize}
  \item \Pkg{bxjsarticle}および|layout=v2|指定の\Pkg{bxjsreport}\Means
    \Pkg{jsarticle}\JSl\Pkg{jsreport}クラスと同じ、
    つまり「文書要旨」のための環境。
  \item \Pkg{bxjsbook}および|layout=v1|指定の\Pkg{bxjsreport}\Means
    \Pkg{jsbook}クラスと同じ、
    つまり |chapterabstract| 環境と等価。
  \end{itemize}

\item |\Seireki|／|\Wareki|\Means
  |\西暦|／|\和暦| と等価な英字名の命令。

\item |\jayear|\Means
  和暦表示（|\和暦|）が有効な時の |\today| のテキスト中の年号
  （「年」より前の部分、例えば「平成28」）
  の部分を表すマクロ。
\end{itemize}

|label-section=modern| の場合に限り、以下の命令が利用できる。

\begin{itemize}
\item |\labelsection|\Means
  節見出し（|\section|）における節番号の表示形式を表すマクロ。
  通常、|\thesection|（|section| カウンタの出力形式）に
  必要な装飾（“節”や“§”など）を加えたテキストを指定する。
  \par
  既定値は以下に示すものと同等になっている。
  \begin{itemize}
  \item 文書開始時は“|\presectionname\thesection\postsectionname|”。
  \item 付録開始時（|\appendix| 実行時）に
    “|\appendixname\thesection|”に切り替わる。
    \footnote{|\labelsection| を実際に再定義するわけではないので、
    ユーザが独自の |\labelsection| を設定している場合は
    切替は発生しなくなる。}
  \end{itemize}
  \Note |label-section=compat| の場合は（JSクラスと同様に）
    付録開始時に
    「|\presectionname| を |\appendixname| で上書きする」
    という動作が発生するが、|label-section=modern| では
    これは起こらない。
\item |\labelsubsection|\JSl|\labelsubsubsection|\Means
  これらのマクロが定義されている場合は、各々の内容のテキストが
  小節見出しおよび小々節見出しの表示形式として利用される。
  未定義の場合は |\thesub(sub)section| で代用される。
\end{itemize}

\subsubsection{standard和文ドライバで追加される命令}

\begin{itemize}
\item |\strong{|\Meta{テキスト}|}|\Means
  引数のテキストに、重要性を表す書体変更を適用する。
\item |strongenv|環境\Means
  |\strong|の環境版。
\item |\strongfontdeclare{|\Meta{書体変更命令列}|,...}|\Means
  |\strong| で実際に適用される書体変更（宣言型命令の列）を指定する。
  コンマ区切りで複数の値が指定可能で、
  $n$重の |\strong| が適用されたテキストに対して
  $n$番目の書体変更命令列が実行される。
  \Note 既定値は“|\bfseries|”であり、|\strong| は太字で出力される。
  \Note 以上の3つの機能は\Pkg{fontspec}パッケージとの互換を
  目的としたものである。
  |strong-cmd=false| 指定時はこれらの機能は無効になる。
  ただし、\Pkg{fontspec}が読み込まれている場合は、
  常にそちらの定義が維持される。
\end{itemize}

%-------------------
\subsection{和文用設定関連}
\label{ssec:ja-settings}

\begin{itemize}
\item |\jsZw|\Means
  和文の全角幅を表す長さ命令。
  例えば |2\jsZw| が{\pLaTeX}の |2zw| に相当する。
\item |\zw|\Means
  |\jsZw| の別名。
  \footnote{\Pkg{\LuaTeX-ja}では「実際の全角幅」を表す
    長さ命令 |\zw|（{\pLaTeX}の |zw| と本当に等価）が規定されている。
    |lualatex| エンジン指定かつ和文ドライバがstandardの場合は
    この |\zw| の定義がそのまま使われる。
    （従って |use-zw| は実質的に無意味である。）
    なお、|\jsZw| は「規約上の全角幅」であり、「実際の全角幅」と本来は
    一致するはずだが、実際には計算誤差のせいで僅かに値が異なる。}%
  ただし |use-zw=false| 指定時は定義されない。
\item |\zwspace|\Means
  全角（|\jsZw|）幅の水平空き。
\item |\|\JSS（|\|\,+\,全角空白）\Means
  |\zwspace| の別名。
  全角幅の水平空き。
  \Note \Pkg{jlreq}クラスと互換の命令。
  ただしBXJSクラスはJLREQの和字間隔の規定とは無関係であり、
  この命令は単純に |\hspace|\wbr|{\jsZw}| と等価である。
\item |\jaenspace|\Means
  半角（0.5\,|\jsZw|）幅の水平空き。
\item |\jathinspace|\Means
  和欧文間空白を挿入する。
\item |\>|\Means
  （非数式モードで
  \footnote{|\>| という命令名は、plain {\TeX}では数式中の空白
    （{\LaTeX}の |\:| と同等）を表す。
    このため、実際には{\LaTeX}でも |\>| は |\:| と同等の命令として
    定義されている。
    この「plain互換の |\>|」を利用したコードが影響を受けるのを避ける
    ため、数式中では |\>| は従来通り |\:| と同等の動作を行う。}%
    ）和欧文間空白を挿入する。
\item |\jaspace{|\Meta{値}|}|\Means
  引数の値に応じて水平空きを挿入する。%
  \footnote{\Pkg{jlreq}クラスに同様の命令が実装されているが、
  なぜかundocumentedになっている。}%
  可能な値は以下の通り：
  \begin{itemize}
  \item |zenkaku|\Means 全角幅。（|\zwspace| と同じ。）
  \item |nibu|\Means 半角幅。（|\jaenspace| と同じ。）
  \item |shibu|\Means 四分幅（0.25\,|\jsZw|）。%
    \footnote{和欧文間空白（|\jathinspace|）とは必ずしも
    一致\jemph{しない}ことに注意。}
  \end{itemize}
  \Note ただし |jaspace-cmd=false| 指定時は |\|\JSS・
  |\jaenspace|・|\jathinspace|・|\>|・|\jaspace|
  は定義されない。%
  \footnote{ただし |\>| については注意が必要で、
    standard和文ドライバで自動的に読み込まれる
    \Pkg{zxjatype}や\Pkg{bxcjkjatype}のパッケージは、
    それ自体が同様の機能の |\>| を提供する。}
\item |\allowoldfontcommands|\Means
  これ以降に実行される二文字フォント命令を警告の対象にしない。
\item |\disallowoldfontcommands|\Means
  これ以降に実行される二文字フォント命令を警告の対象にする。
  \Note 詳細については\ref{sec:Old-font-commands}節を参照。
\item |\jQ|、|\jH|、|\trueQ|、|\trueH|\Means
  それぞれ{\pLaTeX}の単位Q、H、true\,Q、true\,Hに相当する長さ命令。
\item |\ascQ|\Means
  1\,true\,Qを和文スケール値で割った長さを表す長さ命令。
  \footnote{命令名は“anti-scaled Q”の略。}%
  \Note 例えば、|\fontsize{10\ascQ}{16\trueH}|
  で和文のサイズが10\,Qになる。%
  \footnote{1.5c版で導入された |\jafontsize| 命令を用いて %
    |\jafontsize{10trueQ}{16trueH}| としてもよい。}
\item |\ascpt|\Means
  1\,true\,ptを和文スケール値で割った長さを表す長さ命令。
  \Note 例えば、|\fontsize{9\ascpt}{13truept}|
  で和文のサイズが9ポイントになる。
\item \mbox{\pLaTeX}カーネルで規定される
  「基底フォントサイズパラメタ」の
  長さ命令 |\Cwd|\JSl|\Cht|\JSl|\Cdp|\JSl|\Cvs|\JSl|\Chs| が
  全てのエンジンで利用できる。
  また「和文スケールの値を実数値マクロ |\Cjascale| に設定する」
  という規約にも従っている。
\end{itemize}

\subsubsection{standard和文ドライバで追加される命令}

standard和文ドライバでは和文に関連する
文書ソース記述をエンジンに依らずに共通になることを目指している。
従って、和文関連の組版パラメタの設定についても
「共通の命令」が提供される。

\begin{itemize}
\item 和文ファミリ変更命令\Means
  {\pLaTeX}と同様に、
  |\mcfamily| で「明朝」、|\gtfamily| で「ゴシック」に変更される。
  |\textmc|、|\textgt| も使える。
\item 欧文ファミリ変更命令での和文の連動\Means
  JSクラスと同様
  \footnote{ちなみに、(u){\pLaTeX}の既定ではこの連動は起こらない。}%
  に、|\rmfamily| で和文が「明朝」、
  |\sffamily| および |\ttfamily| で和文が「ゴシック」に変更される。
\item |\setxkanjiskip{|\Meta{長さ}|}|\Means
  和欧文間空白の量を指定する。
  {\pLaTeX}での %
  |\setlength|\wbr|{\xkanjiskip}|\wbr|{|\Meta{長さ}|}|
  に相当する。
\item |\getxkanjiskip|\Means
  現在の和欧文間空白の量を表す文字列に展開される。
  {\pLaTeX}での |\xkanjiskip| の読出
  \footnote{{\TeX}言語でいうと |\the\xkanjiskip|。}%
  に相当する。
\item |\autoxspacing|\JSl|\noautoxspacing|\Means
  和欧文間空白の挿入を有効／無効にする。
  {\pLaTeX}の同名の命令と同等。
\item |\setkanjiskip{|\Meta{長さ}|}|\Means
  和文間空白の量を指定する。
  {\pLaTeX}での %
  |\setlength|\wbr|{\kanjiskip}|\wbr|{|\Meta{長さ}|}|
  に相当する。
\item |\getkanjiskip|\Means
  現在の和文間空白の量を表す文字列に展開される。
  {\pLaTeX}での |\kanjiskip| の読出
  \footnote{{\TeX}言語でいうと |\the\kanjiskip|。}%
  に相当する。
\item |\autospacing|\JSl|\noautospacing|\Means
  和文間空白の挿入を有効／無効にする。
  {\pLaTeX}の同名の命令と同等。
\item |\jachar{|\Meta{文字1つ}|}|\Means
  指定の文字を和文文字として（現在の和文フォントで）出力する。
\item |\jafontsize{|\Meta{フォントサイズ\xast}|}{|\Meta{行送り\xast}|}|\Means
  “和文規準”でフォントサイズを指定する。
  すなわち、和文の1\,zwが\Meta{フォントサイズ}と等しくなるように
  フォントサイズを設定する。
\item 和文数式フォント命令\Means
  JSクラスと同様に、
  |\mathmc| で「明朝」、|\mathgt| で「ゴシック」の
  和文数式フォントを指定する。
\item 欧文数式フォント命令での和文の連動\Means
  |\mathrm| で和文が「明朝」、
  |\mathsf| および |\mathtt| で和文が「ゴシック」に指定される。
  \footnote{和文連動の対象となる欧文数式フォント命令を
    \Pkg{bm}パッケージの |\bm| 命令の中で使う
    （例えば |\bm{\mathsf{A}}| 等）
    と正常に動作しないことが判明している。
    暫定対処として、2.9b版以降では\Pkg{bm}パッケージが読み込まれて
    いる場合には欧文数式フォント命令の和文連動が無効になる。}%
  \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}

\subsubsection{pandoc和文ドライバで追加される命令}

Pandocモードにおける出力の調整の対象となる要素について、
以下の命令を再定義することで
調整方法をカスタマイズできる。
例えば
\begin{quote}\small
|\renewcommand{\pandocZWSpace}{\jachar{|\JSS|}}|
\end{quote}
（ここで {\JSS} は全角空白文字）と再定義することで、
「全角空白文字の入力を空きに変換する」
調整を実質的に無効化できる。

\begin{itemize}
\item |\pandocZWSpace|\Means
  全角空白文字が入力されたときに実際に実行される命令。
  \Note |\pandocZWSpace| を再定義する際に、その定義内容の中で
  全角空白文字を直接使うと無限ループになってしまうため、
  代わりに |\jachar{|\JSS|}| と書く必要がある。

\item |\pandocLdots|\Means
  非数式で |\ldots| を実行したときに実際に実行される命令。
  \Note 一般にPandocの{\LaTeX}出力においては
  入力文書中の“…”が |\ldots| 命令に変換される。
  \Note |\pandocLdots| を再定義する際に、その定義内容の中で |\ldots| を
  使うと無限ループになってしまうため、
  代わりに |\textellipsis| 等を適宜使う必要がある。
  ただし特別な規約として
  \begin{quote}\small
  |\renewcommand{\pandocLdots}{\ldots}|
  \end{quote}
  と再定義した場合は、|\ldots| に対する調整自体が無効になる。
\end{itemize}

%===========================================================
\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年のことである。}%
互換性対策として、
「標準の文書クラス（\Pkg{article}、\Pkg{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)                \bf \it
(bxjsarticle)              You should note, that since 1994 LaTeX2e provides a
(bxjsarticle)              new font selection scheme called NFSS2 with several
(bxjsarticle)              new, combinable font commands. The class provides
(bxjsarticle)              the old font commands only for compatibility.
\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{将来の二文字フォント命令の扱い}

\jemph{現在の版で存在する}和文ドライバを使用する場合には、
将来にわたって以下の方針が維持される。

\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
