upLaTeX でアクセント付きのラテン文字などがうまく出力されないときの対処法

概要
upLaTeX でアクセント付きのラテン文字などがうまく出力されない場合は、プリアンブルで pxcjkcat パッケージを読みこみ、そのオプションで prefernoncjk を指定すればよい。

問題点

upLaTeX を使う場合、ソースファイルにアクセント付きのラテン文字を直接記述し、それを出力することができる。例えば、\'{e} と入力せずに、直接ソースファイルに é と入力することで、“é” が出力される。

ただし、特に設定しないかぎり、アクセント付きのラテン文字は、欧文として扱われず、「その他の和文」として扱われてしまう。このことにより、出力がおかしくなることがある。例えば、ソースファイルに「彼は一種のéliteだ。」と入力すると、以下のように出力される。

upLaTeX のデフォルトでは、“é”が和文扱いされてしまい、出力がおかしくなる。
upLaTeX のデフォルトでは、“é”が和文扱いされてしまい、出力がおかしくなる。

ここで、“é”と“lite”の間に余計なスペースが入ってしまっている。“élite” は1つの単語であるから、途中で余計なスペースが入ってほしくないところだ。

なぜ余計なスペースが入ってしまったのだろうか。和文文字と欧文文字の間にスペースが適宜入れられるせいだ。upLaTeX では、特に設定しないかぎり、アクセント付きのラテン文字は「その他の和文」として扱われる。このことにより、“é” は和文として扱われ、直後の欧文文字 “l” との間にスペースが入れられてしまうのだ。

解決法

こうしたことが起きるのを防ぐには、プリアンブルで pxcjkcat パッケージを読みこみ、そのオプションで prefernoncjk を指定すればよい。要するに \usepackage[prefernoncjk]{pxcjkcat} と書く。

こう指定すれば、漢字・仮名・ハングルなどを除いたすべての文字が欧文扱いされる。これにより、アクセント付きのラテン文字なども欧文扱いに変わる。

このようにして \usepackage[prefernoncjk]{pxcjkcat} をプリアンブルで記述しておけば、先ほど挙げた「彼は一種のéliteだ。」という例も全く問題なく表示されるようになる。

プリアンブルで適切な設定を行うと、“é”が欧文扱いされる。
プリアンブルで適切な設定を行うと、“é”が欧文扱いされる。

今挙げた例は、アクセント付きのラテン文字の話であるが、Æ などの合字や引用符(“)についても同様に問題を解決できる。

例えば、以下のようにソースファイルに記述したとする。

\documentclass[uplatex]{jsarticle}
\usepackage[utf8]{inputenc} % ソースファイルのエンコーディングがUTF8であることを示す
\usepackage[prefernoncjk]{pxcjkcat} % なるべく欧文扱いにする

\begin{document}
彼は一種のéliteだ。
Æsopの物語を“naïve”という言葉で表現したのだから。
\end{document}

これは以下のように出力される。

プリアンブルで適切な設定を行うと、Æsop などもうまく表示される。また、引用符は欧文用のものになっている。
プリアンブルで適切な設定を行うと、Æsop などもうまく表示される。また、引用符は欧文用のものになっている。

なお、\usepackage[prefernoncjk]{pxcjkcat} という記述がない場合は、以下のように出力される。

プリアンブルで特に設定せずに、デフォルトのままで出力すると、Æsop など、おかしくなることろが出てくる。引用符は和文用のものになっている。
プリアンブルで特に設定せずに、デフォルトのままで出力すると、Æsop など、おかしくなることろが出てくる。引用符は和文用のものになっている。

pxcjkcat パッケージの用法や upLaTeX での文字コードの扱いについてもっと詳しく知りたい人は、以下を参照されたい。

補:幾何学的な図形や OTF パッケージの記号がうまくでない場合の対処法

pxcjkcat パッケージのオプションで prefernoncjk を指定すると、幾何学的な図形(■ / ○ / ▼)などがうまく出力できなくなることがある。これは、 prefernoncjk を指定すると、幾何学的な図形も欧文扱いされるからだ。

こうなるのを防ぐためには、幾何学的な図形を「その他の和文」扱いすればよい。

具体的には、プリアンブルに \cjkcategory{sym18}{cjk} と指定すればよい [2] \cjkcategory は、pxcjkcat パッケージで文字の扱いを変えるために用いられる命令である。ここでは、幾何学的な図形 (U+25A0 – U+25FF) の範囲を指す sym18 に明示的に cjk と指定している。

例えば、以下のようにソースファイルに記述したとする。

\documentclass[uplatex]{jsarticle}
\usepackage[utf8]{inputenc} % ソースファイルのエンコーディングがUTF8であることを示す
\usepackage[prefernoncjk]{pxcjkcat} % なるべく欧文扱いにする
\cjkcategory{sym18}{cjk} % 幾何学的な図形を「その他の和文」扱いにする

\begin{document}
フランス語で正三角形(▲)は、
triangle équilatéral と言います。
\end{document}

これは、以下のように出力される。

適切にプリアンブルで設定することにより、▲という図形も、アクセント付きのラテン文字もうまく出力できている。
適切にプリアンブルで設定することにより、▲という図形も、アクセント付きのラテン文字もうまく出力できている。

また、pxcjkcat パッケージのオプションで prefernoncjk を指定すると、OTF パッケージの記号がうまく出ないことがある。例えば、丸囲みの「問」(㉄)を出力する場合、OTF パッケージでは \ajLig{○問} と記述するのだが、これがうまく出ないことがある。 なぜうまく出ないのかと言うと、\ajLig{○問} の中に幾何学的な図形である ○ が含まれているためである。

これについても、プリアンブルに \cjkcategory{sym18}{cjk} と指定しておけば、うまく出力される。

このほか、pxcjkcat パッケージのオプションで prefernoncjk を指定している場合、♨(温泉を示す記号)などもうまく出力できないことがある。この場合、プリアンブルで、\cjkcategory{sym19}{cjk} を指定すればうまく出力できる [3]

脚注
  1. 奥村晴彦・黒木裕介.(2017). 『[改訂第7版]LaTeX2ε美文書作成入門』東京:技術評論社. []
  2. 実は、プリアンブルに \cjkcategory{sym18}{cjk} と指定しなくても、本文中で \withcjktokenforced という命令を個用いれば、その部分は欧文扱いされなくなる。例えば、\withcjktokenforced{▲} とすれば、▲ が「その他の和文」扱いで出力される。ただ、こうした幾何学的な図形が出てくるたびに \withcjktokenforced を毎回指定しないといけない。もし、何度も使うようなら、プリアンブルであらかじめ指定しておいた方が楽である。 []
  3. sym19 は Unicode での「その他の記号」(Miscellaneous Symbols, U+2600 – U+26FF) の範囲を指す。 []