|
|
En toi Pythmeni tes TeXnopoleos
[電脳世界の奥底にて] |
XeLaTeX で日本語する件について
- 2011/05/08: fontspec 2.x 版を前提とする記述に書き直した。
- 2010/08/16: 一部の文章を別のページへ移動: 「BXjscls パッケージ」 「XeLaTeX:欧文フォントについての補足」
- 2010/06/19: fontspec 2.0 版についての補足と「IPAexフォント」についての記述を追加。
- 2010/02/01: 「欧文フォントについての補足」を追加。
XeTeX の紹介
XeTeX とは
XeTeX は Jonathan Kew 氏による TeX の拡張で符号空間を Unicode 全体 (BMP 以外も含む)に拡大したものである。 既存の TeX の Unicode 拡張としては Omega(Ω)があるが、 XeTeX はこれとは別の拡張となっている。 (なお、Omega の後継にあたる Unicode 拡張 TeX が LuaTeX である。)
XeTeX のもう一つの大きな特徴は、 現在の標準的なフォント技術を内部に取り込んでいることである。 元々の TeX が「特定の技術基盤に依存しない」 という思想で設計されていることはよく知られているが、 これはフォント関係の技術についても当てはまり、 フォントの扱いは TeX 本体 (すなわち TeX ソースを DVI ファイルに変換する) ではなく DVI ウェア(DVI ファイルを扱うソフトウェア)が行う。 このため、TeX の機能自体は 30 年前からほとんど変わっていないにも関わらず、 dvipdfmx と組み合わせて OpenType フォントを埋め込んだ PDF 文書を作成するということが可能になっている。 しかしその代償として、 例えば新しいフォントを使えるようにするために一定の作業が必要になるなどの短所を持ち合わせている。 XeTeX はこの点に関して「非依存性」を捨てて、 システムで使用可能なフォントを直接扱うことで、 何も設定しなくても好きなフォントを使うことが可能になっている。 また、従来の TeX では難しい、 フォントのもつ情報を利用した高度なリガチャ・アクセント付加・ 位置異形の処理も自由に使うことが可能になっている。
XeTeX の出力例
XeTeX のもつ能力の一端を示す例をあげる。 これは XeLaTeX(XeTeX 上で動く LaTeX)の文書である。
% このファイルの文字コードは UTF-8
\documentclass[a4paper]{article}
\usepackage{fontspec} % これは後で解説
\newfontfamily\fchr{Charis SIL} % \fchr でフォント“Charis SIL”に切替
\newfontfamily\fipm{IPA明朝} % \fipm でフォント“IPA明朝”に切替
% \faru でデーヴァナーガリー文字用の設定を施した“Arial Unicode MS”に切替
\newfontfamily\faru[Script=Devanagari]{Arial Unicode MS}
% \showUC は何の変哲のない LaTeX のマクロ
\newcommand*\showUC[1]{\ \texttt{\footnotesize U+#1}}
\begin{document}
\begin{itemize}
\item {\fipm 土\symbol{"571F}}\showUC{571F} /
{\fipm 圡\symbol{"5721}}\showUC{5721} /
{\fipm 𡈽\symbol{"2123D}}\showUC{2123D}
\item {\fchr j}\showUC{006A} + {\fchr\symbol{"0302}}\showUC{0302}
= {\fchr j\symbol{"0302}}
\item {\fipm か}\showUC{304B} + {\fipm\symbol{"309A}}\showUC{309A}
= {\fipm か\symbol{"309A}}
\item {\faru \symbol{"915}}\showUC{0915} + {\faru\symbol{"93F}}\showUC{093F}
= {\faru \symbol{"915}\symbol{"93F}}
\end{itemize}
\end{document}
上の文書を xelatex コマンドで組版すると以下の出力を含む PDF 文書が得られる。
上の文書において、\symbol{"xx} は符号位置が xx(16進)
である文字を出力する標準 LaTeX コマンドである。
出力 1 行目では、\symbol の引数に
8 ビットを超える値を指定した結果を示しているが、
XeLaTeX はこの値を Unicode 値とする文字を出力している
―すなわち、XeLaTeX が Unicode 符号空間を扱えることが判る。
また同じ行では UTF-8 で入力した Unicode 文字を出力させている
―すなわち、XeLaTeX は UTF-8 入力を扱える。
2 行目以下では Unicode 結合文字を用いた文字合成の例を示している。
j\symbol{"0302} は j の直後に U+0302
の文字(結合曲アクセント)を書いたのと同じで、
これは Unicode の規則で「ĵ(曲アクセント付 j)」を表す。
2 行目を見ると正しく合成が行われていることが判る。
\symbol で表記した。
(この後に合成文字を直接書いた例を示す。)
(ところで、フォントによっては Windows の「メモ帳」 では正しく見えるのに XeTeX では不正になることがある。 「メモ帳」の方は Unicode の合成規則を直接適用しているということか?)
上の例から、XeLaTeX では文字合成等を含んだ複雑な Unicode テキストをソース文書に記述しても正しい表示形で出力することがわかる。 次の例では、文字合成が必要になる言語のテキストを UTF-8 で直接記述している。
インストール
ここでは W32TeX の場合のみを解説する。 (他の環境の場合、TeX Live の 2007 以降に基づくディストリビューションであれば XeTeX が含まれているはずである。)
W32TeX でのインストール
W32TeX(角藤版TeX) を使っている場合は、 リンク先の「XeTeX for W32」 の節にあるアーカイブをダウンロードしてそこにある説明に従って作業を行えばよい。 以下に少し補足をしておく:
- 角藤版インストーラ texinst20xx で TeX 一式をインストールする際には、 他のアーカイブ(latex.tar.bz2 等)と同じディレクトリに XeTeX のアーカイブ xetex-w32.tar.bz2 を置いておくと展開の対象となるので、 この方法で W32TeX に XeTeX を追加することもできる。 (この場合はインストール後に手順(3)に進む。) 角藤氏の説明での手順(1)(2)は W32TeX を部分的に上書き更新しているが、 もしクリーンインストールが可能であればそちらの方が後のトラブルが少ないと思われる。
- 手順(3)については、意味がよく解らなければ飛ばしてよい。 この場合、XeTeX の方式で使えるフォントは「Windows にインストールされているフォント」 に限られる。
fc-listコマンドの出力(文字コードは UTF-8) は次のような形式になっている(ようである)。IPAPGothic,IPA Pゴシック:style=Regular IPAPMincho,IPA P明朝:style=Regular Tahoma:style=Bold,Negreta,tučne,fed,Fett,Έντονα,Negrita,Lihavoitu,Gras,...(略) Tahoma:style=Regular,Normal,obyčejne,Standard,Κανονικά,Normaali,Normal,,...(略)
最初の行が「IPA Pゴシック」に対応するもので、“style=”の左にコンマ区切りの各々が XeTeX で使える「フォント名」になる。 (つまり、「IPA Pゴシック」は「IPAPGothic」という別名をもっている。) 下の 2 行は「Tahoma」であり、これには「Regular」の他に「Bold」の「スタイル」がある。 右にたくさん並んでいるのは「Regular」「Bold」を別の言語で記したもの。
fc-cache 等も、実は Linux のフォント管理のコマンドである。
XeLaTeX の基本的な使い方
まずは、基底言語が英語(および他の「欧文」の言語)である文書の書き方について説明する。 例によって、W32TeX での使用を中心とした解説になるので、 途中の例で用いたフォントは、フリー/無償配布のものを除き、 WIndows(XP 以降)および Microsoft Office に付属するフォントである。
プレアンブルの書き方
まずは非常に基本的な例を一つ示す。
% このファイルの文字コードは UTF-8
\documentclass[a4paper]{article}
\usepackage{fontspec}
\usepackage{xltxtra} % \XeTeX ロゴのために必要
\setmainfont[Scale=MatchLowercase]{Palatino Linotype} % \rmfamily のフォント
\setsansfont[Scale=MatchLowercase]{Tahoma} % \sffamily のフォント
\setmonofont[Scale=MatchLowercase]{Lucida Console} % \ttfamily のフォント
\begin{document}
This document contains English, \textit{Français}, Српски,
and Rom\^an\u{a}.
{\sffamily
The logo {\XeTeX} can be output by \verb|\XeTeX|.}
\end{document}
XeLaTeX 文書のプレアンブル(\begin{document} より前の部分)
の書き方について、従来の (p)LaTeX と比べて注意する点を述べる。
- 当然だが、文字コードは UTF-8 にする。
なお、従来の欧文 LaTeX で UTF-8 入力のために必要だった
\usepackage[utf8]{inputenc}は指定してはいけない。参考: XeTeX 自身は UTF-8 以外のエンコーディングによる入力をサポートしている(テキスト出力は必ず UTF-8)。 しかし、それを LaTeX のレベルでどういう形式でサポートするかはまだ確定していないようである。 - 文書クラスは、従来の欧文 LaTeX 用のもの(article、book、amsart 等)
であればほとんどの場合使用できる。
jarticle や jsarticle の類は pLaTeX 専用なので使えない。
注意: 欧文用の文書クラスでは 用紙サイズの既定値がレターサイズ (
letterpaper)になっていることが多いので、 A4 判の原稿を作る場合はクラスオプションa4paperの指定を忘れないように注意。 OpenType/TrueType の Unicode フォントを使いたい場合 (普通はそうであろう)は fontspec パッケージを読み込んでおく。 これは XeTeX の「フォントを直接指定する機能」を LaTeX で使用するために必要で、 さらに LaTeX の設定を XeTeX に適したものにする最低限の処置を行う。
参考: LaTeX での XeTeX 拡張機能の使用のためのパッケージには fontspec に他に以下のようなものがある。
- xunicode ― 従来の LaTeX における特殊文字の表記法を
使用するためのパッケージ。
例えば、上の例で
Rom\^an\u{a}→ Română という変換は このパッケージが実現している。 (なお、後述の fontspec の Mapping 指定も参照されたい。) - xltxtra ― LaTeX の設定を XeTeX
に適したものにする追加の修正を行うパッケージ。
XeTeX のロゴを出力する命令
\XeTeXはここで定義されている。
fontspec 2.0 版以降では、それだけを読み込めば Unicode 入出力を行うために十分な環境が整うことになっている (他の必須のパッケージ、例えば xunicode は内部で自動的に読み込まれる)。 ただし、xltxtra は読み込まれず、 これはそれが特に提供する機能が必要な時にのみ読み込むべきである。
fontspec 2,0 版より前では、「全部揃えたい」 時には xltxtra パッケージを読み込むという慣習になっていた (xltxtra を読み込めば「全部揃う」こと自体は今でも変わらないが)。
参考: fontspec パッケージ (2.0 版以降)は etex パッケージ(LaTeX を e-TeX 拡張に適応させる) と fixltx2e パッケージも読み込んでいる。 なお、XeLaTeX(および他の標準的な XeTeX 起動コマンド)では e-TeX 拡張は 有効になっている。- xunicode ― 従来の LaTeX における特殊文字の表記法を
使用するためのパッケージ。
例えば、上の例で
- 従来の 8 ビット欧文 LaTeX のパッケージについては、 フォント関連のものを除けばそのまま使用できる可能性が高い。 pLaTeX 専用のパッケージ(OTF パッケージ等)は使えない。 (「DVIウェア依存のパッケージの使用」の事項にも注意。)
組版の方法
XeLaTeX 文書を組版する場合には、latex コマンドの代わりに xelatex を 用いる。 例えば文書ファイルの名前が sample.tex とすると
xelatex sample.tex
を実行すると、PDF 文章 sample.pdf に変換される。
-no-pdf オプション付で実行すると、
xdvipdfmx の呼出を行わずに XDV ファイルを出力するようになる。
xelatex -no-pdf sample.tex # sample.xdv を出力
こうして生成される XDV ファイルは現状では xdvipdfmx で PDF
に変換する以外の使い道がないので役に立たない。
しかし、最終的な組版結果を得るまでに xelatex コマンドを複数回起動する必要がある場合
(例えば相互参照の解決のため)、
XDV → PDF 変換は最後の 1 回のみしか必要としないので、
変換を分けて行うことで処理時間を短縮できる。
xelatex -no-pdf sample.tex xelatex -no-pdf sample.tex #(これ以上繰り返す必要がないと判明した後) xdvipdfmx sample.xdv # sample.pdf を得る
フォント関係の命令(fontspec パッケージ)
XeTeX の「フォントを直接指定する機能」を LaTeX で利用するためには fontspec パッケージの命令を用いる。 このパッケージの機能は非常に多岐にわたるが、 ここでは必要最低限のものに絞って解説する。
復習:従来の LaTeX のフォント管理
XeLaTeX の話をする前に、 まず従来の LaTeX(2e) におけるフォント管理機構について復習しておく。
LaTeX ではフォントをファミリ・シリーズ・シェープ・サイズ・ エンコーディングの 5 つの属性に分けて管理している。 このうち字形デザインに関わるのは最初の 3 つである。
- ファミリ:字形のデザインの全体的な特徴。
本来は「Times New Roman」や「Helvetica」等のことであるが、
LaTeX では少し事情が異なる。詳しくは後述。
\rmfamily: セリフ。\sffamily: サンセリフ。\ttfamily: 等幅(通常はタイプライタ書体)。
- シリーズ:字の幅および線の太さ。
\mdseries: 基本的なシリーズ。\bfseries: 太字。
- シェープ:上の 2 つ以外の区別。
\upshape: 直立体(基本的なシェープ)。\itshape: イタリック体。\slshape: 斜体。
ここで注意すべきなのは、ファミリについては、多くの場合、 ユーザは「Times New Roman」「Helvetica」等の名前でなく「セリフ」 等の一般的な名称―総称ファミリ(generic family)と呼ばれる―で指定するということである。 この総称ファミリには実際のファミリが割り当てられていて、例えば、 LaTeX の既定の設定では
\rmfamily: Computer Modern Roman (cmr)\sffamily: Computer Modern Sans-serif (cmss)\ttfamily: Computer Modern Typewriter (cmtt)
であるが、times パッケージを読み込むと。
\rmfamily: Times (ptm)\sffamily: Helvetica (phv)\ttfamily: Courier (pcr)
のように割当が変更される。
このように、ファミリ指定には総称ファミリ命令が使われることが多いが、
\fontfamily 命令を使ってファミリを直接指定することも可能である。
例えば、既定の設定の LaTeX で
% 'Courier' is output using Courier!
Here I use the {\fontfamily{pcr}\selectfont Courier} font.
のようにして Courier が直接指定できる。
既に述べたように、
従来の LaTeX で新たなフォントファミリを使えるようにするには
「ある一連の作業」が必要になるが、
それが行われたファミリには「LaTeX におけるファミリ名」が与えられる。
例えば、上の例でわかるように、Courier に対する LaTeX ファミリ名は pcr である。
(上で挙げたファミリについて括弧内に記したのが LaTeX のファミリ名である。)
\fontfamily の引数にとるのは LaTeX ファミリ名である。
(そのように考えると、総称ファミリ \ttfamily に Courier が
「割り当てられている」というのは、\ttfamily が
\fontfamily{pcr}\selectfont と同値になっていることと解釈できる。)
これから XeLaTeX + fontspec について解説するが、 基本的にここで変わるのは、 「OS にインストールされたフォントが何の前作業もなしにいきなり使える」ことと 「本来のファミリ名で指定する」ことであり、 総称ファミリ等の概念は変わらない。 文書クラスにおいてファミリの変更を指定する(例えば見出しをサンセリフにする等) 時には通常総称ファミリが使われるが、 適切な割当を行うことで、 新たに設定したファミリをこのような場合に適用させることができる。
\rmfamily)であるが、
文書クラスによっては
(特に seminar、beamer 等のスライド用のクラスでは)
サンセリフ(\sffamily)のこともある。
XeLaTeX のフォント関係の命令
fontspec の提供する命令のうち、必要最低限のものを挙げる。
\fontspec[<属性リスト>]{<ファミリ名>}: その場でファミリを変更する。 使い方は\rmfamily等の総称ファミリ命令と同じである (もちろんこの命令は総称ファミリではないが)。\newfontfamily\命令[<属性リスト>]{<ファミリ名>}:\命令を指定のファミリに切り替える命令として定義する。\setmainfont[<属性リスト>]{<ファミリ名>}: 総称ファミリの\rmfamily(セリフ)に割り当てるファミリを指定する。\setsansfont[<属性リスト>]{<ファミリ名>}: 総称ファミリの\sffamily(サンセリフ)に割り当てるファミリを指定する。\setmonofont[<属性リスト>]{<ファミリ名>}: 総称ファミリの\ttfamily(等幅)に割り当てるファミリを指定する。
ここで、「ファミリ名」には、先述した通りの実際のフォントファミリ名、 すなわち「IPA明朝」(あるいは「IPAMincho」)「Tahoma」等を指定する。
「属性リスト」の部分には「<属性名>=<値>」
の形式の属性指定をコンマ区切りで書き並べる。
指定できる属性の種類は極めて多いのであるが、
日本人が普通に使う場合に絞って、最低限必要になりそうなものを紹介する。
(専ら欧文用の設定については省略している。
全体が知りたい場合は fontspec パッケージの説明書を参照してほしい。)
BoldFont=<フォント名>
ItalicFont=<フォント名>
BoldItalicFont=<フォント名>: 通常、上述の命令を用いてフォントファミリを定義した場合は、 太字やイタリックのフォントは自動的に適当なものが割り当てられる。 例えば、\fontspec{Tahoma}の場合は、太字(\bfseries)のフォントは自動的に Tahoma の Bold 版(これのフォント名は「Tahoma Bold」)になる。 しかし、Tahoma にはそもそも Italic がないので、 上の指定ではイタリック(\itshape)が使えない。 ここでもし代用として Verdana の Italic (実際はイタリックでなく斜体であるが) を使いたい場合は、\fontspec[ItalicFont=Verdana Italic]{Tahoma}と指定すればよい。 同様に、BoldFontは太字、BoldItalicFontは太字イタリックのフォントを直接指定するのに用いる。ExternalLocation: フォントをフォントファミリ名の代わりにフォントファイルの名前で指定する。 指定されたファイルは Kpathsearch に従って探索される。 (カレントディレクトリは常に検索される。 また W32TeX の場合、Windows にインストールされたフォントも検索対象となる。) この指定の場合、太字とイタリックのフォントの自動的割当は機能しないので、 必要であれば、BoldFont等で指定する必要がある。参考: fontspec 2.0 版以降では、 名前が拡張子(.otf等) を含む場合は自動的にファイル名での指定とみなされ、ExternalLocationは不要になっている。 また、Extension=<拡張子>で拡張子を別に指定することも可能である (名前は拡張子を除いたファイル名で指定する)。 従って、現在ではExternalLocationが必要なのは 「拡張子を省略(自動判別)してファイル名で指定する場合」 に限られる。Path=<ディレクトリ名>:ExternalLocationと同様だが、探索対象ディレクトリを指定のものに限る。参考: 2.0 版より前ではExternalLocation=<ディレクトリ名>であった。Scale=<値>: そのファミリの字のサイズを標準(Scale無指定時)の<値>倍にする。 同じフォントサイズ(\largeや\fontsizeで指定するもの) でも書体によって異なる大きさに見えるという場合に調整するために用いる。Scale=MatchLowercase: 現在有効なフォントと「上下の突出部のない英小文字(“x”等)の高さ(x-height)」 が一致するようにサイズを調節する。 (一般的に、異なる欧文フォントが混在している場合には、 x-height を合わせていると字の大きさが揃って見えるとされている。)CJKShape=<値>: 異体字切替。<値>はJIS1978、JIS1983、JIS1990のいずれかで、 JIS X 0208 の各々の版の例示字体に相当する字形を選択する。 (JIS2004はまだ用意されていないので後述のRawFeature指定を用いる。) もちろん、フォントがこの機構に対応している必要がある。 (補足。2000JIS(JIS X 0213:2000)の例示字体は 90JIS(JIS X 0208:1990) のそれを引き継いでいるので、「2000JIS 字形」 にしたい場合に指定するのはJIS1990である。)CharacterWidth=<値>: 字幅の切替。<値>はProportional(プロポーショナル)、Full(全角)、Half(半角)、Third(三分角)、Quarter(四分角)で、 その幅のグリフを優先的に用いるようになる。AlternateHalfは約物のみを半角幅にする設定、AlternateProportionalは約物のメトリックをプロポーショナルにする設定。Vertical=RotatedGlyphs: 縦書き用のグリフを横転した形で出力する(書字方向は変わらない)。 graphicx パッケージの\rotatebox命令と組み合わせることで部分的な縦書きが実現できる。Ligatures=TeX: 従来の LaTeX でリガチャによって実現していた特殊 文字入力―例えば 「?`→ ¿」 「---→ —」等―を有効にする。 またリガチャではないが「`→ ‘」 「'→ ’」(引用符) の変換もここに含まれる。参考: 全く同じ設定をMapping=tex-textでも行えるが、 こちらは XeLaTeX 専用で LuaLaTeX では使えない。Ligatures=TeXは XeLaTeX と LuaLaTeX で共通して使えるように fontspec 2.0 版以降で用意されたものである。 (つまり、XeLaTeX では「Mapping」の機能を用いるが、 LuaLaTeX では全く別の機構を用いて同じ機能を実現している。)RawFeature=<値>: OpenType の属性を直接指定する。<値>は属性名(英字 4 文字)の前に+(有効化) または-(無効化)を付したものをセミコロンで区切って指定する。 例えば「RawFeature=+smco;-liga」 はスモールキャピタルを有効にしリガチャを無効にする。 以下では特に日本語文書で必要そうな値を挙げておく。+jp04: JIS X 0213:2004 の例示字体に相当する字形 (いわゆる「2004JIS 字形」)を選択する。CJKShape=JIS2004がまた用意されてないのでその代わり。-palt: XeTeX では(少なくとも一部のフォントで)CharacterWidth=AlternateProportionalが既定で有効化されていて、 そのため本来等幅である「和文用の約物」 がプロポーショナル幅になることがある。-palt指定はAlternateProportionalを無効にする。
参考: この指定法は OpenType レンダリングの時で、AAT を使用する場合は指定方法が異なる。 Mac OS X において AAT と OpenType の両方に対応するフォントを使用する時に、 OpenType ライブラリ(ICU)を用いることを明示する場合は、Renderer=ICUを指定すればよい。 (Graphite が優先的に選ばれることってあるんですかね…?)
既に「プレアンブルの書き方」 のところで一部の基本的な命令の使用例を紹介した。 ここでは複雑な指定を用いた例をその出力結果とともに掲載する。
% このファイルの文字コードは UTF-8
\documentclass[a5paper]{article}
\usepackage{fontspec}
\usepackage{graphicx} % ドライバ名は不要
\setmainfont[Scale=MatchLowercase]{Palatino Linotype}
% イタリック(実際は斜体)を Verdana で代用する
\setsansfont[Scale=MatchLowercase,ItalicFont=Verdana Italic]{Tahoma}
\setmonofont[Scale=MatchLowercase]{Lucida Console}
\newfontfamily\arial{Arial} % \arial は Arial
\begin{document}
% 本文(プレアンブルでなく)でも使用可能
\newfontfamily\courier{Courier New} % \courier は Courier New
% "Scale=MatchLowercase" 指定のものは小文字の高さが揃うが
% 無指定のものは揃わない
{\rmfamily Super}{\sffamily califra}{\ttfamily gilistic}%
{\arial expiali}{\courier docious}%
% \fontspec で指定、"!" の前の空白が無視される
{\fontspec[Scale=2]{Impact} !}
% Tahoma で斜体指定(\textsl)すると Verdana Italic になる
% どうも fontspec は \slshape と \itshape を同じように扱う
% ようですね
\sffamily The oblique shape is substituted by \textsl{Verdana}.
% Ligatures=TeX の効果
\fontspec{Times New Roman}
``Smart'' quotes? /
\fontspec[Ligatures=TeX]{Times New Roman}
``Smart'' quotes!
% ファイル名指定で TeX ツリーの中にある LM Roman Dunhill を指定
\fontspec[ItalicFont=lmromandunh10-oblique.otf]{lmromandunh10-regular.otf}
A quick brown \textsl{firefox} jumps over the lazy dog.
% メイリオで色々と遊んでみる
% 小塚フォントやヒラギノフォントでも良いはず
\fontspec{メイリオ} % メイリオは 2004 字形がデフォルト
東京都葛飾区 /
\fontspec[CJKShape=JIS1983]{メイリオ} % 1983 字形に切り替える
奈良県葛城市
% 無理やり縦書き出力する例(\marginpar に出している)
\newfontfamily\vmeiryo[Vertical=RotatedGlyphs,CharacterWidth=Full]{メイリオ}
\newfontfamily\qwmeiryo[CharacterWidth=Quarter]{メイリオ} % 四分角
\newfontfamily\hwmeiryo[CharacterWidth=Half]{メイリオ} % 半角
% \addfontfeatures 命令を使った方がよいかも
% 縦中横。(Vertical の場合、文字の中心にベースラインが来る)
\newcommand*\HinV[1]{\rotatebox[origin=B]{90}{%
\raisebox{-0.38em}{\makebox[1em][c]{#1}}}}
\marginpar{\vmeiryo
\rotatebox[origin=r]{-90}% 右90度回転で正しい向きになる
{「日付=\HinV{\qwmeiryo 2009}年8月\HinV{\hwmeiryo 29}日」}}
\end{document}
参考: Windows XP
「IPAexフォント」の最新版(v001.02)は、
CJKShape=JIS1990 による 90JIS 字形への切替
(既定は 2004JIS 字形)に対応している。
(IPAex フォントの初版(v001.00)や IPA フォントは未対応。)
従って、上のメイリオの例と同じことができる。
なお、IPAex フォントに
ついてはこちらの記述も参照されたい。
\documentclass[a4paper]{article}
\usepackage{fontspec}
\begin{document}
{\fontspec{IPAexMincho}
東京都葛飾区} /
{\fontspec[CJKShape=JIS1990]{IPAexMincho}
奈良県葛城市}
\end{document}
なお、fontspec 使用時に総称ファミリに指定される既定のファミリは、 以下のように、TeX ツリー中の Latin Modern(OpenType 版)となっている。
\rmfamily: Latin Modern Roman\sffamily: Latin Modern Sans\ttfamily: Latin Modern Mono
また、fontspec を読み込まない場合は、 既定のフォント設定は従来の LaTeX と全く変わらず Computer Modern となる。 この状態では Unicode 文字を出力することはできない。
| XeLaTeX + fontspec | 従来の LaTeX |
|---|---|
\fontspec{ファミリ名} |
\fontfamily{ファミリ名}\selectfont |
\newfontfamily\命令{ファミリ名} |
\newcommand\命令
|
\setmainfont{ファミリ名} |
\renewcommand\rmdefault{ファミリ名}
|
\setsansfont{ファミリ名} |
\renewcommand\sfdefault{ファミリ名}
|
\setmonofont{ファミリ名} |
\renewcommand\ttdefault{ファミリ名}
|
これを見ると、\newfontfamily\命令[属性]{ファミリ名}
は \newcommand\命令{\fontspec[属性]{ファミリ名}}
と(動作としては)同じであることがわかる。
ただし、\newfontfamily の方が高速に動く。
(後者でも全く同一の内容のファミリが重複登録されることはないようだが、
命令の解釈の手間は省ける。)
新しいフォントの追加(W32TeX の場合)
これまでに見たように、XeLaTeX では基本的に TrueType/OpenType 形式(現代的な OS で一般的に使用される形式である) のフォントで、従来の 8 ビット欧文の LaTeX で用いられてきた Type1 や PK フォントは「使わない」。 (ただし「使えない」訳ではない。 「欧文フォントについての補足」を参照。 また、数式フォントについては話が別である。)
W32TeX の XeTeX の既定の設定では、 Windows にインストールされたフォント (C:\WINDOWS\Fonts に置かれている) は XeTeX で使用可能な状態になっている。 従って、新たな TrueType/OpenType フォントを入手したとして、 それを XeTeX で使えるようにしたい場合は、 それを(普通の方法で)Windows にインストールするというのが最も簡便な方法である。 ただし、新しいフォントをインストールした後には、 次のコマンドを(コマンドプロンプト等で)実行する必要がある。
fc-cache -r -v
DVIウェア依存のパッケージの使用
XeLaTeX において graphicx や hyperref 等の「ドライバ(=使用するDVIウェアの名)」 をオプションに指定する必要のあるパッケージを使う場合は、 ドライバとして以下のものを指定する。
- XeTeX の使用を意味するドライバ名は
xetexである。 従って、これが使える場合は、XeTeX 用に最適化された設定が利用できることになる。 graphicx や color はxetexオプションをもっている。 (「使えない」場合は大抵はエラーになる。) xetexが使えない場合は、dvipdfmxを指定すると上手くいくかもしれない。 XeTeX は PDF を生成するのに dvipdfmx の拡張版である xdvipdfmx を用いるからである。dvipdfmxも使えない場合、dvipdfmが使えるかもしれない。 (dvipdfmx 自体が dvipdfm というドライバの拡張であるから。)
パッケージによっては、何も設定しなくても
(あるいは何か別のものを設定していたとしても)
XeTeX に適したドライバを設定するものもある
(例えば、graphicx では xetex に、
hyperref では dvipdfm に強制的に変更される)。
ドライバを指定するタイプ以外で特定の DVI ウェアに依存するパッケージの場合も、 (XeTeX が dvipdfmx の拡張版を使っているという理由で) dvipdfm(x) で使えるものならば XeTeX でも使えることが期待できる。 例えば、tpic 拡張(eepic 等のパッケージで必要)については dvipdfmx が対応しているので、XeTeX でも対応しているといえる。 逆に、dvips 用のもの(PostScript コードを直接扱う)や pdfTeX 用(pdfTeX 拡張命令を用いる)のものは使えないことが多い。 ただし、PSTricks は XeTeX にも対応しているらしい (まだ確認していない)。
注意:
geometry の 5.0 版より前の版に関しては注意が必要である。
XeTeX の配布に含まれている設定ファイルでは、
geometry に関しては pdfTeX の為のコードを実行するように強制している。
恐らく、XeTeX が \pdfpagewidth と \pdfpagewidth
(pdfTeX の命令)を模倣しているからこの設定で妥当であると判断された
のであろうが、
少なくとも 4.2 版の geometry では \mag が既定値(1000)
でない場合は XeTeX がサポートしていない pdfTeX の命令が使われているためエラーが発生し、
今の設定ではこれを避けることができなくなっている。
もしこれが問題になるようであれば、XeTeX 実行時に読まれる geometry.cfg
を書き換える必要がある。
なお、geometry の 5.0 版以降は XeTeX に正規に対応していて、
かつ XeTeX の使用時には自動的に XeTeX 用の設定になるので、
特に何も気にする必要がなくなっている。
(geometry.cfg の該当の記述は 5.0 版では無害である。)
ちなみに、後で紹介する bxjs クラスは(js クラスと同様)
基底フォントサイズ変更に \mag を使っていて、
かつページレイアウト設定に geometry を使っているが、
古い版の場合でも、
geometry.cfg の読込を回避する仕掛けを施すことでこの問題を避けている。
欧文フォントについての補足
(別のページに分離移動しました。)
日本語したい場合は
「基本的な使い方」の解説が随分と長くなってしまったが、 ここから XeLaTeX で日本語を含む文書を作成する方法について解説する。
といっても、 既に日本語の文字が含まれる出力例を何度も出していることからもわかるように、 XeLaTeX では特に和文(あるいは CJK)と欧文の文字の区別をしないので、 文書に含まれた全ての文字について、 フォントに該当の文字があればそれが出力される。 従って、欧文の文書の中に日本語の単語を混ぜるというような使い方であれば、 文書ファイルを UTF-8 で入力し、 fontspec で日本語フォントを指定するだけで可能になる。
\documentclass[a4paper]{article}
\usepackage{fontspec}
\setmainfont[Ligatures=TeX]{Times New Roman}
\newfontfamily\jarm[Scale=0.92]{IPA明朝}
\begin{document}
% 日本語フォントのままロシア語を出す訳にいかない!
В этом документе есть {\jarm 日本語} слово.
\end{document}
Scale=MatchLowercase
で合わせるのはあまり良い結果にならないことが多い。
日本語を含む段落を出力する
これだけで済むのであれば話は簡単であるが、 行を跨ぐほどの分量の日本語の段落を含む場合は残念ながら上手くいかない。
\documentclass[a5paper]{article} % 用紙サイズを A5 にする
\usepackage[pass]{geometry}
\usepackage{fontspec}
\setmainfont[Ligatures=TeX,Scale=1.08]{Palatino Linotype}
\newfontfamily\jarm{IPA明朝}
\begin{document}
% 出展: D.E.Knuth, “The TeXbook” / 最後の練習問題の解答
If this exercise isn't just a joke, the title of this appendix is a lie.
\jarm
もしこの練習問題が単なる冗談でないとしたら、この付録の標題は嘘だということになる。
\end{document}
\usepackage[pass]{geometry} は
「ページレイアウトは全く変更せず、
用紙サイズの記録のみを geometry に行わせる」
ための設定。
英文の方は行の右端で正しく折り返されるが、 日本語はそうならずにテキスト領域をはみ出して出力されてしまう (Overfull の警告が表示される)。 これは、従来の(欧文)LaTeX では (特別に指定する、あるいは分綴する場合を除き) 空白のある場所のみを改行可能な箇所として扱うからである。
日本語ではほとんどの文字の間で改行が可能であるが、 例えば句読点の前では改行できない等の例外(「禁則」という)があり、 日本語の段落を行分割するにはこの規則について周知している必要がある。 幸い XeTeX にはこのような規則に従って行分割する機能が備わっていて、 以下の手順でその機能を利用できる。
まず、以下の内容のファイルを作成し、ファイル名を myjapanese.sty とする (これは LaTeX のパッケージファイルである)。
% 日本語を含む段落を行分割するための設定
\XeTeXlinebreaklocale "ja"
\XeTeXlinebreakskip=0pt plus 1pt
\XeTeXlinebreakpenalty=0
% これについては後で説明する
\def\<{\@ifstar{\zx@hwback\nobreak}{\zx@hwback\relax}}
\def\zx@hwback#1{\leavevmode#1\hskip-.5em\relax}
そして、LaTeX 文書のプレアンブルの中でそのファイルを読み込むと、 日本語の段落も行分割されるようになる。
\documentclass[a5paper]{article}
\usepackage[pass]{geometry}
\usepackage{fontspec}
\usepackage{myjapanese} % 作成したパッケージを読み込む
\setmainfont[Ligatures=TeX,Scale=1.08]{Palatino Linotype}
\newfontfamily\jarm{IPA明朝}
\begin{document}
% 出展: D.E.Knuth, “The TeXbook” / 最後の練習問題の解答
If this exercise isn't just a joke, the title of this appendix is a lie.
\jarm
もしこの練習問題が単なる冗談でないとしたら、この付録の標題は嘘だということになる。
\end{document}
\XeTeXlinebreaklocale
に何らかの値(言語コード)が設定されている場合、XeTeX は
Unicode の行分割アルゴリズムに基づいて行分割を行う。
指定の言語によってはそれに特有の処理が加わることもあるが、
日本語(ja)の場合特別の処理がある訳ではないので \XeTeXlinebreaklocale "ja"
も \XeTeXlinebreaklocale "en" も同じ結果になるらしい。
\XeTeXlinebreaklocale "" のように空文字列を指定すると従来の TeX
の行分割方式に戻る。
これで XeLaTeX で日本語を含む判読可能な文書を(体裁はともかく) 出力できるようになった。 ここで日本語を扱う場合の注意事項を挙げておく。
- 行末の扱い:XeLaTeX では「欧文文字」と「和文文字」の区別をしないので、
日本語文字の後にある改行も空白として解釈される
(pLaTeX ではこのような改行は無視される)。
従って、ここで空白が不必要な場合は
%で改行を無効化する必要がある。% 行末に % が必要 もしこの練習問題が単なる冗談でないとしたら、この付録の標題は% 嘘だということになる。
- マクロ名: マクロ名に日本語文字(に限らず任意の Unicode 文字)
を含めることができる。
ただしマクロ命名規則における「英字と同じ扱い」「記号と同じ扱い」
の区別については pLaTeX と異なる場合がある。
(例えば
\メールは 1 つのマクロ名(命令語)として可能である。) - fontspec でのフォント指定では
\setmainfontに明朝体、\setsansfontにゴシック体のフォントを当てることになる。 pLaTeX でよく行われるように明朝体で太字(\bfseries) 指定した時にゴシックになるようにするにはBoldFont属性を用いる。\setmainfont[BoldFont=IPAゴシック]{IPA明朝}勿論、実際に太明朝のフォントを指定することもできる。 Microsoft Office 付属の「HG明朝E」を使う場合は次のようになる。\setmainfont[BoldFont=HG明朝E]{IPA明朝}真に同じファミリのウェイト違いのフォントが入っている場合 (Mac OS X のヒラギノとか)は自動設定が効くのかもしれない。
現状で不足しているもの
これまでに述べた設定で、 日本語の段落を含む文書の組版ができることがわかった。 以下では、今の設定での日本語組版のもつ問題点について解説する。 「XeLaTeX の日本語組版はまともでない」といわれることがあるが、 以下を読めばその理由が推し量れると思う。
文字間の空白の調節
日本語の組版を行う場合には、約物類の前後等で空白の量を調節する必要がある (これは禁則処理とは別の話である)。 その規則については JIS 規格の「JIS X 4051 日本語文書の組版方法」および W3C のテクニカルレポート「日本語組版処理の要件」 (正式版は英語の“Requirements for Japanese Text Layout”) の中にまとめられている。 この中の行組版の空白調節に関する内容だけとっても莫大な分量になるので、 ここでその概略さえ紹介できるものではない。 そのためここでは XeLaTeX が上手く処理できない例を一つだけ挙げるに止める。
例えば、
ああである。(こうである。)
のように〈。〉と〈(〉が並んだ場合、 上述の 2 つの規格で示される規則に従うとその 2 字分で 1.5 全角分(1.5em) を占めることになる。 ところが、右の図で示されるように、 フォントの設定をどうしてもこの求められる値に一致しない。 そもそも、空きの調節量は前後の文字種によって決まるので、 各文字の字幅を調節するだけでは JIS の規則に合わせるのは無理なのである。
ちなみに、pLaTeX で「新ドキュメントクラス」(jsarticle 等)を用いた場合、 JIS の規則通りの結果が得られる。 pTeX には文字種により文字間に空白を自動的に入れる機能があり、 新ドキュメントクラスはこの機能について JIS の空白調節規則に沿った設定値をもったフォントを使っているからである。 よく「XeLaTeX の日本語組版は pLaTeX には及ばない」 と言われている一番大きな要因はこの点にあると思われる。 ただし、これは「現状の XeLaTeX で用意されているもの」についてのことであり、 少なくとも横書きに限っていえば XeTeX 自身は pTeX に劣らない日本語組版能力があると私は考えている。 (無論、その能力が LaTeX で使えなければ一般のユーザには役に立たないことは明白であるが…!)
日本語文書用の文書クラス
現在存在する日本語用の文書クラスは pLaTeX あるいは NTT jLaTeX 用のものである。 日本語文書クラスの定義は当然日本語の処理方法に依存するのでこれらは XeLaTeX では使えない。 (CJK-LaTeX 用の日本語文書クラス等もあるかもしれないが、これでも話は同じである。) 従って、XeLaTeX 用の日本語文書クラスは新たに作る (既存の pLaTeX 用のものをアレンジするのも含め)ことをしなければ存在しない。 残念ながら、そういうものを作って公開している人はまだいないようである。 文書クラスを作る(アレンジする)のには相当の TeX プログラミングの能力が必要となるのだが、 日本の TeXnician の間では XeTeX への関心は低いのかもしれない。
対処法
とはいえ、ここで述べたものは「一般に通用する日本語文書」 のレベルで必要とされるものである。 少なくとも、「日本語を含む段落を出力する」 で挙げた設定をすれば XeLaTeX を使って「日本語文章が紙に書かれたもの」 が作れることは確かである。 もし完全に自分用のプライベートな文書を作るのであれば、 どんな酷い体裁であっても自分が満足できればそれで十分であることは否みようがないし、 他人に公開するものであっても、 「その範囲で」納得できる程度のものであれは問題ないであろう。 現状の XeLaTeX に足りないものというのはそういうレベルのものである。
以下では、「自己満足を得易くする」という観点で、 現状の弱点を補うための方策をいくつか述べる。
[字間空白調節について]
これについては、方向性の違う 2 つの対処法が考えられる。
プロポーショナルフォントを指定してそのままフォントの字幅に従って出力する。 実は、今ある Web ブラウザの日本語表示は (特に等幅フォントを指定されている場合、そもそも等幅の環境である場合を除き) そのような体裁になっていて、この状態は 15 年以上変わっていない。 従って、この組み方には全く違和感を覚えない人も多いと思う。 (さらにいえば、スライド(プレゼンテーション)においてはそれが 「現在主流の組み方」であると強弁することすら可能である。)
等幅フォントを指定して出力する。 この場合、約物が並んだ箇所で明らかに「空きすぎ」に見えるものが出てくる。 「日本語を含む段落を出力する」 で示した myjapanese.sty には
\<という命令が用意されていて、 これを書くと半角分空きを詰めることができる。 (当然 pLaTeX の\<とは全く機能が違う。)\<はその箇所での行分割を禁止するが、*付きの\<*は行分割を許可する。 これを用いて、ああである。\<*(こうである。\<)
とすると、JIS の空白調整規則に従った結果が得られる。 エディタで等幅フォントを使っている場合には、 その上で調整が必要な箇所が容易に視認できるであろう。参考: なお、上述の等幅フォントを使う設定において 「IPA明朝」などの欧文も等幅(半角幅)である フォントを使う場合は、手動でフォントを切り替えない限り、 欧文が等幅で組まれてしまうことに注意。 手動での切替を省くために、 「IPAex明朝」のように最初から「和文等幅+欧文プロポーショナル」 としてデザインされたフォントを使うという手もある。 ただし、XeTeX には
CharacterWidtah=AlternateProportional(OpenType 属性 palt)が既定で有効になるという「癖」があるので、RawFeature=-paltを指定しないと期待する組み方にならないことに注意。\documentclass[a4paper]{article} \usepackage{fontspec} % \rmfamily は Latin Modern Roman \newfontfamily\ipamin{IPA明朝} % これは欧文が半角幅 \newfontfamily\ipaexmin[RawFeature=-palt]{IPAex明朝} % 欧文はプロポーショナル % ↑ palt を無効にする必要あり \begin{document} %「IPA明朝」でそのまま組む \ipamin {\XeLaTeX} で Japanese を typeset する example。\par % 和文「IPA明朝」+ 欧文「Latin Modern Roman」 \ipamin \textrm{\XeLaTeX} で \textrm{Japanese} を \textrm{typeset} する \textrm{example}。\par %「IPAex明朝」で全部組む \ipaexmin {\XeLaTeX} で Japanese を typeset する example。\par \end{document}
[日本語用文書クラスについて]
- geometry(ページレイアウト設定)、 indentfirst(節見出し直後の段落下げの有効化)、setspace(行間を拡げる) 等のパッケージを駆使して少しでも自分の好みのものに合わせる。
- 段落下げの量を示す変数
\parindentを「全角 1 文字分」 に設定する。
以上のような対処法を駆使して自分が納得できる設定を構築して、 それを先に示した設定ファイル myjapanese.sty に記しておくとよいであろう。 以下に、等幅フォント使用+手動調整を行うための設定例 (あくまでも例である)を掲げておく。
% myjapanese.sty
\RequirePackage{xltxtra}
% フォント設定
\setmainfont[Scale=0.92,BoldFont=IPAゴシック]{IPA明朝}
\setsansfont[Scale=0.92]{IPAゴシック}
\setmonofont{IPAゴシック}
\newfontfamily\engrm[Ligatures=TeX]{Times New Roman}
\newfontfamily\engsf[Ligatures=TeX,Scale=0.92]{Arial}
\def\en#1{{\engrm#1}} % 欧文フォントで出力
% 日本語を含む段落を行分割するための設定
\XeTeXlinebreaklocale "ja"
\XeTeXlinebreakskip=0pt plus 1pt minus 0.1pt
\XeTeXlinebreakpenalty=0
% 半角分戻る
\def\<{\@ifstar{\zx@hwback\nobreak}{\zx@hwback\relax}}
\def\zx@hwback#1{\leavevmode#1\hskip-.5em\relax}
% 簡易レイアウト設定
\RequirePackage[scale=0.8]{geometry}
\RequirePackage{indentfirst}
\RequirePackage{setspace}
\setstretch{1.3}
\parindent=1em
% 後は名前定義を適当に
\def\contentsname{目次}
\def\listfigurename{図目次}
\def\listtablename{表目次}
\def\refname{参考文献}
\def\bibname{参考文献}
\def\indexname{索引}
\def\appendixname{付録}
% EOF
$TEXMF/tex/latex/mypackage/ の下に置けばよい。 この後に、必要に応じて mktexlsr を実行する。 「必要かどうかわからない」場合はとりあえず実行しておけばよい。 (必要かもしれないので!)
この設定、およびプロポーショナルフォントを使用する設定の 2 通りで、このページの文書の冒頭の部分を組版した結果を示す。
- myjapanese-example.pdf (等幅フォント)
- myjapanese-p-example.pdf (プロポーショナルフォント)
- myjapanese.zip (ソースファイル一式)
よりよい日本語組版を目指して
これまで述べたように、標準の XeLaTeX(と少しの苦労) で手に入る設定での日本語の組版は難がある。 何より、JIS 規格等に記されているものに近づきたいという観点で見たときに pLaTeX に劣るのが残念である。
前に述べた通り、これは XeTeX の機能不足というより、 むしろ LaTeX のパッケージのレベルでのサポートがまだ足りていないことが理由と考えられる。 そこで、pLaTeX の品質を目標にしてパッケージを作ってみた。
- ZXjatype パッケージ: 日本語段落組版に適した空白調整の実装。 中国語組版のためのパッケージ xeCJK (Sun Wenchang 氏作)を土台にしているので、 これのインストールも必要。
- ZXjafont パッケージ: pLaTeX で一般的に行われるフォント設定を XeLaTeX + fontspec (あるいは ZXjatype の機構も含め) において実現したものを予め用意しておいて、簡単に呼び出せるようにしたもの。
- BXjscls パッケージ: 奥村晴彦氏による pLaTeX2e 新ドキュメントクラス から日本語処理部分を分離することで、 pLaTeX 以外の「日本語が使える LaTeX」にも適用可能にしたもの。 現在、jsarticle に相当する bxjsarticle と「jsbook の report モード」 に相当する bxjsreport が用意されている。
詳しい説明の前に、これらのパッケージを使った文書の例を示すことにする。
% このファイルの文字コードは UTF-8
\documentclass[a4paper]{bxjsarticle} % 文書クラスは bxjsarticle
\usepackage[oldxetex]{zxjatype} % zxjatype パッケージ読込
\usepackage[ipa]{zxjafont} % zxjafont パッケージ読込
% 上の行は下の 3 行と等価
% \setjamainfont{IPA明朝} % \rmfamily の和文部分のファミリ
% \setjasansfont{IPAゴシック} % \sffamily の和文部分のファミリ
% \setjamonofont{IPAゴシック} % \ttfamily の和文部分のファミリ
\usepackage{xltxtra} % \XeTeX ロゴのために必要
% 欧文は既定の LM フォント
\begin{document}
\title{{\XeLaTeX}で日本語する件について}
\author{ZR}
\date{2009 年\ 某月\ 某日} % 和文文字直後に空白を入れる場合は〈\ 〉
\maketitle
\section{{\XeTeX}\>の紹介}
%〈\>〉は和欧文間空白、自動挿入が上手くいかない場合に用いる
\subsection{{\XeTeX}\>とは}
{\XeTeX}\>はJonathan Kew氏による\>{\TeX}\>の拡張で符号空間を
Unicode全体(BMP以外も含む)に拡大したものである。
既存の\>{\TeX}\>のUnicode拡張としてはOmega(Ω)
があるが、{\XeTeX}\>はこれとは別の拡張となっている。
(なお、Omegaの後継にあたるUnicode拡張\>{\TeX}\>が
{Lua\TeX}\>である。)
{\XeTeX}\>のもう一つの大きな特徴は、現在の標準的なフォント技術を
内部に取り込んでいることである。
%%……(中略)……
\end{document}
上掲の出力では、 ページレイアウトを示すために紙面の余白部分を合わせた画像として掲載した。 以下に PDF 文書へのリンクを挙げる。
- zxjatype-sample.pdf (出力結果の PDF 文書)
- zxjatype-sample.zip (ソースファイル) コンパイルには BXjscls、ZXjatype、xeCJK の各パッケージが必要である。
ZXjatype パッケージバンドル
中国語組版のためのパッケージ xeCJK を土台として、 XeLaTeX を日本語組版により適応させるためのパッケージ。 詳しくは「ZXjatype パッケージバンドル」のページを参照。
ダウンロード
- zr-tex8r/ZXjatype(GitHub)
0.2 版[2009/10/25]にはバグがあって使い物になりませんでした。 申し訳ありませんが、更新をお願いします。 - 前提パッケージ:xeCJK v2.3.5
xecjk_2.3.5.zip ダウンロード(246KB)
[2009/10/19]
このパッケージのライセンスは LPPL(v1.3以降)である。
ZXjafont パッケージバンドル
pLaTeX で一般的に行われているフォント設定 (例えば「IPAフォント」「ヒラギノフォント」等) を XeLaTeX + fontspec の環境で簡単に(パッケージ読込だけで) 実現できるようにする。 ZXjatype の機構とも連携する。 詳しくは「ZXjafont パッケージバンドル」のページを参照。
ダウンロード
- zr-tex8r/ZXjafont(GitHub)
BXjscls パッケージバンドル
横書き日本語用の文書クラスとして定評のある奥村晴彦氏の pLaTeX2e 新ドキュメントクラス (以下これを js クラスと呼ぶ) を pLaTeX 以外の「日本語が処理できる」LaTeX で使えるようにすることを目標として処理系依存となる日本語処理部分を取り除いたものである。 処理系依存の部分を別に「連携コード」 として用意することで pLaTeX + js クラスと同じ役割を果たす仕組みになっている。 XeLaTeX + zxjatype パッケージについては既に連携機構が zxjatype に含まれているので、単に両者を読み込むだけで動作する。 詳しくは「BXjscls パッケージバンドル」のページを参照。
ダウンロード
- zr-tex8r/BXjscls(GitHub)
対応環境
- TeX 処理系: LaTeX2e、UTF-8 で書かれた日本語が直接処理できるもの
- 前提パッケージ: geometry 4.2 版以降
その他のパッケージ
- OTF パッケージの
\CID命令 (Adobe-Japan1 字形の出力)を使いたい → ZXotf パッケージ - GT フォントを使いたい → ZXgtfont パッケージ
- いや、俺は ascmac や jsverb(okuverb) が使いたいんだよ → BXptool パッケージ