Quarto用技術文書テンプレート

Quarto
Published

2025-08-23

Modified

2025-08-23

概要

できるだけプレーンに近いMarkdownファイルから、それなりの見た目の日本語PDFを出力するためのQuartoテンプレートを作ってみました。GitHubに置いてあります。

単一のMarkdownファイルから技術資料を作るためのtechnoteと、複数のMarkdownファイルを各章とする技術書を作るためのbookの2種類を用意してあります。

technoteテンプレート

bookテンプレート1

bookテンプレート2

Quartoについては、以下のリンクを参照してください。Quarto専用を含むMarkdownの表記方法も記載されています。

  • https://quarto.org/

Quartoの他に以下が必要です。フォントはStaticフォントをインストールしてください。VariableフォントだとLaTeXのレンダリングに失敗する可能性が高いです。

technote

tecnote/内は、bxjsarticleをもとにしたテクニカルノート用のテンプレートファイルセットです。Markdownファイル1つをPDF化します。

> quarto render <markdown file path> --to pdf

でレンダリングしてください。

テンプレートのファイル構成は以下の通りです。

  • _metadate.yml: YAMLヘッダーの設定ファイル
  • _preamble_technote.tex: LaTeXのプリンブルファイル
  • quarto_template.md: Markdownファイル
  • quarto_template_assets/: 画像やその他の素材を格納するフォルダ
  • the-optical-society.cls: 参考文献のスタイルファイル

Markdownファイルを作成し、YAMLヘッダーでタイトルなどを指定します。imageファイルなどの素材は、各章ごとにquarto_template_assetsのようなフォルダを作成し、そこに配置して参照します。各章のMarkdownファイルと対応する素材フォルダを取り出せば、そのままbookテンプレートのひとつの章として使用できます。

全体の設定は_metadata.ymlで行いますが、基本的には変更不要です。

book

book/内はbxjsbookをもとにした技術書用のテンプレートファイルセットです。Chapterごとに複数のMarkdownファイルを用意してまとめてPDF化します。

> quarto render

でレンダリングしてください。

テンプレートのファイル構成は以下の通りです。

  • _quarto.yml: Quartoの設定ファイル
  • _preamble_book.tex: LaTeXのプリンブルファイル
  • ***.md: 各章のMarkdownファイル
  • ***.qmd: メインコンテンツ以外のMarkdownファイル
  • ***_assets/: 各章の画像やその他の素材を格納するフォルダ
  • the-optical-society.cls: 参考文献のスタイルファイル
  • _book/: 出力フォルダ

章ごとにMarkdownファイルを作成し、YAMLヘッダーで章のタイトルを指定します。テンプレートでは、quarto_template_1.mdquarto_template_2.mdの2つの章を用意しています。imageファイルなどの素材は、各章ごとにquarto_template_1_assetsquarto_template_2_assetsのようなフォルダを作成し、そこに配置して参照します。各章のMarkdownファイルと対応する素材フォルダを取り出せば、そのままtechnoteテンプレートでも使用できます。

上記以外に、まえがきindex.qmdとあとがきpostface.qmdのMarkdownファイルも用意しています。index.qmdが無いとquarto renderが通らないので注意してください。参考文献と奥付はreferences.qmdで自動生成します。参考文献を使用しない場合は、このファイルを編集して参考文献部分をコメントアウトしてください。

全体の設定は_quarto.ymlで行います。必要箇所を変更して使用してください。

その他

LaTeXエンジンにはLuaLaTeXを使用しているのですが、コンパイルにはなかなか時間がかかってしまいます。XeLaTeXの方が速いらしいのですが、LuaLaTeXの方が日本語の組版が安定しているようなので、こちらを採用しました。将来的にはXeLaTeXに切り替えるとか、Typstを使うとか、あり得るかもしれません。