TeX 備忘録

まとめるのが面倒なものを適当に書いておく場所。

目次二段組み(2014/07/09)

tbook.cls を使うと、twocolumn を設定していても目次は一段になる。目次が縦に間延びして見栄えがよろしくないので二段組みにする。

対処法

プリアンプルに以下のコードを書く。

\makeatletter
\renewcommand{\tableofcontents}{%
  \chapter*{\contentsname
    \@mkboth{\contentsname}{\contentsname}%
  }\@starttoc{toc}%
}
\makeatother

原因

もとの tbook での tableofcontents の定義は以下のようなもの。

\newcommand{\tableofcontents}{%
  \if@twocolumn\@restonecoltrue\onecolumn
  \else\@restonecolfalse\fi
  \chapter*{\contentsname
    \@mkboth{\contentsname}{\contentsname}%
  }\@starttoc{toc}%
  \if@restonecol\twocolumn\fi
}

何故かは知らないがわざわざ一段に直す設定になっている。この処理を除いて再定義するのが上のコード。

ovp の修正(2015/01/02)

齋藤さんのサイトにある和文VFの作り方にある makeovp1.pl などのスクリプトで生成した ovp ファイルに新しい(ここでは TeXLive2014 附属のもの)ovp2ovf をかけると "Char (987e) too big for TFM (max ff); use OFM file" といったエラーが出る。

対処法

生成された ovp ファイルをテキストエディタで開き、2行目の

(DESIGNSIZE R 10.000000)

の行を

(OFMLEVEL D 0)(DESIGNSIZE R 10.000000)

に書き換える。

原因

新しいバージョンの ovp2ofm はこの記述がないと受け付けないらしい。それは2010年頃には分かっていて、OTFパッケージ附属の mkjvf などはこれに対応するよう修正されていたが、この「和文VFの作り方」のページは2003年以降更新されていないために追いついていなかったと言うだけの話。

なお、makeovp~.pl の機能は mkjvf に取り込まれているので、あえて古いものを使わずに mkjvf を使うのが根本的な解決。mkjvf の使い方は詳しい説明がないが、makejvf に準ずるために、 ~\texmf-dist\doc\ptex\jvf\README.txt にある makejvf の説明書を読むと参考になるかもしれない。あとはOTFパッケージの makeotf を覗いてみれば何をするスクリプトなのかだいたい分かる。

附記

そもそもかな混植がしたくて試行錯誤をしていたのでその過程で分かったことも書いておく。

だいたいの手法としては PARALLEL ACT さんのヒラギノ明朝W2 と游築五号仮名W2 混植方法のものが結局正解みたい。そこで何をしているのかということはたちゃなさんのMacPorts の pTeX における和文多書体環境の整えかたを読むと分かってくる。もっと基礎からまとめてくださっているのが tex-ut-tex さんのpLaTeX2e における和文フォントの扱いと多書体化の話

なお、mkjvf を使う時には元になる tfm を一つ用意する必要がある。普通は jis.tfm と jis-v.tfm を名前を変えて使えと書いてあるが、この場合、tbook.cls を使っていると、!や?の後ろに空白が空いてくれない(この機能は jsclasses で追加されたものであるため)。OTFパッケージを使った時と同じように空白をあけるには、OTFパッケージ附属の base-h.pl と base-v.pl に ppltotf をかけるとできる tfm ファイルを使えば良い。但し、この場合はたちゃなさんのページに書いてあるように、DeclareFontShape するときに 0.962216 倍しないといけない。( jis.tfm 系を使う時は 1 倍でよい)

しかし今のところ私は、OTFパッケージ相当のことを普通に自分の好きな書体で、という所まではいけていない(PARALLEL ACT さんの方法を精確にやればいいのかもしれないが、それをしていないため)。ふりがなや縦書き用仮名、また \UTF や \CID を使った時に使う書体は、どうもまた別のものを参照しているらしく、うまくいかない。そもそもOTFパッケージはヒラギノを使うために作られたパッケージであるわけで、それを流用しているから面倒なことになるという根本的な問題がある。本当ならば使う書体ごとにOTFパッケージのようなものを準備するようにするべきなように思われる(欧文フォントはたぶんそうなっている。というより書体ごとに幅が違うのでそうしなければならない)。それを自動生成するスクリプトなりがあれば良いのだけれども。

誤りの指摘や意見等、何かあればご連絡ください。

戻る