OTFパッケージ

 OTFパッケージとは、もともとはOpenTypeフォントを扱うためのパッケージだそうですが、日本語あるいはCJKの文字を美しく組むための機能がいろいろ揃っていて、もはや一種のユーティリティのようになっています。(詳しくはリンク先参照)
 文体や文章の中身によっては全然必要ない人もいるとは思うんですが、挙動を揃えるためにもここで読み込んでおいてください。以下のように書きます。

\documentclass[uplatex]{utbook}  %1行目にオプション追加
%%%%%%%%%%%%%%%%
\usepackage{otf}

 必ず\usepackage{pxcjkcat}の前に書いてください! 後に書いてしまうとエラーが出ます。
 それから今まで言っていませんでしたが、最初のドキュメントクラス指定の時にもオプションを追加できます。というかレイアウトに入ったらここにオプションを入れまくります。uplatex指定はOTFパッケージのオプションで入れてもいいんですが、1行目に入れた方が文書全体への効力を持つのでここで指定しておきます(入れないとエラーになる)。これでOTFの設定とコマンド群が使えるようになりました。
 IPAフォントでダブルミニュートを正しく出力するには、本文中で以下のように入力すればできます。

〝これがダブルミニュートです\CID{7609}

 いちいちコマンドを書きたくない場合は、プリアンブルに\newcommand{\〟}{\CID{7609}}を追加しておくと、文中では\〟と打つだけでOKになります。
 字がないのは受け側の方だけなのでそちらだけコマンドにしましたが、表記を揃えたい場合は起こし側を\CID{7608}で置き換えて追加してください。

 さらにバックスラッシュすら書きたくないという人のために、zrjapunct1に裏技を仕込んでおきました。本文の引用符にダブルミニュート〝〟ではなくダブルプライム‶″を使ってください。組版結果でダブルミニュートとして出力されます。
(ここまでやっちゃうと逆にあまり見栄えが良くない上他の人との互換性がなくなるのでアレなんですが、そこは自分のポリシーと相談して決めてください)

よりみち

 上でプリアンブルに追加したのも、短いですがれっきとしたLaTeXマクロです。ちょうどいいのでここでさわりだけ解説しちゃいます。
 newcommandというのは文字通り新しいコマンドを作る命令で、\newcommand{コマンド名}{実質的な中身}という形式を取ります。文中にコマンド名が出てきたら、それを第2引数の中身で置き替えるというただそれだけのことです。
 この場合実際に右ダブルミニュートを出力する命令は\CID{7609}です。がいちいち番号を書くのが面倒です。そこで\〟と、ダブルミニュートの前にバックスラッシュをつけるだけで後に自動的に置換されるようにしたいので、定義が\newcommand{\〟}{\CID{7609}}ということになります。
 マクロでできることはたくさんあるというか、LaTeX自体全てマクロでできているようなものなので、興味の湧いた方は以下の記事等で勉強してみてください。
  完全攻略! LaTeX のマクロ定義 - Qiita   LaTeX入門/LaTeXマクロの作成 - TeX Wiki

続き

 CIDというのはUnicodeとはまた別の、Adobe社が定めた文字コードです。現在Unicodeでは一緒くたにされてしまっている異体字なども区別がなされて、ものすごい量の漢字を持っています。このCID番号を引数に指定することで該当の字を呼び出すことができます。
 本来OTFパッケージというのはそういう普通では出てこない、いわゆる外字を扱うためのパッケージのようです。upLaTeXだとUnicodeの字は普通に直書きで問題なく出力できますが、そこにすら収まらない𠮷野家のよしの字とかを書けるようになります。
 ただ筆者の環境だとこういう字(BMP外といいます)がちゃんと出力できなかったので、解決するまで宿題とさせてください。

 ちなみにOTFパッケージは縦組みの時はデフォルトで“全角ダブルクォート”を〝ダブルミニュート〟に変換してくれます(zrjapunctを入れた場合は変換されません)。
 普段横書きでダブルクォートを使っている人にとっては、文章に手を加えずに組版の時だけ縦組みに揃えてくれるので大変便利な機能です、ただしIPAフォントを使わなければ。
 IPA明朝を使う場合は普通にダブルミニュートを書くのと全く同じことになり、つまりはまた受け側が欠けます。この機能を抑制するにはオプションで[noreplace]を指定すればいいんですが、これを使うべきか使わないべきかは次の問題によります。なのでこだわりがない限りzrjapunctパッケージを使い、上記のコマンドでダブルミニュートを書くのが吉です。

 次の問題というのはOTFの重篤な副作用?でもないんですが、もうひとつ変わってしまう要素である、全角の後のアキ(グルー)です。
 OTFは全角の感嘆符と疑問符の後に自動で全角1文字分のグルーを入れてくれます。つまり自前で!と?の後に全角スペースを入れている場合ダブって2文字分空いてしまいます。
 また縦中横で入れた!?や二重感嘆符記号の後には空きを入れてくれないので、そこは自力で揃える必要があります。次項ではそのあたりの制御を行います。

comments powered by Disqus