アクセントと特殊記号 (3)

 さて話を戻して、pxcjkcatパッケージの使い方の続きです。

横倒ししたい字が死ぬほど出てくるとき

 いちいち部分指定なんかしてられない!というぐらい半角にしたい文字が多い時には、プリアンブルで呼び出す時にprefernoncjkモードを指定します。最低限のCJK文字だけ和文扱いであとは全部欧文扱いにしてくれるモードです。

 ところがこの時本文に♡や☆、●▲■といった、普通横文字の文脈では出てこない記号が入っているとエラーが出ます。

Package inputenc Error: Unicode char ♡ (U+2661)
(inputenc)                not set up for use with LaTeX.

See the inputenc package documentation for explanation.
Type  H <return>  for immediate help.
...                                              

l.20 ♡

 欧文にない記号まで無理やり欧文扱いしようとしたためこうなります。なので今度は和文扱いに戻したい記号のブロックを\cjkcategoryで指定してやります。
 ●▲■のような幾何学的な図形は「Geometric Shapes」、♡や♪のようなその他の記号は「Miscellaneous Symbols」に含まれています。それぞれブロックIDはsym18sym19なのでプリアンブルは次のようになります。

\usepackage[utf8]{inputenc}
\usepackage[prefernoncjk]{pxcjkcat}
\cjkcategory{sym18,sym19}{cjk}

 これでほとんどの場合は大丈夫だと思うんですが、人によってはまだエラーが出るでしょう。その時はエラー文が示した字を前項に従ってUniViewで該当ブロックを調べ、pxcjkcatの説明書=READMEをページ内検索して対応するブロックIDを加えていってください。

(17/11/24修正)
 またネックになるのが、「General Punctuation」(sym04)や「Letterlike Symbols」(sym08)などのセクションです。一文字の二重感嘆符・疑問符記号が原稿に入っているとエラーになりますし、エラーが出ずに通ったとしても、このあたりのブロックに属する三点リーダー……や度数などの表示が狂います。
 思わぬエラーを防ぐためには可能な限り和文の範囲を増やしておくのが安全です。ご自分の文体と照らし合わせて、どうしても欧文扱いしたい字とそうでもない字を見極めてみてください。

ラスボス

 そしてここまでやってもなお横書きできないのがギリシャ文字とキリル文字です。和文扱いだと縦になるし欧文扱いだとエラーになります(´・ω・`)

縦組みになったキリル文字

なんか変

エラーになったキリル文字

 結論だけ先に申しますと、以下のように書けば横倒しできます。どうしても文中にコマンドが必要になります。

\usepackage[LGR,T2A,T1]{fontenc}  %一番最初に書いたおまじないをこのように変える
\usepackage{textcomp}
\usepackage[utf8]{inputenc}
\usepackage[prefernoncjk]{pxcjkcat}
\cjkcategory{sym18,sym19}{cjk}
\usepackage[greek,russian,english,japanese]{babel}  %使用言語をオプションで列挙し、最後はメインの日本語にする
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
カラマーゾフの兄弟(原題:\foreignlanguage{russian}{Братья Карамазовы})において、

「\foreignlanguage{greek}{Μοιρα}」というアルバムを

m9(\textasciicircum\foreignlanguage{russian}{Д}\textasciicircum)
横倒し成功

 か、かっこ悪い……特に最後、エスケープと合わさって何書いてあるかわかんねえよ。
 しかしこれ以外にやりようがありません。\foreignlanguage{<言語>}{<内容>}コマンドの第2引数にはその言語の文字のみ入れられて、普通のアルファベットや日本語と混在させてはいけないんです。
 このコマンドは上で呼び出しているBabelパッケージによって使えるようになった命令です。バベルという名の通り、文書を多言語対応にしてくれる強力なパッケージなんですが、強力ゆえに何がどこまでできるのか筆者がまだ理解できてません。とりあえずこう使えば言語を切り替えられるらしいよ、とだけ言っておきますorz

 ここの挙動について詳しくはブログで説明していますので、仕組みを知りたいかたは読んでみてください。特にフォントエンコーディングという重要かつややこしい概念が出てくるので、今は読まなくても頭の片隅に置いておくといざという時役に立つかもしれません。

 なおヨーロッパ語以外の言語、例えばアラビア語などは筆者の範疇を超えてしまいます。申し訳ありませんがご自身で調べてください。

参考

comments powered by Disqus