トップ画像
Typstでレポートを作成しよう 前編【Typstシリーズ その2】

執筆者: ごま

最終更新: 2024/07/01

【Typstでレポートを作成しよう 前編】

はじめに

この記事はTypstシリーズの第2弾です。前回はTypstの導入の方法と基本的な使い方を紹介しました。 今回はTypstを使ってレポートを作成する方法を紹介します。もし前回の記事を読んでいない方は、まずは前回の記事を読んでみてください。

レポートの作成

今回レポートを作成するにあたって習得したい技術は

  • 表紙を作成する
  • 見出しを設定する
  • 図を挿入する
  • 表を挿入する
  • リンクを貼る
  • ページ番号を挿入する

とします。

表紙を作成する

Typstには現在(2024/6/27)の時点では表紙を作成するための関数などは公式ではサポートされていないため、作成には少し手間を掛ける必要があります。 今回作成する表紙の構成は、一般的なレポートで記述が必要と考えられる、次の項目を含むものとします。

  • タイトル
  • 氏名
  • 所属1
  • 所属2
  • 学籍番号
  • 日付

これらの要素を含んだレポート表紙のサンプル画像がこちらです。

この節では上記のような表紙を作ることを目指します。その前に、前回の記事でも少し扱いましたが、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となります。

前半のまとめ

ここまで長くなってしまったので、前半はここまでとします。次回は図を挿入する方法、表を挿入する方法、リンクを貼る方法、ページ番号を挿入する方法を説明します。

参考文献

追記

  • 2024/07/01 フォント設定をfont: ("Harano Aji Mincho","New Computer Modern")としていましたが、正しくはfont: ("New Computer Modern","Harano Aji Mincho")です。ご指摘ありがとうございます。修正いたしました。
取得に失敗しました

2022年度 入部

GitHub