Typstという選択肢

# はじめに
wordの代わりにLatexを導入してみたいけど、いろいろと難しそう？と考えている人を想定して書いています。

# Typst（タイプスト）とは？
組版システムの一つ。ざっくりいえば、文字や画像をどの位置にどんなふうに配置するのかをすべて**文字**で指定するものです。wordと違いマウスで編集することは一切できません。
しかし文字ですべて指示できるので、慣れるとかなり快適に文書を作成することができます。

## Typstをお勧めしたい人
- 論文や予稿、レポートなど、決まったフォーマットの文章の作成が多い人
- 卒論、修論、博論を書くにあたりとりあえずwordじゃまずいかもと思った人
- Latexを使ってみたかったが環境構築で挫折した人

## Typstがあまりお勧めじゃない人
- パンフレットやポスターのように、イラストや写真、レイアウトが複雑でマウス操作のほうが楽な状況が多い人
    - 画像の配置が複雑だったり調整が多い場合はマウスでレイアウトを弄れないTypstだと苦しいかもしれません

## Typstのメリット
- VScodeユーザーなら導入がしやすい
- rustで作成されているためシステムの動作が無茶苦茶速い
    - 処理落ちしにくい、しない
    - 何から何まで速くてストレスを感じない
- 数式が直感的に表現できる。それ以外の制御や表現についても一回慣れるとLatexよりもスムーズ
- Typstの公式ドキュメントでLatexの操作との対応表があり、乗り換えしやすい
    - ただし英語のドキュメントしかない
- **レイアウトに悩む時間が減る**
    - 数式や図の配置が驚くほど楽にできwordであれけイライラさせられていた画像配置などを一瞬で終わらせることができる
- **Overleafのように**、会員登録をすればブラウザのみで利用できる環境がある
    - ただしドキュメントの数や容量上限があり、拡張したいなら課金をする必要がある
## Typstのデメリット
- プログラミングを全くしたことのない人からすれば学習までに非常に時間がかかる
- 日本語のドキュメントが不十分で歯がゆい思いをしやすい
- コンパイルエラーでなんでエラーになっているのかわかりにくい
    - ~~rustとは大違いだ！~~
- ~~出力されるPDFの容量がなんかでかい~~
    - バージョン0.12で改善されました。
    - 昔はCJKフォント使うとフォントをフルに組み込んでましたがようやく使用したフォントのみ組み込むようになりました。

# 導入の仕方
## ブラウザ版の利用
### とにかく使ってみたいならまずこれ！
https://typst.app/
メアドだけで利用開始することができる上に、Latexやwordで作成したファイルをインポートする機能もあります。
気軽に始められるので最初はここで試してみて気に入ったらVScode版を利用してみるといいかもしれません。
テンプレートもそこそこ用意されていて、使い方を覚えたりどんな文書を作ることができるかの確認もできます。
![スクリーンショット 2024-07-11 010902.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3835552/017443d6-ebcf-11a9-929f-ca43d98fa866.png)
#### PRO版の特徴
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3835552/0e6c1b66-fa31-03ef-1202-b1d5ab350a87.png)
こんな感じで発展途上ってかんじですね

## VScodeを利用する方法
VScodeの拡張機能ストアでTypst LSPをインストールするだけです。楽。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3835552/fe082020-49f4-09fb-c8ec-5ff9f18bfb42.png)
ファイル数上限を気にしたくない方、環境構築ができる方はこっちがおすすめですが、それでもTypstの記法をドキュメントで調べながら書いていくのはなかなか苦痛なので、Web版のテンプレートも見ながら書いていくと楽だと思います。


## CLIでの導入
rustで作成されたシステムなので、rustupを導入し```cargo install typst```をすれば利用できます。CLI版でもtypstはcompile以外にもwatch機能があり、これを起動しておくとソースコードが更新されるたびに自動でpdfを作成してくれます。お気に入りのエディタがある場合はこいつにお世話になるでしょう......。

# 日本語を使えるようになりたい!!!
日本語をそのまま入力すると...
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3835552/29eb93a8-f934-53f9-e644-46ce4dc0be08.png)
文字化けではないですけど変なフォントになってますね。
実はこれUbuntuのようなLinux環境下だと発生してWindos版だと
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3835552/9ff41ccb-9237-1b73-fc6e-a3e7aa7733ad.png)
ちゃんと一貫してますね。(画像の大きさが微妙に違っててごめんなさい)

筆者はMacを持っていないので検証していませんが、どこでも日本語フォントをちゃんと使えるようにしておく環境を作っておきたいですよね？

とりあえず公式ドキュメントでもあまり掲載されていないみたいなので、日本語フォントを指定できるようにいろいろしちゃいましょう。

## タイトルや章など見出しはゴシック体、本文は明朝体にしたい！
他の記事を見ていると日本語フォントの導入の仕方については明記されているのにセクションや本文での使い分けを指定する文章の書き方はなかなか見つけられなかったので苦労しました。以下に自分が実装した例を掲載します。

### フォントの導入の仕方
#### Ubuntu
TypstはOSのシステムと同じディレクトリを参照しているみたいなので、/usr/local/share/fontsあたりにいれておけばうまくいきます(うろ覚えですが)
#### Windows
これもWindows側のフォントを参照しているのでWindowsの設定からフォントを追加すれば検知されます

### タイトルや章をゴシック体にする
Typstは```=```をセクションとみなします。Markdonwでいう```#```と同じですね。自動で章や節の番号をカウントして反映してくれるし、数字の表記も指定可能です。細かい話は公式ドキュメントに任せるとしてとにかく日本語フォントでは次のようにしました
```typst
 #show heading: set text(font: "Noto Sans CJK JP")
```
たったこれだけです。これを一番最初に書けばOKです。
実はこのフォントはTypstLSPを導入すれば一応使えるはずなので、フォントの追加をしなくてすみます。
反映されてない！という人はTypstのシステムがフォントのファイルを探せてないのがよくある原因なので、フォントのファイルの場所を確認しておきましょう。
### 本文を明朝体にする
```
#set text(size: fsize, lang: "ja", font: "Noto Serif CJK JP")
```
これを本文の前に置けばOK
このフォントもTypstLSP導入時に同梱されているのでフォントの追加などはしなくても大丈夫なはずです

# さいごに
とりあえずWeb版を使ってみましょう！テンプレートを見ていくのが一番楽だと思います。
これに慣れるとレポート作成のストレスが減るので、大学生の味方になってくれるはずです

# おまけ
## ~~生成されるPDFのファイルサイズが大きい問題~~
先述の通りアプデにより改善されたみたいなので削除しました。