マクロツイーター

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

(u)pLaTeX で CJK パッケージする件(2)

前回の続き)

upLaTeX で和文してしかも CJK パッケージしたい場合

果たしてそんな需要があるのかは不明だが、“面白い話”なのは確かである。というわけで、作ってみた。

使い方は簡単で「CJKutf8 パッケージ(または CJK パッケージ)の代わりに pxCJKutf8 パッケージを読み込む」だけでよい。

%(例えばコレだったら)
\usepackage{CJKutf8,CJKspace,CJKpunct}
%↓(代わりにコレにする)
\usepackage{pxCJKutf8,CJKspace,CJKpunct}

なお、名前から分かるように pxCJKutf8 は「CJKutf8 の代用である」である。だから文書ファイルの文字コードUTF-8 にする必要がある*1。(日本語とそれ以外の CJK 言語が混在することになるので当然そうなっているであろう。)それさえ守られていれば、ほとんど全ての場合に「CJK パッケージの代用」として pxCJKutf8 が使える。

% upLaTeX 文書; 文字コードは UTF-8
\documentclass[uplatex,a4paper]{jsarticle}
\usepackage{pxCJKutf8,CJKspace,CJKpunct}
\begin{document}

up{\TeX}{\Large\gtfamily 日本語}できます!

\begin{CJK*}{UTF8}{gbsn}
用 CJK 宏包可以写{\Large\CJKfamily{gkai}中文}\end{CJK*}

\end{document}

「upLaTeX の日本語」と「CJK パッケージの中国語」の両方について、フォントの選択が正常に行われていることが判る。

rubyでルビしたい例

CJK パッケージがまともに使えるということは、ruby パッケージもまともに使える。ruby パッケージの \ruby 命令を用いて中国語にルビを振って、あとイロイロしてみる例を示す。

% upLaTeX 文書; 文字コードUTF-8
\documentclass[uplatex,a4paper]{jsarticle}
\usepackage[T5,T1]{fontenc}% フォントエンコーディングしたい
\usepackage{pxCJKutf8,CJKspace,CJKpunct}% CJKしたい
\usepackage[prefernoncjk]{pxcjkcat}% 欧文UTF-8直接入力したい
\usepackage{lmodern}% Latin Modern したい
\usepackage[CJK]{ruby}% 中国語でルビしたい
\usepackage{pxrubrica}% 日本語でルビしたい
\rubysetup{<->}% pxrubricaの設定
\begin{document}
% 中国語(簡体) : ruby でルビする
\begin{CJK*}{UTF8}{gbsn}
我的\ruby{气垫船}{qìdiànchuán}装满了\ruby{鳝鱼}{shànyú}\par\bigskip
\end{CJK*}

% 日本語 : pxrubrica でルビする
私のホバークラフト\jruby{}{うなぎ}でいっぱいです。
%※別の \ruby がある場合は pxrubrica の \ruby は \jruby とする.
\par\bigskip

% 韓国語
\begin{CJK}{UTF8}{nanummj}% こちらは'*'無しのCJK
내 호버크라프트는 장어로 가득 차 있어요.
\par\bigskip
\end{CJK}

% ベトナム語
{\fontencoding{T5}\selectfont % フォントエンコーディング切替
Tàu cánh ngầm của tôi đầy lươn.
\par\bigskip}

\end{document}

なお、日本語の部分(「upTeX の和文」として処理されている)に ruby パッケージの \ruby を適用することは(恐らく)可能であるが、“まともに”出力させるのは結構大変である。日本語のルビのためのパッケージを利用するのが無難である。

*1:ちなみに、CJKutf8 パッケージは「CJK パッケージと欧文の utf8 入力エンコーディングの機能を両立させるためのもの」である。