Quartoのxelatexで余白の設定

geometryパッケージは2回呼べない
Quarto
公開

2023年11月18日

Quartoでlatex経由のPDF文書を作る場合、xelatex、lualatex、pdflatex等が使用できますがデフォルトがxelatexなのでそのままxelatexを使うことが多いと思います。

xelatexで日本語の文書に対応したクラスとしてbxjsクラス(bxjsarticleなど)があります。bxjsクラスをQuartoで使うにはコツがいるのでよく知らないうちはつまずきやすいと思います。

geometryオプションの使い方

latexで余白の調節をしたい場合、geometryパッケージが便利なのでよく使われます。そのためかQuartoのPDFオプションではgeometryのためのオプションが用意されています。(実はPandocのオプションにすでに存在するのでQuartoはそれを利用しているだけと思います)

pdf:
  geometry:
    - top=30mm
    - left=20mm

上のような形で指定できるので分かりやすいです。ところが、bxjsクラスを使っているときにこのオプションを指定すると、次のようなエラーが出てしまいます。

! LaTeX Error: Option clash for package geometry.

これは同じ文書でgeometryパッケージを重複して呼び出したときに発生するエラーのようです。なぜ重複してしまったのかと言うと、実はbxjsクラスの中ですでにgeometryパッケージを呼び出しているからです。

BXjscls パッケージ (BXJS 文書クラス集) ユーザマニュアルの「2.6 注意事項」にそのことが書かれています。これは初めからPandocで使用されることも想定されているようで、対処法もちゃんと用意されています。\setpagelayout{}を使えばよいらしいですね。

ただしそれはlatexのコマンドになるので、Quartoのオプションには用意されていません。そこで次のように直接latexコマンドを加えることになるでしょう。

pdf:
  include-in-header: \setpagelayout{top=30mm}

これで無事にgeometryパッケージを使って余白の設定ができます。マニュアルはちゃんと読むべきということですね。