Octavo
計量社会科学スターターパック
論文・スライド・講義ノート・ポスターは Markdown で書き、分析は Quarto で行う。分析が出した数値・図・表は Octavo がどの文書にも差し込み、PDF(Typst)と Word に仕上げる(TeX があれば LaTeX にも)。何を作るかは、原稿の冒頭で選ぶ。文献は1つの .bib から、好きな CSL スタイルで整形される。
仕組み
できあがるもの
octavo init demo --all --example)から組んだ論文の1ページとスライド。係数・表・図は分析から取り込まれ、番号と参考文献は組版のときに自動で付く。できること
数値を手入力しない
分析で登録し(ov_value("n_obs", nrow(d)))、原稿では名前で呼ぶ({{n_obs}})。分析を再実行すれば、すべての文書の数値がまとめて更新される。
R でも Python でも
分析は Quarto の .qmd で、R でも Python でも書ける。どちらにも同じ補助関数があり、プロジェクトの .venv と renv も用意される。
1つの原稿から、選んだ出力を
冒頭に outputs: [pdf, slides] と書く。投稿先の書式に合わせた論文、A4 のプリント、回ごとのスライド(番号はプリントのまま。印を付けた所だけにもできる)、発表者用の台本、A0 のポスター、共著者に回す Word。
ラベルで参照する
@fig-trend は「図2.1」になり、節を並べ替えても、番号は正しいまま。
投稿の前に点検する
octavo check が、本文に手入力された数値、仮の値、存在しない引用や図、規定の分量オーバーを知らせる。
投稿から採択後まで
匿名審査用の出力、投稿用の zip、共著者が Word で入れた変更履歴の読み取り、投稿した版から変わった数値の一覧、再現用パッケージ。
VS Code 拡張
原稿の横に、カーソルに合わせて動く PDF のライブプレビュー、上の機能を操作できるサイドバー、ボタン1つのセットアップ。Linux・macOS・Windows に対応し、表示は英語と日本語。
AI アシスタントと使える
プロジェクトごとの約束事(結果を原稿に手入力しない、など)を AGENTS.md に置く。Claude Code・GitHub Copilot・Codex・Antigravity のどれもが読むので、AI アシスタントは最初からその約束を知っている。
インストール
VS Code なら、Octavo 拡張
をインストールし、案内が出たら「セットアップ」を押す。pandoc・Typst・Quarto・R・フォントと octavo コマンドがまとめて入る。
ターミナルなら:
curl -LsSf https://astral.sh/uv/install.sh | sh
uv tool install octavo-kit
octavo setup # pandoc / Typst / Quarto / フォント / R
octavo doctor # 足りないものを報告する
始め方
VS Code なら: フォルダを開き、アクティビティバーの Octavo のアイコンを押す。まだプロジェクトでないフォルダなら「新しいプロジェクト」が出るので、最初に置くもの(R か Python の分析、論文、スライド、講義ノート、ポスター)と、見本で埋めるかを選ぶ。原稿を開いてエディタ右上の PDF のボタンを押すと、横に PDF が出て、カーソルに合わせて動く。
ターミナルなら、まずは見本で動作を確かめる(分析・論文・スライド・講義ノート・ポスター):
octavo init demo --all --example
cd demo
octavo env # 分析の環境(.venv と renv)
octavo build --compile
自分のプロジェクトは、必要な部品だけで始める:
octavo init study --with analysis,paper
cd study
octavo env # 分析の環境(.venv と renv)
octavo build paper --compile
octavo check # 投稿する前に
TikZ なしで図を描く
箱と矢印の図、因果グラフ、フローチャートは、専用のファイルに Typst で描く。octavo new figure dag が小さな diagram()(パッケージは使わない)入りの figures/dag.typ を置き、octavo build が通常の図として組み込む。どの出力形式でも使え、番号が付き、ラベルで参照できる。
#diagram(
(z: (2, 0, [Background $Z$]),
x: (0, 1.6, [Education $X$]),
y: (4, 1.6, [Income $Y$]),
u: (4, 3, [Unobserved $U$], (stroke: none))),
(("z", "x"), ("z", "y"), ("x", "y"),
("u", "y", (dash: "dashed"))),
)
ポスター
同じプロジェクトから学会のポスターも作れる。octavo new poster が置く原稿は、一番上の見出し1つが1マスで、既定は A0 に2列×3行。{span=2}・{rows=2} でマスをつなぎ、判型と格子は冒頭で変え、題の帯にはロゴと QR コードを置ける。マスに入りきらない文は、組むと知らせる。論文の原稿から、印を付けた所だけでポスターを作ることもできる。
---
title: Counting how policy is made
author: [Author One, Author Two]
event: Example Conference 2026
qr: https://example.org/paper
outputs: [poster]
poster_rows: [1, 2, 1]
---
# Question
# Data and methods
# Results {span=2}
# Conclusion
# References
octavo init demo --with analysis,poster --example)。