Skip to content

Instantly share code, notes, and snippets.

@zr-tex8r
Forked from anonymous/sample-bxjs-cjk-1.tex
Created August 3, 2013 23:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zr-tex8r/6148343 to your computer and use it in GitHub Desktop.
Save zr-tex8r/6148343 to your computer and use it in GitHub Desktop.
\documentclass[a4paper,CJK]{bxjsarticle}
\usepackage[whole,autotilde]{bxcjkjatype}
\newcommand*\Pkg[1]{\textsf{#1}}
\newcommand*\Env[1]{\texttt{#1}}
\newcommand*\Opt[1]{\texttt{#1}}
\begin{document}
%---------------------------------------
\title{CJK~パッケージで今度こそ日本語する件}
\author{某~ZR}
\date{2013~年~8~月~2~日}
\maketitle
能書きは措いといて、コレ。
\begin{itemize}
\item \Pkg{bxcjkjatype}~パッケージ(https://gist.github.com/zr-tex8r/6135807)
\end{itemize}
%---------------------------------------
\section{最も安全でまともな設定}
現状の~CJK~パッケージ(とその補助)の範囲内で、
できるだけ安全%
\footnote{「訳の解らないエラーが出ない」ということ。}%
でまともな出力が得られるような設定を採用した。
具体的には、\Pkg{bxcjkjatype}~パッケージを読み込むと
内部で(これまでの記事で行ったように)
次のようなパッケージ読込が行われる。
\begin{quote}\small\begin{verbatim}
\usepackage{CJKutf8,CJKspace,CJKpunct}
\end{verbatim}\end{quote}
%---------------------------------------
\section{「全体を~CJK~環境に入れる」を確実に行う機能}
一般的には、CJK~パッケージを使う際には、
「和文(CJK)の部分を個別に~\Env{CJK(*)}~環境で囲む」%
\footnote{つまり欧文の部分は~\Env{CJK(*)}~環境に入れない。}%
方が安全である。
しかし、文書中に散在する和文の箇所が大量にある場合は
個別にマークアップするのは面倒である。
また、節見出しや相互参照などの、
いわゆる「動く引数」の中に和文が含まれる場合は、
(詳細は省くが%
\footnote{詳細については~CJK~パッケージの解説文書~CJK.txt~を
参照されたい。})
「本文全体を~\Env{CJK(*)}~環境で囲む」方が安全な場合が多い。
ところが、「全体を囲む」場合に、単純に
\begin{quote}\small\begin{verbatim}
\documentclass{article}
\usepackage{bxcjkjatype}
\begin{document}
\begin{CJK*}{UTF8}{}
(本文)
\end{CJK*}
\end{document}
\end{verbatim}\end{quote}
としたのでは、{\LaTeX}~の内部処理の都合で失敗する可能性がある。
そこで、「安全に全体を囲む」ための機能を用意した。
次のように、オプションに~\Opt{whole}~を指定すると、
安全に全体が~\Env{CJK*}~環境で囲まれる。
\begin{quote}\small\begin{verbatim}
\documentclass{article}
\usepackage[whole]{bxcjkjatype}
\begin{document}% 本文は自動的にCJK*環境で囲まれる
(本文)
\end{document}
\end{verbatim}\end{quote}
全体を(\Env{*}~でない)\Env{CJK}~環境で囲むための
オプション~\Opt{wholeCJK}~もある。
%---------------------------------------
\section{和文と欧文のファミリを連動させる}
{p\LaTeX} + JS~クラス(\Pkg{jsarticle}~等)を用いた場合と同様に、
欧文のファミリを変更した時に和文が追随するようにしている。
\begin{itemize}
\item 欧文の \verb|\rmfamily| 命令で和文が明朝体に切り替わる。
\item 欧文の \verb|\sffamily| および \verb|\ttfamily| 命令で
和文がゴシック体に切り替わる。
\item このパッケージでは、「明朝体」として「mc」、
「ゴシック体」として「gt」、「丸ゴシック体」として「mg」と
いう名前の~CJK~ファミリを用いる。%
\footnote{ただし実際にはこの名前は({p\LaTeX}~と同様に)%
\verb|\mcdefault|、\verb|\gtdefault|、\verb|\mgdefault| という
マクロになっていて変更可能である。}
\item 既定ではこれらのファミリには~\Pkg{ipaex-type1}~パッケージの
フォント(つまり~IPAex~フォントと同じもの)が使われる:%
mc~は~IPAex明朝、gt~と~mg~は~IPAexゴシック。
後述の通り、この設定は変更可能である。
\item 和文ファミリだけを切り替えるための \verb|\mcfamily|、%
\verb|\gtfamily|、\verb|\mgfamily| も存在する。
これらは \verb|\CJKfamily| の呼出と等価
(例えば \verb|\mcfamily| は \verb|\CJKfamily{mc}| と同じ)である。
\item 「既定の~CJK~ファミリ」%
\footnote{\verb|\CJKfamily{}| や \verb|\begin{CJK*}{UTF8}{}| のように
ファミリ名を空にした命令の呼び出しにおいて選択されるファミリのこと。
ちなみに、「既定の~CJK~ファミリ」を設定するには %
\verb|\CJKencfamily{UTF8}{ファミリ名}| とする。}%
は明朝体(mc)である。
ただし、文書開始時に欧文の既定ファミリが \verb|\sffamily|
\verb|\ttfamily| のものに変更されていた場合%
\footnote{プレアンブルで %
\verb|\renewcommand{\familydefault}{\sfdefault}| を実行すると
既定が \verb|\sffamily| になる。}%
は、連動する形でゴシック体(gt)が既定の~CJK~ファミリになる。
\end{itemize}
また、「欧文ファミリと連動する」\Env{CJK(*)}~環境として
\Env{uCJK(*)}~環境」を用意している。
例えば、
\begin{quote}\small\begin{verbatim}
\begin{uCJK*} 和文を含むテキスト \end{CJK*}
\end{verbatim}\end{quote}
は直前で有効な欧文ファミリに応じて次の何れかと等価になる。
\Env{*}~無しの~\Env{uCJK}~も同様。)
\begin{quote}\small\begin{verbatim}
\begin{CJK*}{UTF8}{mc} 和文を含むテキスト \end{CJK*} % 下記以外の場合
\begin{CJK*}{UTF8}{gt} 和文を含むテキスト \end{CJK*} % \sffamily か \ttfamily の場合
\end{verbatim}\end{quote}
%---------------------------------------
\section{実フォントを変更する}
前述の通り、和文フォントの実体には既定では~\Pkg{ipaex-type1}~%
パッケージのフォントが使われるが、dvipdfmx~または~{pdf\TeX}~を
使う場合は、実体を任意の~OpenType/TrueType~フォントに
変更することができる。
設定用命令の体系は~\Pkg{pxchfon}~パッケージと同じである。
\begin{quote}\small\begin{verbatim}
\setgothicfont{mplus-1p-regular.ttf} % ゴシック→ M+ 1P regular
\setboldgothicfont{mplus-1p-bold.ttf} % ゴシック太字→ M+ 1P bold
\end{verbatim}\end{quote}
\Pkg{pxchfon}~と同じようにプリセットを指定することもできる。
\begin{quote}\small\begin{verbatim}
\usepackage[ms-hg]{bxcjkjatype} % MS フォント + HG フォント
\end{verbatim}\end{quote}
ただし、{pdf\TeX}~では使えるフォントの種類に制限があり、
TrueType~グリフのフォント(TTC~形式を除く)のみが使用可能である。%
\footnote{だからプリセットのほとんどは~{pdf\TeX}~では使えない。}
\Opt{oneweight}~オプションを指定すると、明朝・ゴシックともに
単ウェイトを用いる設定となり、%
\footnote{つまり、\verb|\setminchofont| と \verb|\setgothicfont| だけ
を使用する。
ただし(標準の~{p\LaTeX}~と異なり)この場合でも丸ゴシックは
使用可能で \verb|\setmarugothicfont| も有効である。}%
明朝体の太字がゴシック体になる。
%---------------------------------------
\section{その他の注意}
\begin{itemize}
\item 文字コードは~UTF-8~のみが使用できる。
\item \Pkg{hyperref}~パッケージで和文を含むしおりを作る場合は、%
\Pkg{hyperref}~のオプションに \verb|unicode| を指定する。
\item 実フォントを変更する機能はドライバ依存であり、パッケージには
ドライバ指定のオプション(\verb|dvipdfmx| と \verb|pdftex|)が
存在するが、常に自動判別されるので明示的に指定する必要はない。%
\footnote{DVI~モードである場合は \Opt{dvipdfmx}~と判定する。
実フォント変更を行わない限り、このまま~dvips~で使用しても問題ない。}
\item 「日本語文書のためのレイアウト設定」はこのパッケージの
考慮範囲外である。
\end{itemize}
\end{document}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment