- 技術 💻
Typstとは・使い方|LaTeXと速さ比較・日本語文書の実例とエラー原文
結論
Typst(タイプスト)は、Markdown に近い短い記法で書いた文書を PDF に組版する、Rust 製のオープンソースの組版システムです。LaTeX と同じく数式・表・相互参照・参考文献を扱え、手元の計測では同じ文書の PDF 化が XeLaTeX(3回の実行+BibTeX)より5〜6.5倍速く終わりました。
この記事でわかること
- インストール(Windows・Mac・Linux・Webアプリ)と最初のコンパイルの手順
- 日本語のレポートを組んだ実物の設定と、LaTeX との書き方・速さの比較表
- Typst 0.15.0 で出したエラー原文12種と直し方、移行・出力形式の判断表
Typst は、テキストファイル(拡張子 .typ)に本文と書式を書き、コンパイラーが PDF・PNG・SVG・HTML を作る仕組みです。Word のように画面で直接整える道具ではなく、LaTeX と同じ「書いてから組む」道具です。
flowchart TD
A[main.typ<br>本文と書式] --> C[Typst コンパイラー]
B[画像・.bib・フォント] --> C
C --> P[PDF]
C --> G[PNG・SVG]
C --> H[HTML 実験的]
よく調べられることの答えを先にまとめます。
| 知りたいこと | 答え | 詳しい節 |
|---|---|---|
| Typstとは | 短い記法で書き、PDF に組版する Rust 製の組版システム。本体は無料 | Typstとは |
| Typst と LaTeX の比較 | 記法が短く、コンパイルが速く、エラーが読みやすい。投稿規定や縦組みは LaTeX | TypstとLaTeXの違い |
| Typst のインストール | Windows は winget、Mac は Homebrew、Linux はリリースのバイナリ。Web アプリなら不要 | Typstのインストール |
| Typst の使い方(最初の1枚) | typst compile main.typ で PDF、typst watch で保存のたびに再生成 |
最初の文書をコンパイルする |
| 日本語で書くには | #set text(lang: "ja", font: ...) で言語とフォントを指定する |
日本語の文書を組む設定 |
| 数式の書き方 | $ ... $。分数は a / b、\frac は使えない |
数式の書き方 |
| Typst の Web アプリの料金 | Free は0ドル(200MB)、Pro は月7.99ドル(2026年10月29日時点) | Typstのインストール |
| エラーの読み方 | ファイル名:行:列と該当箇所、hint(直し方の候補)が出る | よくあるエラーと直し方 |
確認環境:Ubuntu 24.04.5 LTS(2 CPU・メモリ 8GB)。Typst の公式バイナリを GitHub のリリースから取得する操作は、この環境の権限で拒否されたため行っていません。そのため、CLI(typst コマンド)のインストールと使い方は公式の README・ドキュメントで確かめた範囲で書き、組版の実行は同じ Typst 0.15.0 のコンパイラーを含む Python パッケージ typst 0.15.0(PyPI、作業用の venv に導入)で行いました。エラーは、このパッケージが返す CLI と同じ形の表示(位置・該当行・hint)をそのまま載せています。日本語の文書は Noto Serif CJK JP・Noto Sans CJK JP で組み、PDF を pdftoppm で画像にして目で確かめました。LaTeX との比較は XeTeX 3.141592653-2.6-0.999995(TeX Live 2023/Debian)と pdfTeX 1.40.25、移行は pandoc 3.1.3、PDF の中身は pdffonts・qpdf で調べています。Typst の Web アプリ(typst.app)・料金・VS Code 拡張 Tinymist は公式ページの記載の範囲です。最新版は 0.15.1(2026年7月17日公開)で、0.15.1 の変更点は公式の changelog で確かめました。図は mermaid で描画を確かめています(確認日 2026年10月29日)。
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「Typstとは・使い方|LaTeXと速さ比較・日本語文書の実例とエラー原文」
Typstとは(LaTeXに代わる組版システム)
この節では、Typst が何をする道具で、どんな場面で使われるのかが分かります。
Typst は、マークアップ(見出しや強調を記号で示す書き方)とスクリプトを1つの言語にまとめた組版システムです。見出しは = 見出し、太字は *太字* と書き、余白やフォントは #set という命令でまとめて指定します。コンパイラーは Rust で書かれ、ソースは GitHub で Apache-2.0 ライセンスとして公開されています。
使われる場面は、レポート・論文の下書き・技術文書・請求書や名刺のような定型の書類・スライドなどです。LaTeX と同じく「テキストで書き、Git で差分を管理し、PDF を作る」流れに乗せられるので、文書をコードと同じように扱いたい開発者とも相性が合います。
マークアップ
= 見出し、* 太字、- 箇条書き。Markdown に近い。
本文を書く層
数式
$ a / b $ のように書く。\ の命令は使わない。
LaTeX より短い
スクリプト
#let で関数、#for で繰り返し、#if で分岐。
テンプレートを作る層
出力
PDF(PDF/A・PDF/UA)、PNG、SVG、HTML(実験的)。
1つのソースから
版はまだ 1.0 に達しておらず、0.15.0 ではファイルパスにバックスラッシュを使えなくなるなど、版をまたぐ変更があります(公式 changelog)。長く使う文書は、使った版を記録しておくと安心です。
TypstとLaTeXの違い(書き方・速さ・エラーの比較)
この節では、Typst と LaTeX の違いを、書き方・コンパイルの速さ・エラー表示・できることの4点で比べた結果が分かります。
同じ内容の文書を両方で組むと、Typst は記述が短く、1回の実行で相互参照と参考文献まで解決し、エラーは場所を指して直し方の候補を出しました。一方、学会・論文誌の投稿テンプレート、縦組み、TikZ の豊富な作図の資産は LaTeX が強い分野です。
| 項目 | Typst | LaTeX |
|---|---|---|
| 見出し・太字 | = 見出し・*太字* |
\section{見出し}・\textbf{太字} |
| 分数 | $ a / b $ |
\frac{a}{b} |
| 設定の書き方 | #set・#show・#let |
プリアンブル・\newcommand・パッケージ |
| 参照・文献の解決 | 1回のコンパイルで解決 | 複数回の実行と BibTeX/Biber |
| 導入の大きさ | 実行ファイル1つ(手元のライブラリ版は 77MB) | TeX Live 一式(数GB になることが多い) |
| 日本語 | lang: "ja" とフォント指定で禁則・和欧間スペースが入る |
LuaLaTeX+luatexja や upLaTeX などの組み合わせを選ぶ |
| 縦組み・投稿規定 | 縦組みは指定できなかった(エラー原文は後述) | 縦組みのクラスや各学会のテンプレートがそろう |
コンパイルの速さを実測(Typst と XeLaTeX)
見出し・日本語の段落6つ・番号付きの数式・相互参照・引用・表を1節とし、節の数を変えた同じ文書を Typst と XeLaTeX で組みました。XeLaTeX は相互参照と文献を解決するため「xelatex → bibtex → xelatex → xelatex」の一式を測り、どちらも3回の中央値です。
| 文書(ページ数) | Typst | XeLaTeX 1回 | XeLaTeX 一式 | Typst 1字直して再生成 |
|---|---|---|---|---|
| 5節(3ページ) | 0.29 秒 | 0.56 秒 | 1.73 秒 | 14ms |
| 40節(19ページ) | 0.39 秒 | 0.70 秒 | 1.98 秒 | 65ms |
| 200節(93ページ) | 0.50 秒 | 1.03 秒 | 3.26 秒 | 780ms |
1一式で5〜6.5倍の差
Typst は1回で参照・文献まで終わる。XeLaTeX は1回なら差は約2倍だが、参照を正しくするには複数回の実行が要る。
2直した後は差分だけ
コンパイラーを使い回すと、1文字の修正の反映は 14〜65ms。typst watch や Web アプリのプレビューが速い理由。
3PDF は Typst が大きい
40節で 478KB 対 65KB。Typst の PDF には文書構造のタグ(qpdf で数えて 1,143 個)が入っていた。
XeLaTeX 側は xeCJK などの日本語用パッケージを使わず、\XeTeXlinebreaklocale "ja" だけで改行させたため、ページ数が Typst と少し違います。速さの比較であって、組版の品質の比較ではありません。Typst 0.14.0 から PDF は既定でタグ付き(スクリーンリーダー向けの構造情報入り)になったと公式 changelog にあり、容量の差の一部はこれによるものと考えられます。
エラー表示の違い
同じ打ち間違い(\frac を \fracc と書いた)を両方で起こしました。LaTeX は次のとおりです。
! Undefined control sequence.
<recently read> \fracc
l.3 $\fracc
{a}{b}$
! ==> Fatal error occurred, no output PDF file produced!
Typst で $ fracc(a, b) $ と書くと、列の位置まで示し、直し方の候補(hint)を2つ出しました。
error: unknown variable: fracc
┌─ bad.typ:2:2
│
2 │ $ fracc(a, b) $
│ ^^^^^
│
= hint: if you meant to display multiple letters as is, try adding spaces between each letter: `f r a c c`
= hint: or if you meant to display this as text, try placing it in quotes: `"fracc"`
Typstのインストール(Windows・Mac・Linux)とWebアプリ
この節では、Typst を使い始める3つの方法(Web アプリ・CLI・VS Code 拡張)と、OS ごとのインストールコマンドが分かります。
まず試すなら Web アプリ、手元で Git と一緒に管理するなら CLI、書きながらプレビューを見たいなら VS Code の拡張機能 Tinymist、という分け方が分かりやすいです。次のコマンドは公式 README の記載です。
| 環境 | 入れ方 | メモ |
|---|---|---|
| Windows | winget install --id Typst.Typst |
パッケージマネージャー経由は最新版より遅れることがある |
| Mac | brew install typst |
Homebrew を使う |
| Linux | GitHub のリリースのアーカイブを展開し、PATH の通った場所に置く | Snap や各ディストリビューションのパッケージもある |
| Rust の環境がある | cargo install --locked typst-cli |
手元でビルドするため時間がかかる |
| Docker | ghcr.io/typst/typst:latest のイメージ |
CI で使いやすい |
| 更新 | typst update |
リリースのバイナリで入れた場合 |
Web アプリで書き味を試す
typst.app でアカウントを作ると、ブラウザで編集とプレビューができる。インストールなしで記法を確かめられる。
CLI を入れる
上の表のコマンドで入れ、typst --version で版を確かめる。ヘルプは typst help、サブコマンドごとに typst help watch。
エディターを用意する
VS Code なら拡張機能 Tinymist を入れる。Ctrl+K V でプレビュー、「Export PDF」で PDF を出せる(Marketplace の説明)。
日本語フォントを確かめる
typst fonts で、Typst から見えるフォントの名前を一覧する。この名前を font: に書く。
Typst の Web アプリの料金
公式の料金ページによると、2026年10月29日時点のプランは次のとおりです。CLI と VS Code 拡張は無料で、料金がかかるのは Web アプリの上位プランです。
| プラン | 料金 | 主な違い |
|---|---|---|
| Typst Free | 0ドル | 保存容量 200MB、1プロジェクト100ファイルまで |
| Typst Pro | 月7.99ドル(年払いで14%引き) | 2GB・1,000ファイル、コメント、GitHub/GitLab 同期(実験的)、Zotero/Mendeley 連携など |
| On-Premises | 個別見積もり | 5名以上の組織が自社の環境に Web アプリを置く |
Web アプリに .tex ファイルを上げると、Pandoc の変換を使って Typst のプロジェクトを始められると公式の LaTeX ユーザー向けガイドに書かれています。社外秘の文書を扱うときは、クラウドに置いてよいかを先に確かめ、手元の CLI を選ぶ判断もあります。
VS Code の設定ファイルで拡張機能の動きを整える方法は、関連記事「VS Code settings.jsonおすすめ設定|コピペ用全文と各項目解説」で扱っています。
Typstの使い方:最初の文書をコンパイルする(compile・watch)
この節では、最初の .typ ファイルを書いて PDF にするまでの手順と、保存のたびに自動で PDF を作り直す方法が分かります。
空のファイルに本文を書くだけで文書になります。LaTeX の \documentclass や \begin{document} のような前置きはありません。
#set text(lang: "ja", font: "Noto Serif CJK JP")
= はじめに
Typst で最初の文書を作ります。*太字* も書けます。
- 箇条書き1
- 箇条書き2
CLI では次のように実行します(公式 README の例)。
# main.typ から main.pdf を作る
typst compile main.typ
# 出力先を指定する
typst compile main.typ out/report.pdf
# 保存するたびに作り直す(止めるときは Ctrl+C)
typst watch main.typ
# フォントの場所を足す・見えるフォントを一覧する
typst compile --font-path ./fonts main.typ
typst fonts --font-path ./fonts
この環境では同じコンパイラーを Python から呼び、時間を測りました。
import time, typst
t = time.perf_counter()
typst.compile("main.typ", output="main.pdf")
print(round((time.perf_counter() - t) * 1000), "ms")
# watch と同じく、コンパイラーを使い回して差分だけ作り直す
c = typst.Compiler("main.typ")
c.compile(output="main.pdf")
| やったこと(2ページのレポート) | 時間 | 読み取れること |
|---|---|---|
| 起動して最初のコンパイル | 8,307ms | システムのフォントを初めて読み込むため遅い |
| 2回目以降(毎回新しく作る) | 321〜456ms | うちフォントの走査が約 230ms |
| コンパイラーを使い回す(変更なし) | 3ms | 結果が再利用される |
| PNG(144ppi)・SVG で出力 | 395ms・325ms | ページごとに1ファイル |
| システムのフォントを使わない設定 | 36ms | 速いが日本語が豆腐になった(後述) |
出来上がった PDF を pdfinfo で見ると、作成者の欄に版が入っていました。
Title: Typst 動作確認レポート
Creator: Typst 0.15.0
Pages: 2
Page size: 595.276 x 841.89 pts (A4)
画像の書き出しでは、出力名に {p}(ページ番号)を入れると p1.png・p2.png のようにページごとに分かれました。PDF を後から画像にする方法を比べたい場合は、pdftoppm などの変換ツールも使えます。
Typstの基本の書き方(マークアップ早見表)
この節では、本文を書くときによく使う記法と、それが LaTeX・Markdown では何にあたるかが分かります。
記号の多くは Markdown と似ていますが、見出しが # ではなく =、番号付きリストが + である点が違います。Typst では # は「ここから関数やコードを書く」という印です。
| 書きたいもの | Typst | Markdown | LaTeX |
|---|---|---|---|
| 見出し(1段・2段) | =・== |
#・## |
\section・\subsection |
| 太字・強調 | *太字*・_強調_ |
**太字**・*強調* |
\textbf・\emph |
| 箇条書き・番号付き | -・+ |
-・1. |
itemize・enumerate |
| 用語と説明 | / 用語: 説明 |
なし(拡張による) | description |
| コード | `code`・``` で囲む |
同じ | verbatim・listings |
| リンク | URL をそのまま、#link("URL")[文字] |
[文字](URL) |
\href |
| ラベル・参照 | <名前>・@名前 |
なし | \label・\ref |
| 改行・段落 | \・空行 |
行末の空白2つ・空行 | \\・空行 |
| コメント | //・/* */ |
HTML のコメント | % |
関数は #関数名(引数)[本文] の形で呼びます。たとえば #align(center)[中央寄せ] は、角括弧の中身を中央に寄せます。Markdown の書き方そのものは、関連記事「Markdownの書き方一覧|記法早見表と環境別の対応・変換結果つき」で扱っています。
Typstの数式の書き方(LaTeXとの対応表)
この節では、Typst で数式を書く方法と、LaTeX の命令をどう書き換えるかが分かります。
$x^2$ のように記号のすぐ内側に空白が無ければ本文中の数式、$ x^2 $ のように空白を入れると別行立ての数式になります。LaTeX の \ 付きの命令は使わず、alpha・sqrt(x) のように名前で書きます。
#set math.equation(numbering: "(1)")
本文中は $a^2 + b^2 = c^2$ と書きます。
$ integral_0^infinity e^(-x^2) dif x = sqrt(pi) / 2 $ <gauss>
$ sum_(k=1)^n k = (n(n+1)) / 2 $ <sum>
@gauss はガウス積分、@sum は自然数の和です。
組んだ PDF では、2つの数式に (1)・(2) の番号が付き、@gauss は「式 1」と表示されました。lang: "ja" を指定しているため、「Equation」ではなく「式」になります。
| 書きたいもの | LaTeX | Typst |
|---|---|---|
| 分数 | \frac{a}{b} |
a / b・frac(a, b) |
| 平方根 | \sqrt{x} |
sqrt(x) |
| 総和・積分 | \sum_{k=1}^{n}・\int_0^\infty |
sum_(k=1)^n・integral_0^infinity |
| ギリシャ文字 | \alpha・\pi |
alpha・pi |
| 添字のまとまり | x_{ij} |
x_(i j) |
| 文字列(変数でない) | \text{max} |
"max" |
| 番号付きの式 | equation 環境と \label |
#set math.equation(numbering: "(1)") と <名前> |
LaTeX の癖で書くと
$ x = \frac{a}{b} $。\f が「f という文字そのもの」と読まれ、残りの rac が変数扱いになって unknown variable: rac で止まった$ x = a / b $ か $ x = frac(a, b) $。2文字以上の並びは関数か変数の名前として読まれる数式の中の \ は「次の1文字を記号のまま出す」意味
なお、$ alpha beta gamma frac(1, 2) $ のように名前を空白で区切って並べた式は、エラーなく組めました。
表・図・相互参照・参考文献の書き方
この節では、レポートや論文で必要になる表・図・番号付きの参照・参考文献を Typst で書く方法が分かります。
表は table、図は image を figure で包み、後ろにラベルを付けると @ラベル で「表 1」「図 1」と参照できます。参考文献は既存の BibTeX の .bib ファイルをそのまま読めます。
#show figure.where(kind: table): set figure.caption(position: top)
#figure(
table(
columns: 3,
align: (left, center, right),
table.header[*項目*][*Typst*][*LaTeX*],
[見出し], [`= 見出し`], [`\section{}`],
[太字], [`*太字*`], [`\textbf{}`],
),
caption: [書き方の比較],
) <tbl>
#figure(image("chart.png", width: 60%), caption: [棒グラフの例]) <fig>
@tbl と @fig は相互参照です。組版の考え方は @knuth1984 にさかのぼります。
#bibliography("refs.bib", style: "ieee")
組んだ結果を画像にして確かめた内容は次のとおりです。
| 要素 | PDF での見え方 | メモ |
|---|---|---|
| 表のキャプション | 「表 1: 書き方の比較」が表の上 | 既定は下。show ルールで上に移した |
| 図のキャプション | 「図 1: 棒グラフの例」が図の下 | PNG を幅60%で配置 |
| 本文の参照 | 「表 1 と 図 1 は相互参照です」 | クリックで飛べるリンクになる |
| 引用 | 本文に [1]、文末に「[1] D. E. Knuth, The TeXbook. Addison-Wesley, 1984.」 | IEEE 形式 |
| 見出しの既定名 | 「目次」「参考文献」 | lang: "ja" で自動的に日本語になった |
文献の形式は CSL(引用の書式を定めるファイル)で決まり、公式ガイドによると80以上が同梱されています。0.15.0 からは1つの文書に参考文献リストを複数置けるようになりました。文献データは .bib のほか、Typst 独自の YAML 形式(Hayagriva)でも書けます。
日本語の文書を組む設定(フォント・字下げ・和欧間スペース)
この節では、Typst で日本語の文書をきれいに組むための設定と、実際に組んで分かった注意点が分かります。
まず #set text(lang: "ja", font: "日本語フォントの名前") を書きます。Typst に同梱のフォントは DejaVu Sans Mono・Libertinus Serif・New Computer Modern(数式用を含む)の4系統だけで(手元で一覧を出して確かめた結果)、日本語の字形は入っていません。日本語はパソコンに入っているフォントか、--font-path で渡したフォントを使います。
#set page(paper: "a4", margin: (x: 25mm, y: 25mm), numbering: "1 / 1")
#set text(font: "Noto Serif CJK JP", lang: "ja", size: 10.5pt)
#set par(justify: true, first-line-indent: (amount: 1em, all: true), leading: 0.9em)
#set heading(numbering: "1.1")
#show heading: set text(font: "Noto Sans CJK JP", weight: "bold")
#show raw: set text(font: ("DejaVu Sans Mono", "Noto Sans CJK JP"))
組んで分かった日本語の注意点
| 試したこと | 結果 | 対応 |
|---|---|---|
| 和文と英数字が混ざる文 | 既定で「Typst は 2023 年に」と間に小さな空きが入った | 不要なら cjk-latin-spacing: none |
| 句読点が行頭に来そうな文 | 「、」「。」は行頭に来なかった | 禁則は lang: "ja" で働く |
| 見出し直後の段落の字下げ | 既定では字下げされない | first-line-indent: (amount: 1em, all: true) |
_強調_ を日本語に使う |
見た目が変わらなかった(和文フォントに斜体が無い) | 日本語の強調は *太字* か色・書体を変える show ルール |
| コード(raw)の中の日本語 | 小さな別の字形(Unifont)で表示された | raw のフォントに和文フォントを並べる(上の6行目) |
| システムのフォントを使わない | 日本語がすべて豆腐(□)になり、警告 unknown font family: noto serif cjk jp |
フォントの場所を渡す |
縦書き #set text(dir: ttb) |
error: text direction must be horizontal |
縦組みは LaTeX などを使う |
raw の文字が別の字形になった件は、pdffonts で埋め込まれたフォントを見ると分かりました。直す前は Unifont が入り、直した後は NotoSansCJKjp-Regular に置き換わっています。
直す前: ... NotoSerifCJKjp-Regular / NotoSerifCJKjp-Bold / Unifont / NewCMMath-Book / DejaVuSansMono
直した後:... NotoSerifCJKjp-Regular / NotoSerifCJKjp-Bold / NotoSansCJKjp-Regular / NewCMMath-Book / DejaVuSansMono
フォント名は、OS に入っている名前と1文字でも違うと使われず、警告が出るだけで PDF はできてしまいます。PDF ができても警告を読み、pdffonts などで埋め込まれたフォントを確かめるのが確実です。文字化けの原因の切り分けは、関連記事「文字化けの原因8選|濁点分離・utf8mb4・絵文字の文字数」で扱っています。
テンプレートとパッケージ(set・show・関数・Typst Universe)
この節では、体裁をまとめて決める set・show ルール、自分の関数、テンプレートの作り方、パッケージの読み込み方が分かります。
#set は「関数の既定の引数を変える」、#show は「ある要素の見せ方を差し替える」、#let は「変数や関数を作る」命令です。公式の LaTeX ユーザー向けガイドは、#let を \newcommand、#show を \renewcommand に近いものとして説明しています。
set ルール(既定を変える)
#set text(size: 10.5pt)
#set heading(numbering: "1.1")
以後のすべての該当要素に効く
show ルール(見せ方を差し替える)
#show heading: set text(blue)
#show "Typst": name => strong(name)
条件付きで一部だけ変えられる
自分の関数を作ると、同じ体裁の部品を何度でも使えます。次の例は、灰色の枠のメモを出す関数です。
#let note(body) = block(fill: luma(240), inset: 8pt, radius: 4pt, width: 100%)[*メモ*:#body]
#note[設定は `#set` で、見た目の上書きは `#show` で行います。]
手元のパッケージ(@local)を作って読み込む
社内の書式のように公開しないテンプレートは、データ用フォルダーの local 名前空間に置くと @local で読み込めます。この環境では次の2ファイルを置き、読み込めることを確かめました。
# {パッケージの場所}/local/rjc-memo/0.1.0/typst.toml
[package]
name = "rjc-memo"
version = "0.1.0"
entrypoint = "lib.typ"
authors = ["RJC"]
license = "MIT"
description = "社内メモの体裁"
// lib.typ
#let memo(title: "", body) = {
set text(font: "Noto Sans CJK JP", lang: "ja")
align(center, text(16pt, weight: "bold", title))
line(length: 100%)
body
}
// 使う側の文書
#import "@local/rjc-memo:0.1.0": memo
#show: memo.with(title: "週次メモ")
- 進捗:Typst の検証が終わりました
PDF から文字を取り出すと「週次メモ」「• 進捗:Typst の検証が終わりました」が出ました。#show: 関数.with(...) は「文書の残り全体をこの関数に渡す」書き方で、公開テンプレートもこの形で使います。版を 0.2.0 に書き違えると package not found (searched for @local/rjc-memo:0.2.0) で止まりました。
Typst Universe の公開パッケージ
公開のパッケージとテンプレートは Typst Universe(typst.app/universe)で探せます。#import "@preview/パッケージ名:版" と書くと、初回に自動でダウンロードされます(公式ガイド)。作図の cetz、スライドの touying、図式の fletcher、用語集の glossarium などが並んでいます。この環境は外部に接続しない設定のため、@preview の読み込みは次のエラーになりました。
failed to download package (https://packages.typst.org/preview/cetz-0.4.2.tar.gz: Proxy failed to connect)
一度ダウンロードしたパッケージは手元のキャッシュから使われるため、社内ネットワークなどで使うときは、つながる環境で一度コンパイルしておくか、@local に置く方法があります。
Typstの出力形式(PDF・PNG・SVG・HTML・PDF/A・PDF/UA)
この節では、Typst が書き出せる形式と、規格に沿った PDF を作るときの注意が分かります。
既定は PDF で、画像(PNG・SVG)と HTML も書き出せます。HTML は公式に「開発中」とされる実験的な機能です。手元で同じ文書を各形式で出した結果は次のとおりです。
| 形式 | 結果 | 出たメッセージ・注意 |
|---|---|---|
| 2ページ・85KB、タグ付き | なし | |
| PNG(144ppi) | 1ページ目 147KB | 出力名に {p} を入れてページごとに分ける |
| SVG | 1ページ目 314KB | 文字は図形として埋め込まれる |
| HTML | 7KB。数式は MathML | 警告4件(下記)。page と align は無視された |
| PDF/A-2b・PDF/A-3u | そのまま作れた | 長期保存向けの規格 |
| PDF/UA-1 | 最初はエラー、代替テキストを足して作れた | 画像と数式に alt が要る |
HTML で出したときの警告は次の4件でした。
html export is under active development and incomplete
page set rule was ignored during HTML export
align was ignored during HTML export
align was ignored during HTML export
アクセシビリティの規格 PDF/UA-1 を指定すると、代替テキストの無い画像と数式で止まりました。要素を1つずつ入れて試すと、image(..., alt: "棒") と math.equation(block: true, alt: "x の二乗", $x^2$) のように alt を付けたものだけが通りました。
PDF/UA-1 error: missing alt text
hint: make sure your images and equations have alt text
文書の中から値を取り出すこともできます。見出しの一覧を JSON で取り出した結果です(0.15.0 で CLI の typst query は typst eval に置き換わったと公式 changelog にあります)。
[
{ "func": "text", "text": "見出しA" },
{ "func": "text", "text": "見出しB" }
]
LaTeX・MarkdownからTypstへ移行する(Pandoc)
この節では、既存の LaTeX や Markdown の原稿を Typst に変換する方法と、変換で起きたことが分かります。
Pandoc は Typst への変換に対応しており、見出し・強調・箇条書き・数式・表はおおむね変換できましたが、数式の番号の参照が切れてコンパイルが止まりました。pandoc 3.1.3 で LaTeX の原稿を変換した結果の一部です。
pandoc in.tex -t typst -o out.typ
= はじめに
<はじめに>
これは #strong[太字] と #emph[強調] です。
$ a / b plus sqrt(x^2 plus 1) eq sum_(i eq 1)^n i $
式 #link(<eq:a>)[\[eq:a\]] を参照。
この out.typ をコンパイルすると、label `<eq:a>` does not exist in the document で止まりました。数式に付いていた \label{eq:a} が変換で消え、参照だけが残ったためです。変換後は、数式の後ろに <eq:a> を足し、#link(...) を @eq:a に書き直すと参照が戻ります。
- 1変換後に一度コンパイルしてエラーを全部出すラベル・画像のパス・文献のキーで止まりやすい
- 2数式のラベルと参照を見直すpandoc 3.1.3 では equation の \label が消えた
- 3独自のマクロは Typst の関数に書き直す\newcommand は #let で置き換える
- 4体裁は変換に頼らず set・show で作り直す文書クラスの見た目までは移らない
Markdown からも同じコマンドで変換でき、**太字** は #strong[太字]、ドル記号2つで囲んだ別行の数式 E=mc^2 は $ E eq m c^2 $ になりました。逆向き(Typst から Word など)は、同じ pandoc 3.1.3 で簡単な文書は Markdown にできましたが、この記事のレポート(set・show・figure 入り)は unexpected end of input で読み込めませんでした。
公式ガイドは、LaTeX ほど作図の資源(PGF/TikZ)が豊富ではない点と、page 関数で余白を変えると改ページを伴う点を制限として挙げています。図をテキストで描く方法の1つとして、関連記事「Mermaid記法一覧|全図種のコピペ用コードと描画結果まとめ」で扱っている Mermaid で図を作り、画像として読み込む方法もあります。
Typstのよくあるエラーと直し方(原文つき)
この節では、Typst 0.15.0 で実際に出したエラー・警告の原文と、原因・直し方が分かります。
Typst のエラーは「ファイル名:行:列」と該当箇所の ^^^ で場所を示します。まず場所を見て、hint があれば読みます。
| エラー・警告の原文 | 原因 | 直し方 |
|---|---|---|
unknown variable: undefinedfunc |
無い関数・変数を # で呼んだ(綴り違い・import 忘れ) |
綴りを直す・#import を足す |
unknown variable: rac |
数式に LaTeX の \frac を書いた |
a / b か frac(a, b) |
unclosed delimiter |
* や (・[ の閉じ忘れ |
示された位置の記号を閉じる |
expected comma |
引数の並びの途中で閉じ括弧が無い | 上と同時に出る。括弧を閉じる |
file not found (searched at ...) |
画像・.bib のパス違い | 表示された探した場所を見て、パスか --root を直す |
label `<nolabel>` does not exist in the document |
@参照 先のラベルが無い |
ラベルを付ける・綴りを合わせる |
cannot add string and integer |
文字列と数を + した |
str(1) や int("1") で型をそろえる |
warning: unknown font family: ms mincho |
その名前のフォントが無い(PDF はできる) | typst fonts の名前を書く・候補を並べる |
package not found (searched for @local/...) |
パッケージ名・版の違い、置き場所の違い | フォルダー名と typst.toml の版を合わせる |
failed to download package (...) |
@preview を取りに行けない(オフライン・プロキシ) |
つながる環境で一度取得する・@local に置く |
expected "a0", "a1", ... |
用紙の名前が違う(例:b5j) |
JIS の B5 は "jis-b5" |
text direction must be horizontal |
text に縦方向を指定した | 縦組みは対象外として別の道具を使う |
関数の中で起きたエラーは、呼び出し元も help: while calling として示されました。
error: cannot add string and integer
┌─ e7.typ:1:12
│
1 │ #let f(x) = x + 1
│ ^^^^^
help: while calling `f`
┌─ e7.typ:2:1
│
2 │ #f("a")
│ ^^^^^^
パスの違いは、探した場所がそのまま出るので原因が分かりやすいエラーです。
error: file not found (searched at /dev/shm/t174/work/err/nothere.png)
┌─ e3.typ:1:7
│
1 │ #image("nothere.png")
│ ^^^^^^^^^^^^^
うまくいかないときの症状→原因→直し方
| 症状 | 原因 | 直し方 |
|---|---|---|
| 日本語が □ になる | 日本語フォントが見つからない | typst fonts で名前を確かめ、font: に書く |
| コードの中の日本語だけ字形が違う | raw の既定フォントに和文が無い | #show raw: set text(font: (..., "和文フォント")) |
| 見出しの後の段落が字下げされない | 既定は「段落が続くときだけ」字下げ | first-line-indent に all: true |
| 参照が「Equation 1」になる | 言語の指定が無い | #set text(lang: "ja") |
| 最初のコンパイルだけ遅い | フォントの初回の読み込み | 2回目以降や watch では速くなる |
| Windows でパスが通らない | 0.15.0 からパスに \ を使えない |
/ で区切る |
TypstとLaTeX・Word・Markdownの判断表(どれを使うか)
この節では、文書の目的ごとに Typst・LaTeX・Word・Markdown のどれを選ぶとよいかが分かります。
迷ったら、提出先の決まりを最初に確かめます。指定のテンプレートがあるなら、それに合わせるのがいちばんの近道です。
- 1提出先が LaTeX か Word の形式を指定している → その形式学会・論文誌の投稿、社外の書式指定
- 2縦組みの本・ルビの多い和文 → LaTeX など縦組みに対応した道具Typst は横書きのみだった
- 3数式・表・参照の多い文書を自分で組む → Typst記述が短く、再生成が速い
- 4同じ体裁の書類を大量に作る → Typstsys.inputs や関数で差し込み、PDF を一括生成
- 5画面で見る README・Wiki → MarkdownPDF の体裁が要らない
- 6相手が手で直す前提の文書 → Word変更履歴・コメントで受け渡す
| 観点 | Typst | LaTeX | Word | Markdown |
|---|---|---|---|---|
| 覚える量 | 少なめ | 多い | 少ない | 少ない |
| 数式・参照 | 強い | 強い | 手作業が多い | 弱い |
| Git での差分 | 読みやすい | 読みやすい | 読みにくい | 読みやすい |
| 投稿テンプレート | 少ない | 豊富 | 豊富 | なし |
| 縦組み | 不可 | 可 | 可 | 不可 |
差し込みの例として、外から渡した値を文書に入れる sys.inputs を試しました。#let v = sys.inputs.at("ver", default: "none") と書いて ver=0.15 を渡すと、PDF に「版: 0.15」と出ました。CLI では --input ver=0.15 の形で渡します。PDF の生成を CI に組み込む流れは、関連記事「CI/CDとは|GitHub Actionsで最初のパイプラインを作るまで」で扱っています。
よくある質問
この節では、Typst について検索でよく調べられる疑問への答えが分かります。
Q. Typst の読み方は?
日本語では「タイプスト」と呼ばれることが多いです。拡張子は .typ です。
Q. Typst は無料で使えますか?
コンパイラー(CLI)は Apache-2.0 のオープンソースで無料です。Web アプリにも0ドルの Free プランがあり、容量やファイル数を増やしたいときに Pro(月7.99ドル、2026年10月29日時点)を選びます。
Q. LaTeX はもう要りませんか?
自分で体裁を決められる文書なら Typst で置き換えやすいです。投稿先が LaTeX のテンプレートを指定している場合や、縦組み・TikZ の作図資産が要る場合は LaTeX を使います。
Q. 縦書きはできますか?
手元の 0.15.0 では #set text(dir: ttb) が text direction must be horizontal というエラーになり、本文の縦組みはできませんでした。
Q. 日本語フォントは何を指定すればよいですか?
パソコンに入っている和文フォントの名前を typst fonts で確かめて書きます。Typst に同梱されているのは欧文と数式のフォントだけです。この記事では Noto Serif CJK JP(本文)と Noto Sans CJK JP(見出し・コード)を使いました。
Q. オフラインで使えますか?
CLI と同梱フォント・手元のフォントだけで組む文書はオフラインで組めます。@preview のパッケージは初回にダウンロードが要り、つながらないと failed to download package になります。
Q. Web アプリと CLI はどう使い分けますか?
共同編集やすぐ試すには Web アプリ、Git での管理・CI での PDF 生成・社外に出せない文書には CLI が向きます。
Q. Python や JavaScript から使えますか?
Python では PyPI の typst パッケージで typst.compile("main.typ", output="main.pdf") と呼べ、この記事の計測もこの方法です。JavaScript から動かすための typst.ts というプロジェクトもあります。
Q. Word の .docx に変換できますか?
Typst 自体の出力は PDF・PNG・SVG・HTML です。pandoc は Typst の読み込みに対応していますが、手元の pandoc 3.1.3 では set・show を使ったレポートを読み込めませんでした。
Q. どの版を使えばよいですか?
2026年10月29日時点の最新は 0.15.1 です。1.0 前のため、版を上げると書き方が変わることがあります。changelog を読んでから上げ、文書と一緒に使った版を記録しておくと戻しやすくなります。
まとめ
- Typst は、短い記法で書いて PDF に組む Rust 製の組版システムで、本体は無料。Web アプリ・CLI・VS Code の Tinymist から始められる。
- 同じ文書の PDF 化は XeLaTeX の一式より5〜6.5倍速く、1文字直した後の再生成は 14〜65ms だった。PDF の容量は Typst のほうが大きかった。
- 日本語は
lang: "ja"とフォントの指定が出発点。raw のフォント、first-line-indentのall、和文の_強調_に注意する。 - エラーは位置と hint を読む。
\fracの癖、閉じ忘れ、パス・ラベル・パッケージの版の違いが多い。 - 投稿規定・縦組み・TikZ 資産が要るなら LaTeX、それ以外の自分で体裁を決める文書は Typst が候補になる。
参考・出典
確認日はいずれも 2026年10月29日です。
- Typst 公式ドキュメント:https://typst.app/docs/
- Typst「Guide for LaTeX users」:https://typst.app/docs/guides/guide-for-latex-users/
- Typst「par」(first-line-indent):https://typst.app/docs/reference/model/par/
- Typst Changelog 0.15.1:https://typst.app/docs/changelog/0.15.1/
- Typst Changelog 0.15.0:https://typst.app/docs/changelog/0.15.0/
- Typst Changelog 0.14.0:https://typst.app/docs/changelog/0.14.0/
- Typst Pricing:https://typst.app/pricing
- Typst Universe:https://typst.app/universe/
- typst/typst(GitHub・README):https://github.com/typst/typst
- Tinymist Typst(Visual Studio Marketplace):https://marketplace.visualstudio.com/items?itemName=myriad-dreamin.tinymist
- typst(PyPI・Python バインディング):https://pypi.org/project/typst/
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「Typstとは・使い方|LaTeXと速さ比較・日本語文書の実例とエラー原文」
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。