以前正常だった、目次がおかしくなりました

以前正常だった、目次がおかしくなりました

- mr2h の投稿
返信数: 2
2年ほど前に、自分で作成した縦書書籍で、正常に動作していたのですが、本日再コンパイルしたところ、目次の部分が正常に表示されなくなりました。 環境は、 Win10 Pro最新版、texlive2022最新update済み、原稿tex file のプリアンブルに書いてあるような設定したものです。 原稿tex file を切り取った最初の部分を添付します。多分わかっている方からみたら、ごく初歩的な問題だろうと、思いますが、私にとっては原因と対策が不明で困った問題です。help me! 目次の『杜甫私記』はよいのですが、次の『自序』のまえに余計なsectionが表示され、ページ数との間に点々・・・・・が表示されません。
mr2h への返信

Re: 以前正常だった、目次がおかしくなりました

- はやて (h20y6m) の投稿

「目次のページ数表示を小さくするマクロ」の以下の部分が問題です。

  }{\string\@writefile{#1}{\protect\contentsline{#2}{#3}{\the\@temptokena}}}%

LaTeX 2021-11-15 から \contentsline の引数が4つに変更れたため、引数が足りず異常な動作を起こしています。

とりあえず

  }{\string\@writefile{#1}{\protect\contentsline{#2}{#3}{\the\@temptokena}{}}}%

のように4つ目の引数として {} を追加してやれば動くと思います。(toc が変わるので2回コンパイルが必要)

ただし、最新の jlreq では 縦組みのときのみ 以下のように再定義している(横組みのときは再定義しない)ようです。

\def\addcontentsline#1#2#3{%
  \addtocontents{#1}{\protect\contentsline{#2}{#3}{\tatechuyoko*{\thepage}}{}%
                     \protected@file@percent}}

これに追従するのであれば

\def\addcontentsline#1#2#3{%
  \addtocontents{#1}{\protect\contentsline{#2}{#3}{\footnotesize\tatechuyoko*{\thepage}}{}%
                     \protected@file@percent}}

のようにしてもよいかもしれません。

以前の投稿で「良い方法ではない」と書いたのはこういう LaTeX や jlreq 等の変更の度に手直しが必要になることがあるからというのも一つの理由です……)

はやて (h20y6m) への返信

Re: 以前正常だった、目次がおかしくなりました

- mr2h の投稿
はやて様
早速のご教示、誠に有り難うございました。この例文で試しましたら、正常に表示されました。縦書きの場合のページ表示は、本来は漢数字が適切なのでしょうね。アラビア数字で、\tatechuyoko*{\thepage}を使うと、数字の横幅が、可変となり、ページ数が3桁4桁となる大ボリュームの書籍になると、目次の行間隔も可変となり、見苦しくなってしまいます。そこで、たとえば最大で3桁のページ数なら、1ページを001、25ページなら025というように表示すればよさそうですが、見た目がスマートではありません。tex の特徴である文書の論理的構造を追求することと、日本語縦組みを「美しく」表示することの整合性は、とても難しいとおもいます。特に小生のような八十歳の高齢者は頭脳が硬直し、難しいマクロなど書けるわけもありませんから。今後も初歩的な質問をさせていただくこともあろうかとおもいますが、どうかよろしくお願いいたします。