縦書き環境における BibLaTeX の使用について

Re: 縦書き環境における BibLaTeX の使用について

- Z. R. の投稿
返信数: 0

“TeX(エンジン)が解る”人向けに解説しておきます。

  • pLaTeX 系の縦組クラスは次のフックを登録する。(これが begin-document フックの先頭になる。)
    \AtBeginDocument{\tate\message{《縦組モード》}\adjustbaseline}
  • biblatex パッケージは(etoolbox が提供する)“end-preamble フック”に \addtocontents を登録する。
    \AtEndPreamble{\addtocontents{toc}{...}...}
    そして、\addtocontents 命令は遅延(非 \immediate\write を行う。
  • end-preamble フックは begin-document フックより前に実行されるので、結局 \begin{document} のところでは、
    \write1{...}\tate...
    というコードが実行される。
  • 遅延 \write は whatsit ノードになる。そのため、「現在ページに相当する“垂直ボックス”が空でない」と見做され、「ボックスの途中での書字方向の変更はできない」のと同じ理由でエラー(! Use `\tate' at top of list.)になる。
  • ところが、この「「現在ページに相当する“垂直ボックス”」(外部垂直リスト)はやや特殊で、“ページビルダー”を発動させると、その直後では“ボックスが空である”と見做されるようになる。(参照:pTeX における文章中での組方向の変更
  • 従って、
    \AtEndPreamble{\par}
    を実行すると、\par\write\tate の間に入り、この \par がページビルダーを発動させて“ボックスを空にする”ので、無事に \tate が実行できる。

……ということだと推測しています。ただ、外部垂直リストの話はあまりよく解っていないので、間違っているかも知れません。(TeX 難しい……)