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

 コマンドで入力できることは分かったんですが、十蘭のフランス語だのポーの暗号だのをいちいちコマンドで入れてたらイライラしてきます。可読性も下がるし。
 なので本文には手を加えずに、設定をいじることでアクセント文字や特殊記号も欧文として横倒しさせてしまいましょう。
(ちなみに青空文庫から取ってきた『ノンシャラン道中記』はアクセント分解という技法を使っていますが、ここでは分かりやすくするためにあらかじめ普通のアクセントつきアルファベットに変換してあります)

 具体的にはTeX界のスーパースター・ZRさんの作成されたpx­cjk­catパッケージを使います。この人がいなければ日本語TeX組版は今よりもっと悲惨なものになっていただろうというすごいお方です。当サイトでやってることの70%くらいはZRさんのパッケージによっています。

 px­cjk­catは、それぞれの文字が属するグループを変更することのできるパッケージです。今éは日本語の文字と同じグループに入ってしまっているので、英語のグループの方に入れたいと思います。

 プリアンブルでパッケージを読み込みます。

\usepackage[utf8]{inputenc}
\usepackage[<モード>]{pxcjkcat}

 inputencパッケージは原稿中にベタ書きするために必要なものです。詳しい説明はこちらを参照してください。
  UTF-8 で欧文文字を入力する ~inputenc パッケージ~ - Qiita

 次の行でpxcjkcatを呼び出しながらモードを指定します。説明書によると指定できるモードは4つです。

  • forcecjk:upLaTeXのデフォルトと同じ。英語の文字以外は全て全角の和文扱い。
  • prefercjk:Adobeの定めるCJK(中日韓)が包括する部分を和文扱いにする。上とさほど変わらない。
  • prefercjkvar:上に加え、ギリシャ文字・キリル文字が欧文扱いになる。
  • prefernoncjk:漢字・かななど最低限のCJK文字のみを和文扱いにし、それ以外は全て欧文扱い。

 このうち実質的に使うことになるのは後の2つです。どちらを選ぶかは本文の内容によるんですが、まずは一般的と思われる方から見ていきましょう。

横倒ししたい字が少なめな時

 使う外国語が仏独西伊あたりに限られ、éやñや£といった「よくある」字のみを横倒しにしたい場合はprefercjkvarを選びます。
 それだけではほとんどの字が和文扱いになるデフォルトとさして変わらないので、パッケージの機能である\cjkcategory{<ブロック>,...}{<カテゴリ>}命令で欧文扱いにしたいグループを追加してやります。

\usepackage[utf8]{inputenc}
\usepackage[prefercjkvar]{pxcjkcat}
\cjkcategory{latn1}{noncjk}

 éや£はUnicodeの「Latin-1 Supplement」というブロックに属しています。なので説明書を検索して、対応する略語(=ブロックID)であるlatn1を最初のカッコに入れてやります。次のカッコではそのブロックを何扱いにするかを指定します。ここでは和文から欧文扱いにしたいのでnoncjkを入れています。指定できるのは次の5つです。

  • noncjk: 欧文扱い
  • kanji [または han]: 漢字扱い
  • kana: 仮名扱い
  • cjk: 「その他の和文」扱い
  • hangul: ハングル扱い

 ちなみにこういったコマンドの後につく{波括弧}引数といい、前から順に第1引数、第2引数と数えます。オプションと似たような感じで、コマンドに与える指示の詳細を入れるところです。今の場合第1引数は取り扱いたいブロック(コンマで区切って複数指定可)を、第2引数はそれを何扱いするかを表しています。

 これで見事にアクサンテギュeは他のアルファベット同様横向きにできましたが、筆者はこんな副作用が出ました。

×だけが半角に

 これは×と÷がLatin-1 Supplementに入ってしまっているので欧文扱いになった一方で、全角の+や=は全角ゆえにもともと和文扱いになっているためです。
 別に違和感がなければこのままで大丈夫なんですが、気持ち悪いという時はとりあえず+-=を全部半角で打ってしまうという手があります。
 どうしても×と÷を全角に寄せたい場合、残念ながら同じブロックに入っている記号を別々に指定することはできないので、局所的に手を打つしかありません。\cjkcategory\cjkcategorymodeを本文中に直接書き込んで、部分的に扱いを変更します。

\usepackage[utf8]{inputenc}
\usepackage[prefercjkvar]{pxcjkcat}
\cjkcategory{latn1}{noncjk}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ここでタヌは、消炭《けしずみ》のかけらを拾って歩道の上へ書きつけた。
\cjkcategory{latn1}{cjk}  %ここでLatin-1を和文扱いにして×と÷を全角に寄せる
400×2=800 800+6=806 806+40=846 846+400=1246
\cjkcategory{latn1}{noncjk}  %元に戻す
︙
Quand nous étions deux《おまえとふたりでいたときにゃ》 という小唄を口笛で吹きながら、…  %Latin-1が欧文扱いに戻っているのでéが半角横倒しで表示される
算術記号を統一

右が全角、左が半角に寄せたもの

 十蘭のようにあちこちに出てくるフランス語に比べれば他の記号は大して出てこない、という場合ならこの手が使えると思います。
 または『黄金虫』のように一箇所だけに半角記号が固まって出てくる場合も局所的な指定でうまくいきます。

\usepackage[utf8]{inputenc}
\usepackage[prefercjkvar]{pxcjkcat}  %基本的に和文扱い
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
…
髑髏と山羊とのあいだに、赤い色で、次のような記号が乱雑に出ている。――
\cjkcategorymode{prefernoncjk} %ここでモードを切り替え

53‡‡†305))6*;4826)4‡.)4‡);806*;48†8¶60))85;1‡(;:‡*8†83(88)5*†;46(;88*96*?;8)*‡(;485);5*†2:*‡(;4956*2(5*―4)8¶8*;4069285);)6†8)4‡‡;1(‡9;48081;8:8‡1;48†85;4)485†528806*81(‡9;48;(88;4(‡?34;48)4‡;161;:188;‡?;

\cjkcategorymode{prefercjkvar} %元に戻す
「しかし」と私は紙片を彼に返しながら言った。
…

(ちなみにこれはこれで一切のスペースがないので、暗号文全体が「ひとつの単語」と認識されてページの外にはみ出してしまいます。その問題は後回しにしてここでは詳述しません)

 ここまででだいたいのケースには対応できたと思いますが、中にはもっと珍しいőだのāだののような字が出てくる言語を使いたいという剛の者や(ハンガリー語やラトビア語だ)、ソースコード・暗号・英詩といった半角記号の列があちこちに出てくるミステリを書いている人など、もっと欧文扱いする範囲を広くしたい層もいるかもしれません。
 この先に進むにはそもそも自分の使いたい字がどこに属するのかなどの、Unicodeについての知識が若干必要になります。次項では改めて文字コードについて解説しますので、外国語使いじゃなくても文字が好きな人は覚えていってください。

comments powered by Disqus