はじめに
この記事ではQurtoとTypstを使って論文やレポートを作成する手順を紹介します。
Quartoというドキュメント作成・レポート生成・プレゼン資料作成・ブログ構築などを行えるオープンソースの出版システムがあります。Quartoは、PDF出力時の「組版エンジン」として Typstを利用できるようになっています。
QuartoとTypstでPDFを作成するメリットとして、
・Markdown形式で書ける(つまり、数式はLatexなどと同じ書き方)
・PythonやRの実行結果(図など)をそのまま組み込める
・Typstによって自由にレイアウトを変更できる(図表の位置、二段組など)
が挙げられると思います。
私は大学院生時代にこの方法を使ったので、学生の方のレポート執筆にも役立つかもしれません。
※素人なので誤った内容が含まれる可能性があります。ご自身の責任で参考にしていただくことをご了承ください。
Quarto、Typstとは
Quarto
Quartoとは、「オープンソースの科学技術出版システム」です。
JupyterLabやRStudio上で作成したファイル(ipynbなど)をPDFやHTML、ダッシュボードなどに変換することができます。
このとき、Pythonなどでデータ分析した結果の図を、そのままPDF内に配置することができます(データ分析を行う人には便利だと思います)。
Quartoについては公式のマニュアル(https://quarto.org/ )がとても分かりやすいので一読することをおすすめします。
Typst
Typstとは、Latexよりも扱いが簡単で明確な「新しいマークアップベースの組版システム」です。こちらもオープンソースで開発されています。
論文・レポートを作成する流れ
JupyterLabを想定して、論文・レポートを作成する流れを説明します。
RStudioでも同様の流れで作成可能です。
- JupyterLabでipynbファイルにMarkdown記法で文章を書きます。
- 実行したPython・Rのコードは実行し結果を出力しておきます。
- ターミナルを開き、PDFにレンダリングするコマンドを実行します。
- 文章、コード、コードの出力が含まれたPDFが作成されます。
なぜLatexではなくTypstなのか
私個人の感想としては、Typstの方がレイアウトの設定などが容易だと感じています。
Typstでは、既存の関数を使ってオブジェクトのサイズや配置を変更できるので、細かな調整がしやすいと思います。
またレンダリングの時間はTypstの方が圧倒的に短いので、サクサク結果を確認できるのは心地が良いです。
Typstの弱み
Typst自体は非常に書きやすいのですが、数式の記法に関してはやはりLatex流で慣れている部分があるので利便性が劣ります。
Latexと書き方がかなり違う場合もあるので、Typstで書く場合は新しく書き方を覚えなければなりません。
数式はマークダウン形式で大丈夫
Quartoを使えば数式の記法はMarkdownに書くのと同じ書き方で大丈夫です。
ipynbファイルやqmdファイルにMarkdown形式で書いたものをレンダリングするので、数式はLatexの書き方から大きな変更をせずに書けます。Markdown形式で書いたipynbファイルやqmdファイルをTypstでPDFに変換できます。
【実践】PDFに変換する流れの例
Quartoを動かす環境についてですが、私はWSLでJupyterLabとQuartoをインストールし動かしています。
JupyterLabとQuartoのインストールについては、他の資料を参照してください。
以下の作業はJupyterLabだけでなく、RStudioでも同様に行うことができます。
JupyterLabでの準備
JupyterLabとQuartoを使える環境が用意されていることを前提にして始めます。
いきなり自力で論文の体裁を整えてもよいですが、まずはテンプレートをダウンロードし、少しずつ調整して目的の形式にするのが楽だと思います。
テンプレートを使用する
テンプレートは、(https://quarto.org/docs/output-formats/typst-custom.html )で公開されています。
以下の実践ではAMSのテンプレートを使ってみます。
詳しくはGitHub(https://github.com/quarto-ext/typst-templates/tree/main/ams )でご確認ください。
まず、JupyterLabを開きご自身の都合のよいディレクトリを開いておきます。そこにQuartoでファイルをTypstに変換する用のテンプレートをインストールします。
テンプレートのインストール
ターミナルでコマンドを実行し、テンプレートをインストールします。
ターミナルを開くには、JupyterLabなら新しいタブを開いて、Otherから選択します。
【注意】ターミナルを開いたときのカレントディレクトリが、qmdファイルのあるディレクトリと同じになるようにしてください。レンダリングできません。
テンプレートをインストールするために以下のコードを実行してください。
quarto use template quarto-ext/typst-templates/ams
Yes/Noを回答し、フォルダ名を打ち込みます。私はフォルダ名をquartoとしました。
すると、quarto.qmdファイルや_extensionsというフォルダなど一式がインストールされると思います。
このqmdファイルを編集することで、PDFの中身を書き換えることができます。
PDFファイルの作成
次のコマンドでレンダリングしてPDFファイルを作成してみましょう。
quarto render quarto.qmd
このコマンドを実行するだけでPDFが作成できます。
今後はPDFに変換するときはこのコマンドをその都度実行します。
なお、テンプレートのままでは、私の環境では
[typst]: Compiling quarto.typ to quarto.pdf...error: unknown style: `numerical`
┌─ quarto.typ:313:18
│
313 │ set cite(style: "numerical", brackets: true)
│ ^^^^^^^^^^^
というエラーがターミナルにでます。
この場合は、
/_extensions/quarto-ext/ams/typst-template.typ
を開き、136行目を
//set cite(style: "numerical", brackets: true)
というように取り敢えずコメントアウトしておきます。
もう一度実行するとディレクトリの中にquarto.pdfというpdfファイルが生成されました。
ipynbファイルでやってみる
qmdファイルでもJupyterLabで編集できますが、編集しづらいのでipynbファイルをpdfに変換するバージョンもやってみます。
任意のipynbファイル(私はquapy.ipynb)を使って、PDFにしてみます。
ちなみにいまフォルダの中はこのようになっています。
次にquapy.ipynbファイルを編集していきます。
一番上のセルをRAWに設定し、qmdファイルと同じ以下のヘッダーを打ち込みます。
---
title: "Mathematical Theorems"
authors:
- name: Ralph Howard
email: "howard@math.sc.edu"
url: "www.math.sc.edu/~howard"
affiliations:
- name: University of South Carolina
department: Department of Mathematics
city: Columbia
state: SC
postal-code: 29208
abstract: |
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Curabitur ex justo, pretium nec ante mattis, ultricies
ultricies magna. Duis neque nulla, feugiat a consectetur id,
fermentum a lorem. Vivamus sit amet est interdum, eleifend
libero in, rutrum lorem.
format:
ams-typst: default
bibliography: refs.bib
---
画面としては以下のようになります。
次に、
quarto render quapy.ipynb
を実行します。
すると、quapy.pdfが作成されます。
中身は何も書いていないので、最初と最後だけ表示されています。
以上が、quartoで作成したファイルをTypstでPDFに変換する手順です。
Typstのフォント、レイアウトの調整
続いてフォントやレイアウトを調整する方法をご紹介します。
Typstの調整は
/_extensions/quarto-ext/ams/typst-template.typ
の編集を行うことで可能です。
以下ではtypst-template.typを書き換えていきます。
なお、Typstの公式Webサイト(https://typst.app/universe/ )では、膨大な数のテンプレートとパッケージがオープンソースで公開されています。
日本語フォント
このままレンダリングすると日本語部分が無視されてしまうかと思います。日本語のフォントを表示するように設定する必要があります。
typst-template.typに以下のようなコードがあります。
set text(size: normal-size, font: "New Computer Modern")
set text(size: normal-size, font: "Noto Serif CJK JP")
と書いてレンダリングして見ます。
すると、再度typファイル上でset textによってフォントの設定が上書きされるまで、このNoto Serif CJK JPというフォントが有効になり、日本語で書いた文章がPDFに出力されるようになります。

Pythonのコードと結果の表示
続いてPythonコードと結果を表示する方法を説明します。
コードセルに以下のPythonコードを書いて実行してください
import numpy as np
import matplotlib.pyplot as plt
r = np.arange(0, 2, 0.01)
theta = 2 * np.pi * r
fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})
ax.plot(theta, r)
ax.set_rticks([0.5, 1, 1.5, 2])
ax.grid(True)
plt.show()
すると、図が出力されます。
図が出力された状態でipynbファイルを一度上書き保存し、
quarto render quapy.ipynb
をターミナルで実行します。
コードの出力結果が表示されたPDFが作成されます。
PDFの一枚目の全体は以下のようになっていると思います。
細かい調整をしたい方向けの参考リンク
- Quartoの公式ガイド(https://quarto.org/docs/guide/)
- JupyterLabでQuartoを使うための公式ガイド(https://quarto.org/docs/tools/jupyter-lab.html)
- Typstの公式ドキュメント(https://typst.app/docs/)
- Typstの公式フォーラム(https://typst.app/universe/)
※パッケージやテンプレートなどが公開されている。
まとめ
QuartoとTypstを使って論文・レポートの作成に最低限必要な手順を紹介しました。
今後は、レイアウト、キャプション、ヘッダーなどの変更方法やパッケージの使用方法について紹介したいと思います。
ぜひQuartoとTypstを使って楽しく論文・レポート作成を行って見てください!









