はじめに
Typstでは文書設定をしなくても,デフォルトの設定である程度のものが書けます.しかし,何かレポートを書いたり,論文を書いたりする際には,多くの設定が必要になります.そうでなくとも,日本語で何かを書くには少なからずフォントの設定が必要です.このような設定は,同じ形式の文章を書くときには同じ設定となるので,テンプレート化しておくと便利です.
この記事では,簡単なTypstのテンプレートを作るための要点をまとめます.
また,私が作成した Typst用日本語テンプレート や 非公式の日本機械学会テンプレート もありますので,ぜひ積極的に使ってください!
1. テンプレートを置く階層
まず,テンプレート作る際に階層を決めておきます.テンプレートはメインのファイルと分けておくと便利ですので,この記事では,以下のようにしておきます.
.
├─ style
| └─ style.typ
└─ main.typ
テンプレートファイル style.typ
は,文章を書くファイル main.typ
とは異なる階層 style
などに入れておくと,きれいに整理できます.
Typstではファイルの読み込みを相対パスで行えます.main.typ
の冒頭には次のファイル読み込み設定をしておきましょう.
#import "style/style.typ": *
上記では,ファイル名の後に : *
としていますが,このようにすることで style.typ
内の全ての関数を一気に読み込むことができます.
2. show関数を利用して設定を書き込む
style.typ
に設定を書くには,#let
を利用します.
設定は最初に書き込みたいので,次のような関数を書きます.
#let init(body) = {
ここの設定を書いていく...
body
}
これは init
という関数を作っています.body
という引数がありますが,ここには main.typ
で init
関数を呼び出した後の全てのものが入ります.特に操作をしない限りは,上記のように設定を書いた最後の行に body
と書いておけば良いです.
関数の中身は{ }の中に書いていきます.
この括弧の中では#
を使う必要はありません.
これを main.typ
で呼ぶには,#show
を利用します.
#show: init
このときに引数を設定する必要はないです.このように書けば,init
の中に書いた設定が全て読み込まれるようになります.
このあとは,全て init
関数の中に書いていきます.
3. 設定項目
簡単なテンプレートを作るために,いくつか設定を書いていきます.設定は全てinit
関数の中に書きます.
3.1 言語の設定
文書を日本語に設定するには,
set text(lang: "ja")
と書きます.
これで,目次や図表のキャプションが日本語になります.
のようになります.
3.2 ページの設定
ページの設定をするには,
set page(
paper:"a4",
margin: (left: 25mm, right: 25mm, top: 30mm, bottom: 30mm),
numbering: "1",
number-align: center,
)
と書きます.
-
page
: 紙の大きさを設定します.ほとんどの場合A4だと思いますので,"a4"
としておきます -
margin
: 紙の余白を設定します -
numbering
: ページ番号を設定します."1 / 1"
のように書けば,全体ページ数も表示できるようです -
number-align
: ページ番号の位置です
他にもたくさん設定項目があるので,必要に応じてページの設定を参照してください.
上の場合,設定前は
のように白紙が表示されているのに対し,設定すると
となり,ページ番号が設定されていることがわかります.また,上記の例では見えていませんが,余白も設定されています.
3.3 フォントの設定
フォントは
set text(font: "Harano Aji Mincho")
のように設定します.font
の引数はかなり自由度が高く,配列でも定義できるようです.
例えば
set text(font: ("CMU Serif", "Harano Aji Mincho"))
のようにすれば,CMU Serifにあるフォントが優先的に読み込まれ,ないフォントはHarano Aji Minchoから読み込まれます.これを使えば,あるていど英字と日本語を別のフォントにすることができます.
数式のフォントも次のように
show math.equation: set text(font: "Latin Modern Math")
と設定できます.
フォントは環境依存ですから,存在しないフォントを指定してしまう場合も考えられます.この場合,指定したフォントは無視されるようです.
上記のように設定を書き加えると,
が
のように日本語フォントが正しく設定されたことがわかります.
3.4 行間の設定
LaTeX と比較すると,Typstは若干行間が狭めに設定されているような感じがします.行間を設定するには
set par(leading: 1.0em)
のようにします.em
はフォントサイズを基準にした倍率です.デフォルトは0.65em
と少し狭めに設定されているようです.
設定前は
のようになっていますが,設定すると
のように行間が広がったことがわかります.
3.5 章の設定
Typstでは,章をheading
で設定できます.
章の番号付けは
set heading(numbering: "1.")
などとすれば設定できます.
細かい設定は
show heading: it => [
ここに設定を書いていく...
]
のなかで書きます.
このとき,headingに必要な情報は全てit
の中に書かれています.例えば,
#counter(heading).display(it.numbering)
などと書けば章番号が出力されます.
時々,
it
の中にnumbering
が含まれないことがあります.
このような場合には,条件分岐で#if it.numbering != none{ counter(heading).display(it.numbering) }
というように設定しないとエラーが出てしまいます.
章の題名もit
から
#it.body
と書いて取得できます.
上記のように設定すると,
が
のように変更できます.
タイトルをゴシック体に変更したい時は,
show heading: it => [
#set text(font: "Harano Aji Gothic")
]
3.6 インデントの設定
Typstでもパラグラフの最初をインデントを設定できます.これは
set par(first-line-indent: 1em)
とすれば1文字分のインデントが設定されます.
3.7 数式の設定
数式は,ブロック形式と文章中の形式で異なる設定ができます.例えば,ブロック形式の数式のみ設定したい場合は,
show math.equation.where(block: true): it => {
ここに設定を書いていく...
}
とします.例えば,数式を左揃えにしたい場合は
show math.equation.where(block: true): set align(left)
などとします.
日本機械学会の場合,数式は左揃えで空白を2文字空けることが求められています.このような場合は,grid
を使って
show math.equation.where(block: true): it => {
set align(left)
grid(
columns: (2em, auto),
[],it
)
}
とすれば設定できました.
実際に書いてみると,設定前は
のように数式は中央に表示されますが,設定することで
のように位置を変更できます.
3.8 figureの設定
Typstでは,表だけでなく図もfigure
環境を使います.これらは自動で判別され,kind
に反映されます.表の設定を変えたい場合は,
show figure.where(kind: table): it => {
ここに設定を書いていく...
}
とします.図の場合はkind
をimage
とすれば設定できます.
例えば,表のキャプションを上に配置したい場合,
show figure.where(kind: table): set figure.caption(position: top)
などと書きます.
日本機械学会の場合,図や表のキャプションはTable 1, Fig. 2などと書きますが,文章中で引用する場合は表1や図2と表記します.これを再現するには,特定の種類のrefだけsupplementを変えるを参考にして
// キャプションの設定
show figure.where(kind: table): set figure(supplement: "Table")
show figure.where(kind: image): set figure(supplement: "Fig. ")
// 引用の設定
set ref(supplement: it => {
let body-func = it.body.func()
if body-func == table{
[表]
}else if body-func == image{
[図]
}else{
it.supplement
}
})
とします.
のようになります.
4. おわりに
Typstの簡単なテンプレートを作る際に紹介しました.
この記事で紹介している例を利用すると,次のようなテンプレートができます.
スタイルファイルを読み込むだけで,簡単に設定できていることがわかります.
また,さらに詳細な設定をした Typst用日本語テンプレート や 非公式の日本機械学会テンプレート もありますので,自由にご利用ください.