マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

美文書付録Iについて思うことをグダグダ書き連ねるシリーズ (7)

3 節、第 2 小節
(368ページ)
欧文・和文混在文書で日本語の目次タイトルや……

Babel では、基底言語が変更された時(初回に設定する場合も含む)に、キャプション文字列を言語定義ファイルに指定されたものに変更するという処理を行う。これは Babel の重要な機能の一つであるが、「基底言語が日本語」である文書を「日本語用文書クラス(jsarticle 等)」を用いて作成する場合には邪魔になってしまう(キャプションは日本語のままでいいのに別の言語に変わってしまう)。これを緩和するのが japanese パッケージであるが、注意すべきことがある。japanese パッケージが行っている処理も、結局は japanese の言語定義にある文字列にキャプション文字列を置き換えることである。だから、結局はキャプション文字列は変わってしまっている。すなわち、「キャプション文字列を変えてはいけない」場合(文書クラスが「レイアウト規定」として機能する場合)には Babel + japanese パッケージでは対処できない。

例を挙げておく。jsbook クラスでは、thebibliography の見出し(\bibname ((book 系なので \refname でなく \bibname である。)))は「参考文献」、\listoftables の見出し(\listtablename)は「表目次」となっている。ところが、

\documentclass[a4paper]{jsbook}
\usepackage[ngerman,japanese]{babel}

のように Babel を読み込むと、\bibname は「関連図書」、\listtablename は「表 目 次」(欧文空白が入る)に変わる。

もちろんこれは japanese パッケージの設計の問題ではなく、例えば「英語キャプションの文書クラス」と「Babel の english オプション」の組み合わせでも同じ問題が起こる。結局は Babel に「キャプションを不用意に変えない」という選択肢がないのが問題なのである。

もし「キャプションの文字列を変えてはいけない」状況でどうしても Babel を使いたい場合は、pxbabel パッケージ(PXbase バンドル)を使うという手段がある。*1

\documentclass[a4paper]{jsbook}
\usepackage[ngerman]{babel}
\usepackage[main=japanese]{pxbabel}
コマンドプロンプト(端末)で……

何故 Windows が前提になる?(それ自体はいいと思うが明記しないと不自然。)ついでに、cd コマンドには /D オプションを付けた方がよい気がする。((まさか C:\work というディレクトリから操作を始めることを要請しているのではないだろう。))

3 節、第 3 小節
(369ページ)
フォーマットファイル作成でエラーが出る場合

あーもうそんな世界はいやだー

ちなみに、hyph-utf8 のファイル群ではこの類のエラーは起こらない。何故かというと:元のパッケージの側で既に対処が行われているから。全部のエンジンで共通のパターンソースファイルを共有することが目的の hyph-utf8 プロジェクトであるが、結局 pTeX 系は別扱いをせざるを得なかったのである。

updmap――map ファイルの更新

この小々節の内容は付録 C の 5 節に既に書かれていて、ここではそれへの参照で十分な気がする。*2

(370ページ)
\usepackage[10pt]{type1ec}

最近の環境では type1ec パッケージの 10pt オプションは不要なことがほとんどである。詳細は後日に述べたい。

*1:何故これでいいのか解り難いが、pxbabel は「言語定義のない(使わない)言語」(この場合 japanese)が基底言語に指定された場合はキャプション文字列の一切の変更を抑止するという動作をする。

*2:「まえがき」を読めば判るように、この「付録 I」を書いているのは奥村先生ではない。こういう「連携不足」が生じているのもそのためだと思う。