Typst 用のテンプレートを使う

前回に引き続きページ設定等について調べようと思ったのだが,いいものを見つけてしまった。

Typst について調べていくうちに「思ったより面倒が多いし,独りでフルスクラッチで組むのは不毛じゃないの?」と思い始めていて,使い勝手のよさそうなテンプレートかパッケージを探していたところであった。

そこで今回は予定を変更して typst-js を導入して簡単な文書を作ってみようと思う。 その上で次回以降から更に Typst の機能について調べていくことにする。

Typst Universe

そのまえに Typst Universe について。

Typst では Typst Universe でパッケージやテンプレートを収集している。 たとえば「工学系の日本語の学会論文テンプレート」である jaconf-mscs なら

$ typst init @preview/jaconf-mscs my-project
Successfully created new project from @preview/jaconf-mscs:0.1.0 🎉
To start writing, run:
> cd my-project
> typst watch main.typ

という感じに雛形のファイルを生成してくれる。 生成された main.typ の最初の部分をちょっと見てみると

// MIT No Attribution
// Copyright 2024, 2025 Shunsuke Kimura

#import "@preview/jaconf-mscs:0.1.0": jaconf, definition, lemma, theorem, corollary, proof, appendix

という記述があり,ここでパッケージをリモートからインポートしている。 続く jaconf, definition, ... はパッケージ内で定義されている関数である。

これでテンプレートの導入は大体分かったかな。

LaTeX jsarticle/jsbook ベースのテンプレート

okumuralab/typst-js は『LaTeX美文書作成入門』でおなじみ奥村晴彦さんによる Typst 用のテンプレート。 奥村晴彦さんは $\mathrm{\LaTeX}$ 用のドキュメントクラスである jsarticle/jsbook の作者でもあり,日本語組版のノウハウが反映されることが期待できる(実際には typst-js はまだ試行錯誤中とのこと)。 ありがたや 🙇

okumuralab/typst-js リポジトリにある template/example.typ を見ると

#import "@preview/js:0.1.0": *

となっていたので Typst Universe に登録されているのかと思ったが typst init しようとしたら怒られてしまった。

というわけで template/example.typ の記述を見ながら手動でファイルを作ってみる。 こんな感じ。

#import "js.typ": *

#show: js.with(
  lang: "ja",
  seriffont: "New Computer Modern",
  seriffont-cjk: "BIZ UDMincho",
  sansfont: "Liberation Sans",
  sansfont-cjk: "BIZ UDGothic",
  paper: "a4",
  fontsize: 10pt,
  baselineskip: auto,
  textwidth: auto,
  lines-per-page: auto,
  book: false,
  cols: 1,
  non-cjk: "latin-in-cjk",
  cjkheight: 0.88,
)

#maketitle(
  title: "Go のエラーハンドリング",
  authors: "Spiegel",
  abstract: [
    Go のエラーハンドリングについて今まで書いた駄文を「全部入り」で本の形にしてみようと思う。
  ],
  keywords: ("golang", "error", "programming"),
  date: "2025年2月24日"
)

#outline() #v(1em)

= はじめに

プログラミングにおいて,正常系は基本的に「一本道」だが,異常系は(予期しないものも含めて)無数にある。
エラーハンドリングは巨大迷路パズルを袋小路から順に塗りつぶして「正解」をあぶり出していく作業に似ていると思う。
下手くそな迷路攻略はただの「作業」だが,*よく考えられた迷路は袋小路の配置も美しい*

こんなふうに考えるなら,プログラム設計の肝は#ruby[エラー][袋小路]をどう記述するかにかかっている,と言えるだろう。

私が Go のエラーハンドリングについて最初に記事にしたのは2015年のことだが,あれから Go も少しずつ変わっているし,私も当時よりは多少なりと理解が進んだと思うので,今まで書き散らかした駄文を「全部入り」で本の形にしてみようと思う。

文章の元ネタは拙文「Go のエラーハンドリング」より(いつか PDF 化したいと思っている)。 インポートは

#import "js.typ": *

としてローカルのカレントディレクトリにある js.typ を示すようにした。 使用する関数を列挙しなくてもワイルドカード(*)が使えるんだな。 フォントの選択については前に書いた「ローカルで Typst 環境を整える」を参照のこと。 Book 形式ではないので book の値は false とした。 ページ内カラム数は1。 non-cjkTypst で定義されている "latin-in-cjk" とした。 正規表現での指定もできるらしい。 あとはデフォルトのままかな。

ちなみに著者は複数記述でき,かつ所属とアドレスも記述できる。 こんな感じ。

authors: (("何山 何某", "某大", "username@example.org"), ("何野 何某", "某大"))

さて,これをコンパイルしてみる。 このときのコマンドは

$ typst compile --pdf-standard a-2b sample.typ

として PDF/A として構成するようにする1。 結果は以下の通り。

PDF 出力結果

出力した PDF ファイルのプロパティはこんな感じ。

PDF 出力結果(プロパティ)

フォントの埋め込みは問題なし。 日本語のタイトルの文字化けもなし。 形式も PDF/A-2b で構成されてるっぽい。 念のため Windows 環境の Adobe Reader でも開いてみたけど,大丈夫かな。

PDF 出力結果

よし。 これでOKにしよう。

履歴書テンプレート

もうひとつテンプレートを紹介しておこう。

データとコードの分離が甘い気もするが,組版の仕上がり を見る限り,かなりよく出来ている。 近年は $\mathrm{\LaTeX}$ では履歴書しか書いてないので Typst で書けるのならいよいよ $\mathrm{\TeX}$ 環境は要らなくなるかなぁ。 フォントファイルだけ何処かに退避させて他は削除してもいいかもしれない。

その他

日本語組版情報にある「日本語テンプレート」を見ると学会による公式テンプレートが既に幾つか公開されているようだ。 他にはソフトウェア設計書のテンプレートもあるみたいでちょっと気になるところである。

探せば他にも色々あるだろうが,ぼちぼち探していこう。

ブックマーク

ブックマークは「Typst に関するブックマーク」にてまとめています。

参考文献

photo
Typst完全入門: LaTeXより簡単、Markdownより強力、美しいドキュメント作成術
doitsu (著)
2024-12-08 (Release 2024-12-08)
Kindle版
B0DPXBNTRS (ASIN)
評価     

マークアップ言語および組版ツールである Typst についての解説。 Kindle 版のみの提供。固定レイアウトではないためレイアウトが崩れまくって読みにくい。この手の技術解説書は固定レイアウトの Kindle 版か,いっそ PDF で出してほしい。でも Typst についてまとまった解説のある日本語の本は他に見当たらなかったのでありがたい。

reviewed by Spiegel on 2025-02-20 (powered by PA-APIv5)

photo
[改訂第9版]LaTeX美文書作成入門
奥村 晴彦 (著), 黒木 裕介 (著)
技術評論社 2023-12-09 (Release 2023-12-09)
単行本(ソフトカバー)
4297138891 (ASIN), 9784297138899 (EAN), 4297138891 (ISBN)
評価     

2023年末に出てるのに気が付かなかった orz 今回は版元で PDF 版を買った。

reviewed by Spiegel on 2024-04-07 (powered by PA-APIv5)


  1. PDF/A については拙文「LuaLaTeX で PDF/A を構成する」を参考にどうぞ。 ↩︎