はじめまして!24Bのmumumuです。
TeXからTypstへ変えてみたのでその際に行ったことを書いてみました!
これから始める人、TeXから移行しようかなと考えてる人や始めようかなと思っている人の参考になれば幸いです。
目次
経緯
もともと大学の課題などではTeXを使っていたのですが、ふとTypstを書いてみたところ、previewへの反映が早くて書きやすい!これは使いたいと思い今後使うことにしました。
インストールなどは簡単だったのですが、記事なども少なく、TeXで行っていたことをTypstでできるようにするのに若干手間取ったので私の行ったことをブログにします。
環境構築
さくっといきます。
まずはインストール
私はwslを使っているので、ubuntuにインストールします。
Typst の GitHub の README にcargo install --locked typst-cli
でいいよと書いているのでこれを実行。
拡張機能
vscodeで書きたいのでvscode拡張の tinymist typst をインストールします。
ここまでやればもうTypstが書けるようになります。以下は私の好みもりもりの設定です。
pdf更新設定
Typstのpreview機能はTeXと違って爆速で更新してくれるので私はpdfで表示を確認することはあまりないのですが、
TeX のように「保存したら自動で PDF を更新」したかったのでVS Code 設定の "export pdf"
を "onSave"
に設定します。
ctrl + ,
で出てくる設定画面でexport pdf
と検索するとできます

これで Ctrl + S で保存したときに自動でPDFが生成されます。
PDF表示のショートカット設定
ctrl + alt + v
でpdfが表示されてほしいのでkey bindにこれを追加
{
"key": "ctrl+alt+v",
"command": "tinymist.showPdf",
"when": "editorLangId == typst"
}
Typstのpreviewはctrl + k v
でみることができ、基本こちらを使いますがpdfも追加していて損はないので追加しました
フォントの導入
TeX と似せようと思うとHaranoAjiフォントとを使うべきらしいです。デフォルトだと認識されていなかったので、インストールします。
~/.local/share
においておけば認識してくれます。そのあとフォントキャッシュを更新してvscodeを再起動すると反映されました。
wget https://mirrors.ctan.org/fonts/haranoaji.zip
mkdir -p ~/.local/share/fonts/haranoaji
cp haranoaji_ctan/haranoaji/*.otf ~/.local/share/fonts/haranoaji/
fc-cache -fv
formatの設定
保存時にフォーマットされるようにしたいですね。
ctrl + ,
でててくるsetting.jsonに以下を追加すると保存時(ctrl + s
)にformatすることが出来るようになります。
"[typst]": {
"editor.defaultFormatter": "myriad-dreamin.tinymist",
"editor.formatOnSave": true
},
templateの作成
ここまでで最低限の準備は完了です。ただ見た目の調整や、追加の関数などもう少し欲しいものがあります。
以降紹介するものやそれ以外の細かい設定を含めたものはgithubに上がっています。
style.typをimportすれば以下のものを使えるようになります。(main.typを参考にしてください)
主に追加した設定を順に紹介していきます!
表紙の作成
レポートを書くには表紙、必要ですよね。
表紙をどこからか拝借しようと思ったのですが、なかったので作ることに
どんな見た目にしようかな~と考えてたら二種類つくってしまいました。
うん、まあいいかんじ
コードを見る
// 表紙
#let maketitle(
title: "",
subtitle: "",
date: datetime
.today()
.display(
"[year]年[month repr:numerical padding:none]月[day padding:none]日",
),
id: "",
author: "",
abstract: [],
type: 1, // 表紙は二通り設定している
) = align(center)[
#set document(title: title, author: author)
#if type == 1 {
v(3em)
if title != "" {
text(size: 2em)[#title]
v(4em)
}
if subtitle != "" {
text(size: 1.8em, weight: 550)[#subtitle]
v(3em)
}
text(size: 1.4em)[#date]
v(3em)
text(size: 1.4em)[学籍番号 #id]
v(3em)
text(size: 1.2em)[#author]
if abstract != [] {
v(2.5em)
block(width: 90%)[
#set text(1em)
_概要_
#align(left)[#abstract]
]
}
v(1em)
} else if type == 2 {
// 右上の提出日
align(right)[
#if date != "" { text(1em)[提出日 #date] }
]
// タイトル(中央)+ 著者(右端)
// ページ幅いっぱいの箱を用意
v(4em)
// タイトルは中央
align(center)[
#if title != none and title != "" {
text(2em, title)
}
#if subtitle != none and subtitle != "" {
v(2em)
text(1.8em, subtitle)
}
]
// 著者・学籍番号はページ右端に寄せる
align(right)[
#v(2.4em)
#if author != "" { text(1.1em)[#author] }
#if id != "" {
text(1.1em)[学籍番号 #id]
}
]
v(1em)
}
]


コードブロック
デフォルトのコードブロックは少し嫌だったのでこちらも変更することに
TeXだとちょっと個人的には日本語周りが難しかったのですがTypstだと綺麗に表示できます!
codlyというtemplateを使っており、ファイルからimportして表示したり、labelで参照できるようにしたり、ヘッダー、captionもつけれるようにしました。いい感じです!

コールアウト
使ってたらmdみたいに使いたい気持ちになってきて、コールアウトも作りました。

定理環境
使ったことなかったですがこの際だから作りました。もっとおしゃれにしたかったけどshowyboxのバグでシンプルな見た目に断念。まあこれでいいでしょう。
showybox周りは稀に見た目がバグります。

おわりに
色々作るとこれからTypst書くのが楽しみになりますね。
Typstはおそらくまだまだ発展途上で稀にバグに遭遇するかもしれませんが、書き心地がいいので皆さんもぜひ使ってみてください!