#show: と with を利用して外部のテンプレートを利用する
#set
や#show
で設定したスタイリングはそのファイル内かブロック内で有効になりますが、
これを外部ファイルに記述してそれを#import
して利用することができます。
layout.typ
というファイルを作成し、#let
を使って名前はなんでもよいのですがlayout
を定義します。
そして=
に続くコードブロック内でスタイリングをします。
引数は自由に定義して問題ありません。コロン:
の後に続く要素はデフォルト値になります。
#let layout( body, title: "Typstの使い方", author: "ubanis", pagesize: "a5", column: 1, fontname: "Noto Sans CJK JP", fontsize: 8pt, language: "ja",) = { // ドキュメントの設定 set document( title: _title, author: author, ) // ページの設定 set page( fill: none, paper: pagesize, flipped: false, binding: left, margin: ( top: 25mm, bottom: 15mm, inside: 15mm, outside: 15mm, ), columns: column, numbering: "1", ) // フォントの設定 set text( font: fontname, lang: language, size: fontsize, ) // 本文 {//このコードブロックはなくてもよい body }
}// layoutの終わり
必ず関数の最後の方にbody
を入れてください。
そしてこれを本体の文書から#import
を使って読み込みます。
#import "layout.typ"
の後に続く:
はそのファイルから読み込む関数を指定します。*
は全てを読み込むことを表しています。
特定の関数を読み込むならば#import "layout.typ": layout
のように指定します。
そしてその下で#show
に:
を付けてlayout.with
関数を呼び出します。
#import "layout.typ": *
#show: layout.with( title: "いろいろできそうなTypstで遊ぼう", author: "ubanis", pagesize: "a5", column: 1, fontsize: 9pt, fontname: "BIZ UDPGothic",)
= ここから本文です
`layout`で設定した要素がここに適用されます。この部分全てがlayoutの引数`body`に入っています
- リスト1- リスト2- リスト3
コードにあるように#show: layout.with(...)
以降のファイル内はlayout.typ
の#layout
内で設定したスタイルが適用されます。
他に#include
関数もあり、別ファイルの内容がそのまま同じファイル内に取り込まれるため以下のようにした場合も別ファイルにスタイルが適用されます。
#show: layout.with(...) // 省略
= ここから本文です
`layout`で設定した要素がここに適用されます。この部分全てがlayoutの引数`body`に入っています
- リスト1- リスト2- リスト3
#include "next.typ" //このファイルの中身もlayoutのスタイルが適用される。
layout.typ
のbody
の前にコンテンツを書けばそれはこの本文の前に置かれます。#outline
を使って目次を載せたり引数を活用して表紙を作成したりするのもよいでしょう。
// ここまで省略 // タイトルページ { v(3cm) set text(size: 1.5em) align(center, title) align(bottom+center, author) pagebreak()//改ページ } // 目次 { set text(size:0.9em) outline( title: [目次], depth: 2, indent: 2em, ) pagebreak()//改ページ } // 本文 {//このコードブロックはなくてもよい body }}// layoutの終わり