マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

zxjatype で日本語と中国語を混在させる

「フォントにない文字を別のフォントで補う」(2011-02-20)に対する K. Okada 様のコメントに対する私の返答:

upLaTeX の既定設定は日本語に適したものなので、中国語には必ずしも適切ではないと思います。この点は zxjatype の日本語用スタイルも同じです。中国語の組版規則については何の知識も持ち合わせていないのですが、zxjatype を使っているのならば、中国語の部分では xeCJK が提供する本来の(中国語用の)句読点スタイルに戻すという方法が有用だと思います。また暇があれば解説しようと思います。

zxjatype パッケージは内部で xeCJK パッケージを読み込んでいる。この xeCJK(孫文昌 氏制作)は中国語組版のためのパッケージである。ゆえに、中国語「だけ」書きたいのであれば、xeCJK を普通に使えばよい。中国語の組版も日本語と同様に約物の周りの空きの調整が必要なようであるが、xeCJK はこの調整の方式を「句読点スタイル(punctuation style;標点格式)」と呼んで複数の方式から選べるようにしている。


% 文字コードUTF-8
\documentclass[a5paper]{article}
% ページレイアウトは考慮外...
\usepackage{xeCJK}
%\punctstyle{fullwidth} % これは既定だから不要
\setCJKmainfont{AR PL SungtiL GB}
\setlength{\parindent}{2em}
\begin{document}
18岁那年,我高中毕业了。
同学们纷纷托亲戚、找朋友,给自己找工作。
毕业典礼结束后,我回到家,一进门就对着退休的父亲嚷道:%
“爸,这回您可得替我找找您过去的同事了。”
\end{document}

zxjatype では、xeCJK に対して日本語用の句読点スタイル(名前は quasijis)を新たに用意して、さらに幾つかのパラメタの値を変えることで日本語用の組版を実現している。元の設定も残してあるので、日本語用の設定と中国語用の設定の間での切替が可能である。


[中国語用の設定に切替]
\zxuseoriginalparameters
\punctstyle{fullwidth} % または他の xeCJK 提供の句読点スタイル
[日本語用の設定に切替]
\zxusejapaneseparameters
\punctstyle{quasijis}

実際にはこれにフォントの切替を含めることになる。ここで注意したいのは、quasijis スタイルは(JIS X 4051 に準じる組版をするという目的に即して)等幅フォントの使用が前提となっているので、日本語用のフォントは等幅のものを選択する必要がある。一方、xeCJK 本来の句読点スタイル(fullwidth 等)*1は、xeCJK の実際の使用を観察する限り、プロポーショナルフォントを使うように見える。なお、いずれの設定でも、欧文文字は欧文フォント(\setmainfont 等で指定される;これは普通はプロポーショナルだろう)で出力される。

これを踏まえて、日本語がメインで時々現れる中国語の部分をマークアップするという文書の設定を挙げる。例として、H. Okada さんが挙げていたセンター試験問題を用いるが、本質的でない部分(設問用の下線等)は省略した。


% 文字コードUTF-8
\documentclass[a5paper]{bxjsarticle}
\usepackage{zxjatype}
\setjamainfont{IPAMincho} % 日本語明朝フォント
% ↓ ヒラギノ明朝の場合、等幅指定(RawFeature=-palt)に注意
%\setjamainfont[BoldFont=Hiragino Mincho Pro W6,RawFeature=-palt]
% {Hiragino Mincho Pro W3}
\setjasansfont{IPAGothic} % 日本語ゴシックフォント
\setjafamilyfont{chinesefam}{AR PL SungtiL GB} % 中国語フォント
% \chinese 命令: 中国語用の設定に切り替える。(局所的に使うべき)
\newcommand*{\chinese}{%
\CJKfamily{chinesefam}%
\punctstyle{fullwidth}%
\zxuseoriginalparameters}
% chinesepar 環境: 中国語用の段落の設定
% \chinese 設定に段落下げ量の変更(2zw)を含める
\newenvironment{chinesepar}%
{\par \chinese \setlength{\parindent}{2\jsZw}}{\par}
%
\begin{document}

次の文章を読み,下の問い(問1〜7)に答えよ。
ただし,設問の都合上,一部をピンインで表記してある。
\par\bigskip
\begin{chinesepar}
18岁那年,我高中毕业了。
同学们纷纷托亲戚、找朋友,给自己找工作。
毕业典礼结束后,我回到家,一进门就对着退休的父亲嚷道:%
“Bà, zhè huí nín kě děi tì wǒ zhǎozhao nín guòqù de tóngshì le.”

父亲奇怪地问:“找他们做什么?”

“给您儿子安排个好点儿的工作啊!” 我说。

父亲没有答话,站起身来对我说:“走,跟爸到外面看看去。”
\end{chinesepar}

\end{document}

*1:全角式(fullwidth)、半角式(halfwidth)、開明式(mixedwidth)、行末半角式(merginkerning)、CCT 式(CCT)、無調整(plain)。