執筆者: ごま
最終更新: 2024/07/01
【Typstでレポートを作成しよう 前編】
この記事はTypstシリーズの第2弾です。前回はTypstの導入の方法と基本的な使い方を紹介しました。 今回はTypstを使ってレポートを作成する方法を紹介します。もし前回の記事を読んでいない方は、まずは前回の記事を読んでみてください。
今回レポートを作成するにあたって習得したい技術は
とします。
Typstには現在(2024/6/27)の時点では表紙を作成するための関数などは公式ではサポートされていないため、作成には少し手間を掛ける必要があります。 今回作成する表紙の構成は、一般的なレポートで記述が必要と考えられる、次の項目を含むものとします。
これらの要素を含んだレポート表紙のサンプル画像がこちらです。
この節では上記のような表紙を作ることを目指します。その前に、前回の記事でも少し扱いましたが、Typstで作成したPDFで日本語をきちんと表示するために次の設定を行います。
#set text(lang: "ja") // 言語を日本語に設定
#set text(font: ("New Computer Modern","Harano Aji Mincho"),size: 10pt,) // フォントを設定
大体ぱっと見で意味がわかるのではないでしょうか。このように、Typstでは全体に何らかの書式を適用したい際は#set
を用います(もしブロック内にネストされていればブロック内のみに適用されます)が、今回は説明を割愛します。ちなみに"New Computer Modern"は私が雰囲気が出ると思って採用しているフォントなので、これに拘る必要はありません。また、本文全体のフォントサイズは10pt
に設定しています。これも変更したければ10.5pt
やその他のサイズに変更して良いと思います。
さて、この状態でまずタイトル、氏名、所属1、所属2、学籍番号まで記入してみましょう。日付は自動で挿入したいので後回しにします。
タイトル
氏名
所属1
所属2
学籍番号 0000000
この状態でコンパイルを行うと次のように出力されます。
先程示したサンプルとさまざまな相違点がありますが、まず気になるのは改行が行われていないことです。これはTypstの仕様によるもので(LaTeXでも同様ですが)、単にソースコードの文末で改行を行うだけでは改行が行われません。改行を行うためには、文末に\
を付ける必要があります。
タイトル \
氏名 \
所属1 \
所属2 \
学籍番号 0000000 \
これで改行が行われました。次に、これらの要素の配置を変更してみましょう。サンプルでは、これらの要素はほぼ上下左右中央に配置されています。なので、まずは左右に対して中央揃えにしてみましょう。テキストを中央揃えにしたいときは、#align(center)[中央揃えにしたいテキスト]
と記述します。
#align(center)[ タイトル \ 氏名 \ 所属1 \ 所属2 \ 学籍番号 0000000 \]
このように記述すると、次のように出力されます。
次に、上下中央に配置してみましょう。上下中央に配置するには、#align
を用いる際、center
だけでなくhorizon
を指定します。
#align(horizon + center)[ タイトル \ 氏名 \ 所属1 \ 所属2 \ 学籍番号 0000000 \]
このように、#align
を用いることでテキストの配置を変更することができます。ただし、個人的には上下中央では少し違和感があるため、私がいつもレポートを書く際は左右中央だけ指定して、上方向の空白は手動で設定しています。 Typstでは垂直方向の空白は#v(200pt)
のように設定します。ついでに、タイトルと氏名の間にも空白を設定しておきましょう。
#align(center)[
#v(200pt)
タイトル \
#v(10pt)
氏名 \
所属1 \
所属2 \
学籍番号 0000000 \
]
だいぶそれっぽくなってきました。しかし、文字が全体的に小さい気がしますね。これは先程設定したフォントサイズが10pt
だからです。この部分は変更せず、表紙部分だけフォントサイズを12pt
に変更してみましょう。また、タイトルは目立たせたいので、さらに大きい18pt
にしてみます。
#align(center)[
#v(200pt)
#text(
size: 18pt,
)[
タイトル
]
#v(10pt)
#text(
size: 12pt,
)[
氏名 \
所属1 \
所属2 \
学籍番号 0000000 \
]
]
このように#text()[]
を用いることによってフォントサイズを変更する事ができます。タイトルとそれ以外に適用するフォントサイズが異なるため、#text()
を二回用いています。
最後に、レポートの作成を行った日付を挿入しましょう。今日の日付を表示するには#datetime.today().display()
を用います。
#align(center)[
#v(200pt)
#text(
size: 18pt,
)[
タイトル
]
#v(10pt)
#text(
size: 12pt,
)[
氏名 \
所属1 \
所属2 \
学籍番号 0000000 \
\
#datetime.today().display()
]
]
記事のこの部分を書いている時点では、2024年6月28日なので、正しい日付が出力されています。ただ、一般的な日本語のレポートでは日付のフォーマットがYYYY-MM-DD
ではなくYYYY年MM月DD日
の方が一般的です。このフォーマットに変更するには、#datetime.today().display()
の引数に"[year]年[month]月[day]日"
を指定します。
#align(center)[
#v(200pt)
#text(
size: 18pt,
)[
タイトル
]
#v(10pt)
#text(
size: 12pt,
)[
氏名 \
所属1 \
所属2 \
学籍番号 0000000 \
\
#datetime.today().display("[year]年[month]月[day]日")
]
]
これで表紙の作成ができました!ただ、表紙というからにはこのページにはタイトル~日付までしか記載してほしくないわけです。そのため、次のページに進むための改ページを行いましょう。改ページは#pagebreak
を用います。
#align(center)[
#v(200pt)
#text(
size: 18pt,
)[
タイトル
]
#v(10pt)
#text(
size: 12pt,
)[
氏名 \
所属1 \
所属2 \
学籍番号 0000000 \
\
#datetime.today().display("[year]年[month]月[day]日")
]
]
#pagebreak()
本文ここから
少し見づらいですが、適切に改ページが行われています。これで表紙の作成は完了です。次に、見出しを設定する方法を説明します。
Typstでは、見出しを作成する際は=
マークを用います。見出しのレベルは=
の数で指定します。例えば、=見出し1
は1レベルの見出し、==見出し2
は2レベルの見出しとなります。具体的に書いてみるとこんな感じです。
= 見出し1
== 見出し2
=== 見出し3
このように記述すると、次のように出力されます。
このままでも悪くはありませんが、少しカスタムしてみましょう。例えば、フォントを明朝体からゴシック体に変更してみます。ヘッダー(見出し)のみのフォントを変更するには、
#show heading: set text(font: ("Harano Aji Gothic"),weight:500 )
と記述します。
いい感じになりましたね。ちなみにweight
は文字の太さを指定しています。ここでは500
を指定していますが、100
から900
までの間で指定することができます。
次に、見出しに番号を振ってみましょう。見出しに番号を振るには、#set heading(numbering:)
を用います。ここでは一例として"1.1"
を指定してみます。
#set heading(numbering: "1.1")
= 見出し
== 見出し
=== 見出し
= 見出し
== 見出し
=== 見出し
このように、見出しに番号が振られました。この番号は見出しのレベルに応じて変わります。例えば、"1.1"
を指定した場合、1レベルの見出しは1
、2レベルの見出しは1.1
、3レベルの見出しは1.1.1
となります。
ここまで長くなってしまったので、前半はここまでとします。次回は図を挿入する方法、表を挿入する方法、リンクを貼る方法、ページ番号を挿入する方法を説明します。
font: ("Harano Aji Mincho","New Computer Modern")
としていましたが、正しくはfont: ("New Computer Modern","Harano Aji Mincho")
です。ご指摘ありがとうございます。修正いたしました。この人が書いた記事