本記事はTypst Advent Calendar 2024の4日目の記事です。
昨日は@doraTeXさんによるVScode Dev Container on macOS でポータブルな Typst の日本語執筆環境を構築する(結論要約版)が公開されました。
明日は@key_271さんによる記事が公開される予定です。
あまり難しい手順は必要ありませんが、意外と花文字の表記が紹介されていなかったり、表記方法をまとめた記事がなかったりしたため、備忘録の意味も込めてまとめておきます。こちらに掲載している情報は2024年12月2日時点の最新バージョン(typst 0.12.0
)およびtypst
公式ドキュメントの内容に基づきます。また、基本的にフォントにはNew Computer Modern
,Harano Aji Mincho
を使用しています。
黒板太字(Blackboard bold)
黒板太字(Blackboard bold)は数学で特定の集合(実数の集合や複素数の集合など)を表す際に使用される書体です。LaTeXでは\mathbb{}
を使って表記しますが、Typstではbb
関数を用いて表記するか、大文字の場合はRR
やCC
のように、ラテン文字を重ねることで表記することが出来ます。
$
bb(b)\
RR=bb(R)
$
$RR^n$は$n$次元の実ベクトル空間を表す。
このように表記すると、以下のように表示されます。
筆記体(Calligraphic)
筆記体(Calligraphic)も、数学的な文章を書く際によく使われます(筆者は完全加法族を表す記号として筆記体の$\mathcal{F}$を使用することが多い)。LaTeXでは\mathcal{}
を使って表記しますが、Typstではcal
関数を用いて表記します。
$
cal(A B C D E F G)\
cal(a b c d e f g)
$
#align(center)[完全加法族$cal(F)$は集合の補集合をとる演算、\ 有限個の集合の和集合・積集合をとる演算に対して閉じている。]
このように表記すると、以下のように表示されます。
花文字
花文字に関しては少し厄介な問題があります。
というのも、LaTeXでは筆記体には\mathcal{}
を使い、花文字には\mathscr{}
を使いますが、Unicodeでは両者に同じ文字コードが割り当てられているため、Typstではこれらを区別することが出来ません。
その対処法として、以下に示すような関数(公式ドキュメントから抜粋)を独自に定義するというものがあります。
#let scr(it) = text(
features: ("ss01",),
box($cal(it)$),
)
このように定義した後、scr
関数を用いて表記することで、花文字を表記することが出来ます。
$
scr(A B C D E F G)\
scr(a b c d e f g)
$
$ scr(F)[f(t-t_0)]=e^(-i omega t_0)F(omega) = G(omega) $
ただし、注意点としてこの方法はデフォルトの数式フォント以外では使用できるか不明瞭であるということに留意してください。フォント特性(font features)をそもそもサポートしていないフォントでは上記の関数を定義してもおそらくエラーが発生するでしょうし、サポートしているフォントだったとしても、所望の字体がss01
に割り当てられているかどうかは不明です。そのため、デフォルトの数式フォント以外を導入する場合は、ドキュメントを参照して対応をおこなうことをお勧めします。上記の例でお気づきの方もいらっしゃるでしょうが、私の使用しているNew Computer Modern
では小文字には対応していなかったようです...。(ただこれに関してはLaTeXでも表示されなかった記憶があるので、そこまで深刻な問題では無いのかもしれません)
ギリシャ文字
ギリシャ文字は数学の表記において欠かせないものです。LaTeXでは\alpha
や\beta
のように表記しますが、Typstではalpha
やbeta
のようにそのまま表記すればギリシャ文字として表示されます。また、大文字にしたい場合はAlpha
やBeta
のように、頭文字を大文字にすることで表記することが出来ます。
$
alpha beta gamma delta epsilon zeta eta theta iota kappa lambda mu nu xi omicron pi rho sigma tau upsilon phi chi psi omega\
Alpha Beta Gamma Delta Epsilon Zeta Eta Theta Iota Kappa Lambda Mu Nu Xi Omicron Pi Rho Sigma Tau Upsilon Phi Chi Psi Omega
$
また、LaTeXでは一部のギリシャ文字の変種(例:$\epsilon$と$\varepsilon$、$\phi$と$\varphi$)を表記するために\varepsilon
や\varphi
を使用しますが、Typstではepsilon.alt
やphi.alt
のように.alt
を付けることで表記することが出来ます。
$
epsilon epsilon.alt\
phi phi.alt
$
個人的には、Typstの、末尾に.alt
を付けることで変種を表記するという方法は非常に直感的でわかりやすいと感じました。しかし面倒なことに、LaTeXにおける\var
とTypstにおける.alt
は必ずしも対応しているわけではないようです......。(例えばLaTeXの\varepsilon
に対応するのは$\varepsilon$ですが、Typstでこれを表示したいときの表記は普通のepsilon
)
ドイツ文字(フラクトゥール)
ドイツ文字を表記する際、LaTeXでは\mathfrak{}
を使って表記しますが、Typstではfrak
関数を用いて表記することが出来ます。
$
frak(A B C D E F G)\
frak(a b c d e f g)
$
このように表記すれば、26文字のラテン文字(大文字、小文字)に対応したドイツ文字を表示することが出来ます。私はあまり詳しくありませんが、ドイツ文字を使用する分野としてはリー代数等があるらしいです。
ヘブライ文字
ヘブライ文字は、例えば無限集合の濃度を表すのにアレフ(aleph、$\aleph$)記号が使われることがあります。LaTeXでは\aleph
を使って表記しますが、Typstではaleph
のように名前をそのまま使って表記することが出来ます。
$
aleph alef beth bet gimmel gimel daleth dalet shin
$
$aleph_0$はすべての自然数からなる集合の濃度であり、無限基数である。
ちなみに筆者は$\aleph$以外のヘブライ文字が使われている場面を見たことがありません...(不勉強)。
まとめ
今回は、主に数学で用いられることの多い様々な字体などをTypstで表記する方法を紹介させていただきました。今回例示に使用したコードはGithubにアップロードしていますので、興味のある方はこちらから閲覧してみてください(大した文量はありませんが...)。また、コードの間違いや改善案、誤字脱字、Typstのバージョンアップに伴う変更などがあれば、お気軽にご指摘いただけると幸いです。よきTypstライフを!