diff --git a/README.md b/README.md index 67fd76c..5b6745e 100644 --- a/README.md +++ b/README.md @@ -3,54 +3,50 @@ # typst-jp-conf-template -**このソースコードはTypst version 0.12で作成しました.** -Typst で日本語論文を書くときのテンプレートです. -Typst の概要について知りたい方は,https://github.com/kimushun1101/How-to-use-typst-for-paper-jp をご覧ください. - +**このソースコードはTypst version 0.12で作成しました。** +Typstで日本語論文を書くときのテンプレートです。 +Typstの概要について知りたい方は、https://github.com/kimushun1101/How-to-use-typst-for-paper-jp をご覧ください。 [vscode-typst.webm](https://github.com/kimushun1101/typst-jp-conf-template/assets/13430937/f227b85b-0266-417b-a24a-54f28f9a71b8) - | ファイル | 意味 | | -------- | ----------------------- | | main.typ | 原稿の Typst ソースコード | | refs.*  | 参考文献ファイル | - | ディレクトリ | 含まれるファイルの種類 | | ------------- | --------------------------- | | figs   | 論文に使用する画像ファイル | | libs   | 体裁を整えるライブラリファイル | - -雰囲気を掴みたい場合には [こちらの Typst Web Application](https://typst.app/project/wXmeFlJ5bhx1awSRuJRiUf) をお試しください. -コンパイル済みの資料を確認したいだけでしたら [こちらの GitHub Pages](https://kimushun1101.github.io/typst-jp-conf-template/typst-jp-conf.pdf) からお読みできます. +雰囲気を掴みたい場合には [こちらの Typst Web Application](https://typst.app/project/wXmeFlJ5bhx1awSRuJRiUf) をお試しください。 +コンパイル済みの資料を確認したいだけでしたら [こちらの GitHub Pages](https://kimushun1101.github.io/typst-jp-conf-template/typst-jp-conf.pdf) からお読みできます。 ## 使用方法 -GitHub に慣れていない方は,GitHub ページの `<>Code▼` から `Download ZIP` して展開してください. -慣れている方は,`git clone` したり `use this template` したり,適宜扱ってください. - -### VS Code を使用する場合 -1. [VS Code](https://code.visualstudio.com/) をインストール. -2. VS Code で `File`→`Open Folder` でこのフォルダーを開く. -3. 推奨拡張機能をインストール. - Extensions (`Ctrl` + `Shift` + `X`) の `Search Extensions in Marketplace` のテキストボックスに `@recommended` と入力すると表示される,以下の拡張機能をinstall をクリック. + +GitHubに慣れていない方は、GitHubページの `<>Code▼` から `Download ZIP` して展開してください。 +慣れている方は、`git clone` したり `use this template` したり、適宜扱ってください。 + +### VS Codeを使用する場合 + +1. [VS Code](https://code.visualstudio.com/) をインストール。 +2. VS Codeで`File`→`Open Folder` でこのフォルダーを開く。 +3. 推奨拡張機能をインストール。 + Extensions (`Ctrl` + `Shift` + `X`) の `Search Extensions in Marketplace` のテキストボックスに `@recommended` と入力すると表示される、以下の拡張機能をinstallをクリック。 - [Tinymist Typst](https://marketplace.visualstudio.com/items?itemName=myriad-dreamin.tinymist) -4. Explorer (`Ctrl` + `Shift` + `E`) から `main.typ` を開いた状態で,画面右上にある Typst Preview の方の ![view-icon](https://github.com/kimushun1101/typst-jp-conf-template/assets/13430937/a44c52cb-d23a-4fdb-ac9f-dc2b47deb40a) アイコンをクリック ( - `Ctrl` + `K` のあと `V`) でプレビューを表示.[トップにある動画](#typst-jp-conf-template) の操作です. -5. `Ctrl` + `S` で PDF を生成. +4. Explorer (`Ctrl` + `Shift` + `E`) から `main.typ` を開いた状態で、画面右上にあるTypst Previewの方の ![view-icon](https://github.com/kimushun1101/typst-jp-conf-template/assets/13430937/a44c52cb-d23a-4fdb-ac9f-dc2b47deb40a) アイコンをクリック ( + `Ctrl` + `K` のあと `V`) でプレビューを表示。[トップにある動画](#typst-jp-conf-template) の操作です。 +5. `Ctrl` + `S` でPDFを生成。 -### 他のエディターで執筆する場合 +### 他の方法で使用する場合 -筆者は試せていませんが,他のエディターでも同様の拡張機能はありそうです. -また,Typst のインストールおよびコンパイルはコマンドラインでも行えます. -お使いの OS によってインストール方法が異なるため,詳細は[別ページ](docs/native-install.md)にまとめました. +[別ページ](docs/compile.md)をご参照ください。 ## Typst Package について -`typst.toml` には、[Typst Packages](https://github.com/typst/packages) にある様式の通りにプロパティが登録されています。これは、Typst Universe にテンプレートファイルを公開し、コンパイラが `typst init` コマンドを実行するためのメタデータです。ただし、現時点では、Typst Universe に当該テンプレートは登録されていません。 +`typst.toml` には、[Typst Packages](https://github.com/typst/packages) にある様式の通りにプロパティが登録されています。これは、Typst Universeにテンプレートファイルを公開し、コンパイラが `typst init` コマンドを実行するためのメタデータです。ただし、現時点では、Typst Universeに当該テンプレートは登録されていません。 -このリポジトリの中身を特定のディレクトリ(フォルダ)に配置することで、ユーザのどのディレクトリからでもテンプレートファイルを作成することができます。特定のディレクトリとは以下の通りです。 +このリポジトリの中身を特定のディレクトリ(フォルダー)に配置することで、ユーザのどのディレクトリからでもテンプレートファイルを作成できます。特定のディレクトリとは以下の通りです。 - ~/.local/share/typst/packages/local/typst-jp-conf-template/{version} # Linux - ~/Library/Application Support/typst/packages/local/typst-jp-conf-template/{version} # macOS (Default Installer) @@ -58,17 +54,19 @@ GitHub に慣れていない方は,GitHub ページの `<>Code▼` から `Dow 上記を適用した状態で、以下のコマンドを入力すると、ディレクトリが初期化されます。 -``` +```sh typst init @local/typst-jp-conf-template ``` ## 参考元 + - (unofficial) IFAC Conference Template for Typst : https://github.com/typst/packages/tree/main/packages/preview/abiding-ifacconf/0.1.0 - charged-ieee : https://github.com/typst/packages/tree/main/packages/preview/charged-ieee/0.1.0 - IEEE style as per the 2021 guidelines, V 01.29.2021. : https://editor.citationstyles.org/styleInfo/?styleId=http%3A%2F%2Fwww.zotero.org%2Fstyles%2Fieee -- GitHub Pages へのデプロイ : https://github.com/yukukotani/typst-coins-thesis +- GitHub Pagesへのデプロイ : https://github.com/yukukotani/typst-coins-thesis ## ライセンス -参考元にならってライセンスを付与しています. -Typst ファイル : MIT No Attribution -CSL ファイル : Creative Commons Attribution-ShareAlike 3.0 License + +参考元にならってライセンスを付与しています。 +Typstファイル : MIT No Attribution +CSLファイル : Creative Commons Attribution-ShareAlike 3.0 License diff --git a/docs/compile.md b/docs/compile.md new file mode 100644 index 0000000..a44d22d --- /dev/null +++ b/docs/compile.md @@ -0,0 +1,71 @@ +# コンパイル方法 + +## VS Codeを使用 + +[README.md](../README.md)をご参照ください。 + +## Typst app にアップロード + +1. [Typst app](https://typst.app/)から `Sign up` でアカウントを作成 +2. `Empty document` から新規プロジェクトを作成 +3. zip展開したファイルおよびフォルダーをアップロード +4. main.typの目のアイコンが閉じていれば、これ![image](https://github.com/user-attachments/assets/bf5dc1c8-78c4-4bb9-9d78-b8ea93271236)をクリック + +## コマンドによるインストール + +Typstのインストール方法は、[TypstのGitHubページ](https://github.com/typst/typst) にある通りですが、以下の3つのパターンが簡単かと思われます。 + +### Windows + +PowerShellを開き以下のコマンドを入力する。 + +```powershell +winget install --id Typst.Typst +``` + +`winget`コマンドが有効でない場合には、Microsoft Storeから[アプリインストーラー](https://apps.microsoft.com/detail/9nblggh4nns1)をインストールすると使えるようになります。 + +### Mac + +1. [Homebrew](https://brew.sh/ja/) をインストール + + ```sh + /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" + ``` + +2. 以下のコマンドを入力 + + ```sh + brew install typst + ``` + +### Rust を通してインストール + +Ubuntuの場合などはこの方法をオススメします。 + +1. [Rust](https://www.rust-lang.org/ja/tools/install) をインストール + + ```sh + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh + ``` + +2. 以下のコマンドを入力する。 + + ```sh + cargo install --git https://github.com/typst/typst --locked typst-cli + ``` + +## コマンドによるコンパイル + +1. 解凍したフォルダーの `main.typ` を編集 +2. PowerShellやターミナルで `main.typ` のあるディレクトリに移り、以下のコマンドで `main.pdf` を生成 + + ```sh + typst compile main.typ + ``` + +3. 編集しながらコンパイルしたい場合には、以下のコマンドも便利です。 + + ```sh + typst watch main.typ + ``` diff --git a/docs/fonts.md b/docs/fonts.md new file mode 100644 index 0000000..9567961 --- /dev/null +++ b/docs/fonts.md @@ -0,0 +1,42 @@ +# フォントの設定 + +[テンプレート関数の引数](../main.typ#L16-L18)で渡すことができます。 + +基本的にWindowsではMSフォント、Macではヒラギノフォントが標準でインストールされているはずです。 +それらに変更していただいても問題ありません。 +Linuxでは、ご自身でインストールする必要があるかもしれません。 +たとえばUbuntuの場合には + +```sh +sudo apt-get update +sudo apt-get install -y fonts-noto fonts-noto-cjk fonts-noto-cjk-extra +``` + +でNotoフォントがインストールできます。 +BIZ UDフォントのインストールは以下で行えます。 + +```sh +# Install BIZUDGothic +curl -L https://github.com/googlefonts/morisawa-biz-ud-gothic/releases/latest/download/BIZUDGothic.zip -o BIZUDGothic.zip +sudo unzip BIZUDGothic.zip -d /usr/local/share/fonts/BIZUDGothic/ +rm -rf BIZUDGothic.zip + +# Install BIZUDMincho +curl -L https://github.com/googlefonts/morisawa-biz-ud-mincho/releases/latest/download/morisawa-biz-ud-mincho-fonts.zip -o morisawa-biz-ud-mincho-fonts.zip +unzip morisawa-biz-ud-mincho-fonts.zip +sudo mkdir -p /usr/local/share/fonts/BIZUDMincho +sudo mv morisawa-biz-ud-mincho-fonts/fonts/ttf/*.ttf /usr/local/share/fonts/BIZUDMincho/ +rm -rf morisawa-biz-ud-mincho-fonts* + +# Update fonts cache +fc-cache -vf +``` + +ちなみにGitHub Actionsで自動生成されるPDFは上記の設定を [.github/workflows/gh-pages.yml](../.github/workflows/gh-pages.yml#L22-L23) で行っております。 + +## フォント選定の考え方 + +1. できるだけデフォルトで入っている +2. 入っていない場合にはインストールが簡単 +3. プロポーショナルフォントが望ましい +4. どのOSでも外観を似せたい diff --git a/docs/native-install.md b/docs/native-install.md deleted file mode 100644 index 164df15..0000000 --- a/docs/native-install.md +++ /dev/null @@ -1,40 +0,0 @@ -# ローカル環境構築 - -## コマンドによるインストール -Typst のインストール方法は,[Typst の GitHubページ](https://github.com/typst/typst) にある通りですが,以下の 3 つのパターンが簡単かと思われます. - -### Windows -PowerShell を開き以下のコマンドを入力する. -```powershell -winget install --id Typst.Typst -``` -`winget` コマンドが有効でない場合には,Microsoft Store から [アプリインストーラー](https://apps.microsoft.com/detail/9nblggh4nns1) をインストールすると使えるようになります. - -### Mac -[Homebrew](https://brew.sh/ja/) を導入して,以下のコマンドを入力する. -```sh -brew install typst -``` -[このページ](https://brew.sh/ja/) の通りですが,Homebrew のインストールは以下のコマンドで行えます. -```sh -/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" -``` - -### Rust を通してインストール -Ubuntu の場合などはこの方法をオススメします. -[Rust](https://www.rust-lang.org/ja/tools/install) をインストールして,以下のコマンドを入力する. -```sh -cargo install --git https://github.com/typst/typst --locked typst-cli -``` -[このページ](https://www.rust-lang.org/ja/tools/install) の通りですが,Rust のインストールは以下のコマンドで行えます. -```sh -curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -``` - -## コマンドによるコンパイル -1. [Typst](https://typst.app/) をインストール. -2. 解凍したフォルダーの `main.typ` を編集. -3. PowerShell やターミナルで `main.typ` のあるディレクトリに移り,以下のコマンドで `main.pdf` を生成. - ``` - typst compile main.typ - ``` diff --git a/docs/setting-fonts.md b/docs/setting-fonts.md deleted file mode 100644 index 4868d88..0000000 --- a/docs/setting-fonts.md +++ /dev/null @@ -1,52 +0,0 @@ -# フォントの設定 - -lib.typ で設定されております. -例えば RSJ の場合は [libs/rsj-conf/lib.typ](../libs/rsj-conf/lib.typ#L5-L7) にあります. - -基本的に Windows では MS フォント,Mac ではヒラギノフォントが自動的に選択されるはずです. -Linux では,フォントがインストールされておりませんので,ご自身でインストールする必要があるかもしれません. -例えば Ubuntu の場合には -``` -sudo apt-get update -sudo apt-get install -y fonts-noto fonts-noto-cjk fonts-noto-cjk-extra -``` -で Noto フォントがインストールできます. -BIZ UD フォントのインストールは -``` -# Install BIZUDGothic -curl -L https://github.com/googlefonts/morisawa-biz-ud-gothic/releases/latest/download/morisawa-biz-ud-font-gothics.zip -o morisawa-biz-ud-font-gothics.zip -unzip morisawa-biz-ud-font-gothics.zip -sudo mkdir /usr/local/share/fonts/BIZUDGothic -sudo mv morisawa-biz-ud-font-gothics/fonts/ttf/*.ttf /usr/local/share/fonts/BIZUDGothic/ -rm -rf morisawa-biz-ud-font-gothics* - -# Install BIZUDMincho -curl -L https://github.com/googlefonts/morisawa-biz-ud-mincho/releases/latest/download/morisawa-biz-ud-font-minchos.zip -o morisawa-biz-ud-font-minchos.zip -unzip morisawa-biz-ud-font-minchos.zip -sudo mkdir /usr/local/share/fonts/BIZUDMincho -sudo mv morisawa-biz-ud-font-minchos/fonts/ttf/*.ttf /usr/local/share/fonts/BIZUDMincho/ -rm -rf morisawa-biz-ud-font-minchos* - -# Update fonts cache -fc-cache -vf -``` - - - -ちなみに GitHub Actions で自動生成される PDF は上記の設定を [.github/workflows/gh-pages.yml](../.github/workflows/gh-pages.yml#L22-L23) で行っております. - -以下,本文より引用. - -> ここで,ゴシック体とは "MS PGothic", "Hiragino Kaku Gothic Pro", "IPAexGothic", "Noto Sans CJK JP" のいずれか,明朝体とは ""MS PMincho", "Hiragino Mincho Pro", "IPAexMincho", "Noto Serif CJK JP" のいずれかで見つかるものが採用されます. -> これらのフォントがお使いのコンピュータになければインストールするか,代わりに使いたいフォントがあればソースコードの方に追加してください. -> 以下のコマンドで使用可能なフォント一覧を確認できます. -> ```sh -> typst fonts -> ``` - -## フォント選定の理由 - -1. できるだけデフォルトで入っている -2. 入っていない場合にはインストールが簡単 -3. プロポーショナルフォントが望ましい -4. どの OS でも外観を似せたい diff --git a/libs/mscs/lib.typ b/libs/mscs/lib.typ index 319eccd..fae0714 100644 --- a/libs/mscs/lib.typ +++ b/libs/mscs/lib.typ @@ -1,19 +1,39 @@ -// Workaround for the lack of an `std` scope. -#let std-bibliography = bibliography +#let conference-name = "制御部門マルチシンポジウム" +#let font-size-default = 10pt +#let font-size-heading = 11pt +#let state-font-gothic = state("gothic", ("BIZ UDPGothic", "MS PGothic", "Hiragino Kaku Gothic Pro", "IPAexGothic", "Noto Sans CJK JP")) + +// import third-party packages +#import "@preview/ctheorems:1.1.3": thmplain, thmproof, thmrules +#import "@preview/codly:1.1.1": codly-init + +// Theorem environments +#let thmjp = thmplain.with(base: {}, separator: [#h(0.5em)], titlefmt: strong, inset: (top: 0em, left: 0em)) +#let definition = thmjp("definition", context{text(font: state-font-gothic.get())[定義]}) +#let lemma = thmjp("lemma", context{text(font: state-font-gothic.get())[補題]}) +#let theorem = thmjp("theorem", context{text(font: state-font-gothic.get())[定理]}) +#let corollary = thmjp("corollary", context{text(font: state-font-gothic.get())[系]}) +#let proof = thmproof("proof", context{text(font: state-font-gothic.get())[証明]}, separator: [#h(0.9em)], titlefmt: strong, inset: (top: 0em, left: 0em)) #let mscs( - title-ja: [タイトル], + title-ja: [日本語タイトル], + title-en: [], authors-ja: [著者], - title-en: "", - authors-en: "", + authors-en: [], abstract: none, keywords: (), - bibliography: none, - font-gothic: "BIZ UDPGothic", - font-mincho: "BIZ UDPMincho", + font-gothic: "Noto Sans CJK JP", + font-mincho: "Noto Serif CJK JP", font-latin: "New Computer Modern", body ) = { + // Set the font for headings. + state-font-gothic.update(font-gothic) + + // Enable packages. + show: thmrules.with(qed-symbol: $square$) + show: codly-init.with() + // Set document metadata. set document(title: title-ja) @@ -22,8 +42,8 @@ paper: "a4", margin: (top: 20mm, bottom: 27mm, x: 20mm) ) - set text(size: 10pt, font: font-mincho) - set par(leading: 0.55em, first-line-indent: 1em, justify: true, spacing: 0.55em) + set text(font-size-default, font: font-mincho) + set par(leading: 0.5em, first-line-indent: 1em, justify: true, spacing: 0.6em) show "、": "," show "。": "." @@ -32,58 +52,48 @@ show math.equation: set block(spacing: 0.55em) // Configure appearance of equation references + // See https://typst.app/docs/reference/model/ref/ show ref: it => { if it.element != none and it.element.func() == math.equation { - // Override equation references. link(it.element.location(), numbering( it.element.numbering, ..counter(math.equation).at(it.element.location()) )) } else { - // Other references as usual. it } } // Configure lists. - set enum(indent: 10pt, body-indent: 9pt) - set list(indent: 10pt, body-indent: 9pt) + set enum(indent: 1em) + set list(indent: 1em) // Configure headings. - set heading(numbering: "1.") + set heading(numbering: "1.1") show heading: it => { // Find out the final number of the heading counter. let levels = counter(heading).get() - let deepest = if levels != () { - levels.last() - } else { - 1 - } - if it.level == 1 [ - // First-level headings are centered smallcaps. + if it.level == 1 { // We don't want to number of the acknowledgment section. - #set par(first-line-indent: 0pt) - #let is-ack = it.body in ([謝辞], [Acknowledgment], [Acknowledgement]) - #set text(if is-ack { 11pt } else { 11pt }, font: font-gothic) - #v(20pt, weak: true) - #if it.numbering != none and not is-ack { + set par(first-line-indent: 0pt) + set text(font-size-heading, font: font-gothic) + v(10pt) + if it.numbering != none and not it.body in ([謝辞], [Acknowledgment], [Acknowledgement]) { numbering(it.numbering, ..levels) - h(8pt, weak: true) + h(1em) } - #it.body - #v(8pt, weak: true) - ] else [ + it.body + } else { // The other level headings are run-ins. - #set par(first-line-indent: 0pt) - #set text(10pt, weight: 400) - #v(8pt, weak: true) - #if it.numbering != none { + set par(first-line-indent: 0pt) + set text(font-size-default, font: font-gothic) + v(5pt) + if it.numbering != none { numbering(it.numbering, ..levels) - h(8pt, weak: true) + h(1em) } - #it.body - #v(10pt, weak: true) - ] + it.body + } } // Configure figures. @@ -118,7 +128,7 @@ #set par(first-line-indent: 0pt) *Abstract--* #h(0.5em) #abstract #v(1em) - *Key Words:* #keywords.join(", ") + *Key Words:* #h(0.5em) #keywords.join(", ") ], [] ) @@ -128,14 +138,28 @@ // Start two column mode and configure paragraph properties. show: columns.with(2, gutter: 8mm) + // Configure Bibliography. + set bibliography(title: text(font-size-heading)[参考文献], style: "sice.csl") + show bibliography: it => [ + #set text(9pt, font: font-mincho) + #show regex("[0-9a-zA-Z]"): set text(font: font-latin) + #it + ] + // Display the paper's contents. body +} - // Display bibliography. - if bibliography != none { - show std-bibliography: set text(9pt) - show regex("[0-9a-zA-Z]"): set text(font: font-latin) - set std-bibliography(title: align(center, text(11pt)[参 考 文 献]), style: "sice.csl") - bibliography - } -} \ No newline at end of file +// Appendix +#let appendix(body) = { + set heading(numbering: "A.1", supplement: [付録]) + counter(heading).update(0) + counter(figure.where(kind: image)).update(0) + counter(figure.where(kind: table)).update(0) + set figure(numbering: it => { + [#numbering("A", counter(heading).get().at(0)).#it] + }) + v(20pt, weak: true) + context(text(font-size-heading, font: state-font-gothic.get(), weight: "bold")[付録]) + body +} diff --git a/libs/rengo/lib.typ b/libs/rengo/lib.typ index 7e8ec0f..52f8628 100644 --- a/libs/rengo/lib.typ +++ b/libs/rengo/lib.typ @@ -1,19 +1,39 @@ -// Workaround for the lack of an `std` scope. -#let std-bibliography = bibliography +#let conference-name = "自動制御連合講演会" +#let font-size-default = 10pt +#let font-size-heading = 11pt +#let state-font-gothic = state("gothic", ("BIZ UDPGothic", "MS PGothic", "Hiragino Kaku Gothic Pro", "IPAexGothic", "Noto Sans CJK JP")) + +// import third-party packages +#import "@preview/ctheorems:1.1.3": thmplain, thmproof, thmrules +#import "@preview/codly:1.1.1": codly-init + +// Theorem environments +#let thmjp = thmplain.with(base: {}, separator: [#h(0.5em)], titlefmt: strong, inset: (top: 0em, left: 0em)) +#let definition = thmjp("definition", context{text(font: state-font-gothic.get())[定義]}) +#let lemma = thmjp("lemma", context{text(font: state-font-gothic.get())[補題]}) +#let theorem = thmjp("theorem", context{text(font: state-font-gothic.get())[定理]}) +#let corollary = thmjp("corollary", context{text(font: state-font-gothic.get())[系]}) +#let proof = thmproof("proof", context{text(font: state-font-gothic.get())[証明]}, separator: [#h(0.9em)], titlefmt: strong, inset: (top: 0em, left: 0em)) #let rengo( - title-ja: [タイトル], + title-ja: [日本語タイトル], + title-en: [], authors-ja: [著者], - title-en: "", - authors-en: "", + authors-en: [], abstract: none, keywords: (), - bibliography: none, - font-gothic: "BIZ UDPGothic", - font-mincho: "BIZ UDPMincho", + font-gothic: "Noto Sans CJK JP", + font-mincho: "Noto Serif CJK JP", font-latin: "New Computer Modern", body ) = { + // Set the font for headings. + state-font-gothic.update(font-gothic) + + // Enable packages. + show: thmrules.with(qed-symbol: $square$) + show: codly-init.with() + // Set document metadata. set document(title: title-ja) @@ -22,9 +42,8 @@ paper: "a4", margin: (top: 20mm, bottom: 27mm, x: 20mm) ) - set text(size: 10pt, font: font-mincho) - // show regex("[0-9a-zA-Z]"): set text(font: "New Computer Modern Math") - set par(leading: 0.55em, first-line-indent: 1em, justify: true, spacing: 0.55em) + set text(font-size-default, font: font-mincho) + set par(leading: 0.6em, first-line-indent: 1em, justify: true, spacing: 0.8em) show "、": "," show "。": "." @@ -33,58 +52,48 @@ show math.equation: set block(spacing: 0.55em) // Configure appearance of equation references + // See https://typst.app/docs/reference/model/ref/ show ref: it => { if it.element != none and it.element.func() == math.equation { - // Override equation references. link(it.element.location(), numbering( it.element.numbering, ..counter(math.equation).at(it.element.location()) )) } else { - // Other references as usual. it } } // Configure lists. - set enum(indent: 10pt, body-indent: 9pt) - set list(indent: 10pt, body-indent: 9pt) + set enum(indent: 1em) + set list(indent: 1em) // Configure headings. - set heading(numbering: "1.") + set heading(numbering: "1.1") show heading: it => { // Find out the final number of the heading counter. let levels = counter(heading).get() - let deepest = if levels != () { - levels.last() - } else { - 1 - } - if it.level == 1 [ - // First-level headings are centered smallcaps. + if it.level == 1 { // We don't want to number of the acknowledgment section. - #set par(first-line-indent: 0pt) - #let is-ack = it.body in ([謝辞], [Acknowledgment], [Acknowledgement]) - #set text(if is-ack { 11pt } else { 11pt }, font: font-gothic) - #v(20pt, weak: true) - #if it.numbering != none and not is-ack { - numbering("1.", ..levels) - h(8pt, weak: true) + set par(first-line-indent: 0pt) + set text(font-size-heading, font: font-gothic) + v(10pt) + if it.numbering != none and not it.body in ([謝辞], [Acknowledgment], [Acknowledgement]) { + numbering(it.numbering, ..levels) + h(1em) } - #it.body - #v(13.75pt, weak: true) - ] else [ + it.body + } else { // The other level headings are run-ins. - #set par(first-line-indent: 0pt) - #set text(10pt, weight: 400) - #v(10pt, weak: true) - #if it.numbering != none { - numbering("1.", ..levels) - h(8pt, weak: true) + set par(first-line-indent: 0pt) + set text(font-size-default, font: font-gothic) + v(5pt) + if it.numbering != none { + numbering(it.numbering, ..levels) + h(1em) } - #it.body - #v(10pt, weak: true) - ] + it.body + } } // Configure figures. @@ -129,14 +138,28 @@ // Start two column mode and configure paragraph properties. show: columns.with(2, gutter: 8mm) + // Configure Bibliography. + set bibliography(title: text(font-size-heading)[参考文献], style: "rengo.csl") + show bibliography: it => [ + #set text(9pt, font: font-mincho) + #show regex("[0-9a-zA-Z]"): set text(font: font-latin) + #it + ] + // Display the paper's contents. body +} - // Display bibliography. - if bibliography != none { - show std-bibliography: set text(9pt) - show regex("[0-9a-zA-Z]"): set text(font: font-latin) - set std-bibliography(title: text(12pt)[参考文献], style: "rengo.csl") - bibliography - } +// Appendix +#let appendix(body) = { + set heading(numbering: "A.1", supplement: [付録]) + counter(heading).update(0) + counter(figure.where(kind: image)).update(0) + counter(figure.where(kind: table)).update(0) + set figure(numbering: it => { + [#numbering("A", counter(heading).get().at(0)).#it] + }) + v(20pt, weak: true) + context(text(font-size-heading, font: state-font-gothic.get(), weight: "bold")[付録]) + body } diff --git a/libs/rsj-conf/lib.typ b/libs/rsj-conf/lib.typ index 8e80f15..f1cc71a 100644 --- a/libs/rsj-conf/lib.typ +++ b/libs/rsj-conf/lib.typ @@ -1,6 +1,7 @@ +#let conference-name = "日本ロボット学会学術講演会" #let font-size-default = 10pt #let font-size-heading = 11pt -#let state-font-gothic = state("gothic", "BIZ UDPGothic") +#let state-font-gothic = state("gothic", ("BIZ UDPGothic", "MS PGothic", "Hiragino Kaku Gothic Pro", "IPAexGothic", "Noto Sans CJK JP")) // import third-party packages #import "@preview/ctheorems:1.1.3": thmplain, thmproof, thmrules @@ -22,15 +23,15 @@ authors-en: [], abstract: none, keywords: (), - font-gothic: "BIZ UDPGothic", - font-mincho: "BIZ UDPMincho", + font-gothic: "Noto Sans CJK JP", + font-mincho: "Noto Serif CJK JP", font-latin: "New Computer Modern", body ) = { // Set the font for headings. state-font-gothic.update(font-gothic) - // Enable ctheorems. + // Enable packages. show: thmrules.with(qed-symbol: $square$) show: codly-init.with() @@ -42,8 +43,8 @@ paper: "a4", margin: (top: 20mm, bottom: 27mm, x: 20mm) ) - set text(size: font-size-default, font: font-mincho) - set par(leading: 0.55em, first-line-indent: 1em, justify: true, spacing: 0.55em) + set text(font-size-default, font: font-mincho) + set par(leading: 0.5em, first-line-indent: 1em, justify: true, spacing: 0.6em) show "、": "," show "。": "." @@ -65,8 +66,8 @@ } // Configure lists. - set enum(indent: font-size-default) - set list(indent: font-size-default) + set enum(indent: 1em) + set list(indent: 1em) // Configure headings. set heading(numbering: "1.") @@ -80,17 +81,17 @@ v(10pt) if it.numbering != none and not it.body in ([謝辞], [Acknowledgment], [Acknowledgement]) { numbering(it.numbering, ..levels) - h(5pt) + h(1em) } it.body } else { // The other level headings are run-ins. set par(first-line-indent: 0pt) - set text(font-size-default, weight: 400) + set text(font-size-default, font: font-gothic) v(5pt) if it.numbering != none { numbering(it.numbering, ..levels) - h(8pt, weak: true) + h(1em) } it.body } @@ -150,4 +151,4 @@ v(20pt, weak: true) context(text(font-size-heading, font: state-font-gothic.get(), weight: "bold")[付  録]) body -} \ No newline at end of file +} diff --git a/main.typ b/main.typ index 73034a5..1348f7b 100644 --- a/main.typ +++ b/main.typ @@ -1,85 +1,82 @@ // MIT No Attribution // Copyright 2024 Shunsuke Kimura -// Set the Fonts -// #let gothic = ("BIZ UDPGothic", "MS PGothic", "Hiragino Kaku Gothic Pro", "IPAexGothic", "Noto Sans CJK JP") -// #let mincho = ("BIZ UDPMincho", "MS PMincho", "Hiragino Mincho Pro", "IPAexMincho", "Noto Serif CJK JP") -// #let latin = ("Times New Roman", "New Computer Modern") -// This may warn of missing font families. -// Warnings can be resolved by setting the following for each OS. - -// example 1: Windows -// #let gothic = ("MS PGothic") -// #let mincho = ("MS PMincho") -// #let latin = ("Times New Roman") - -// example 2: Mac OS -// #let gothic = ("Hiragino Kaku Gothic Pro") -// #let mincho = ("Hiragino Mincho Pro") -// #let latin = ("Times New Roman") - -// example 3: Linux or Typst app -#let gothic = ("Noto Sans CJK JP") -#let mincho = ("Noto Serif CJK JP") -#let latin = ("New Computer Modern") - // Select the Template -#import "libs/rsj-conf/lib.typ": rsj-conf as temp, definition, lemma, theorem, corollary, proof, appendix -// #import "libs/rengo/lib.typ": rengo as temp, definition, lemma, theorem, corollary, proof, appendix -// #import "libs/mscs/lib.typ": mscs as temp, definition, lemma, theorem, corollary, proof, appendix +// #import "libs/mscs/lib.typ": mscs as temp, definition, lemma, theorem, corollary, proof, appendix, conference-name +#import "libs/rengo/lib.typ": rengo as temp, definition, lemma, theorem, corollary, proof, appendix, conference-name +// #import "libs/rsj-conf/lib.typ": rsj-conf as temp, definition, lemma, theorem, corollary, proof, appendix, conference-name #show: temp.with( title-ja: [Typst を使った国内学会論文の書き方 \ - 国内学会予稿集に似せたフォーマットの作成 - ], title-en: [How to Write a Conference Paper in Japanese], - authors-ja: [◯ 著者姓1 著者名1、著者姓2 著者名2(○○○大学),著者姓3 著者名3 (□□□株式会社)], + authors-ja: [◯ 著者姓1 著者名1、著者姓2 著者名2(○○○大学)、著者姓3 著者名3 (□□□株式会社)], authors-en: [\*A. First, B. Second (○○○ Univ.), and C. Third (□□□ Corp.)], abstract: [#lorem(80)], keywords: ([Typst], [conference paper writing], [manuscript format]), - // bibliography: bibliography("refs.yml", full: false), - font-gothic: gothic, - font-mincho: mincho, - font-latin: latin + font-gothic: "Noto Sans CJK JP", + font-mincho: "Noto Serif CJK JP", + font-latin: "New Computer Modern" + // The following settings may warn of missing font families. Please set a font that exists in your environment as an alternative. + // 以下の設定では存在しないフォントファミリーが含まれていると警告が出ます。環境に存在するフォントを設定してください。 + // font-gothic: ("BIZ UDPGothic", "MS PGothic", "Hiragino Kaku Gothic Pro", "IPAexGothic", "Noto Sans CJK JP"), + // font-mincho: ("BIZ UDPMincho", "MS PMincho", "Hiragino Mincho Pro", "IPAexMincho", "Noto Serif CJK JP"), + // font-latin: ("Times New Roman", "New Computer Modern") ) = はじめに -#text("これは非公式のサンプルです。", fill: rgb(red), weight: "bold") -適宜投稿先の規定をご確認ください。 +これは#conference-name;のサンプルを参考に作成しています。 +#text([使用の際には適宜投稿先の規定を必ずご確認ください。] +, fill: rgb(red), weight: "bold") 発表論文原稿をPDFでご執筆いただき、学会のホームページにアップロードしてください。 -このファイルはこのテンプレートの使い方を示しており,同時に発表論文の見本でもあります. -執筆の時は以下の説明をよく読み,執筆要項に従ったフォーマットでご提出ください. -アップロードした PDF がそのまま公開されます. -というような説明が書かれるであろうテンプレートを作ってみました. -本稿では,このテンプレートファイルの使い方および Typst による執筆作業の概要について解説します. -この原稿のソースコードは https://github.com/kimushun1101/typst-jp-conf-template で公開しております. -Typst の概要についてお知りになりたい方は,https://github.com/kimushun1101/How-to-use-typst-for-paper-jp にもスライド形式の資料を用意しておりますので,ぜひこちらもご覧ください. - -= テンプレートファイルの使い方 -GitHub に慣れていればテンプレートリポジトリを使用して,新しいリポジトリを作成してクローン.不慣れであれば zip ダウンロードして展開してください. - -テンプレートファイルは以下の2つの方法で実行できることを確認しています. -+ VS Code とその拡張機能を使う -+ 好みのエディターで編集した後 CLI (Command Line Interface) でビルドする +このファイルはこのテンプレートの使い方を示しており、同時に発表論文の見本でもあります。 +執筆の時は以下の説明をよく読み、執筆要項に従ったフォーマットでご提出ください。 +アップロードしたPDFがそのまま公開されます。 +というような説明が書かれるであろうテンプレートを作ってみました。 +本稿では、このテンプレートファイルの使い方および Typst による執筆作業の概要について解説します。 +この原稿のソースコードは https://github.com/kimushun1101/typst-jp-conf-template で公開しております。 +Typst の概要についてお知りになりたい方は、https://github.com/kimushun1101/How-to-use-typst-for-paper-jp にもスライド形式の資料を用意しておりますので、ぜひこちらもご覧ください。 + += テンプレートファイルの使い方 +GitHub に慣れていればテンプレートリポジトリを使用して、新しいリポジトリを作成してクローン。不慣れであれば zip ダウンロードして展開してください。 + +テンプレートファイルは以下の3つの方法で実行できることを確認しています。 ++ VS Code とその拡張機能を使う。 ++ Typst app にアップロードする。 ++ CLI (Command Line Interface) でコンパイルする。 +もちろん他のエディターの拡張機能など、異なる方法での執筆も可能ですが、ここではこの3つの方法について説明します。 == Visual Studio Code による執筆 -コマンドライン入力に忌避感のある方は(またそうでない方も) Visual Studio Code (VS Code) の使用をオススメします. -VS Code の拡張機能である Tinymist Typst をインストールすれば,編集中においても現在の出力結果を常に確認することができます. -また,`.vscode/settings.json` にて保存と同時に PDF ファイルが作成される設定にしております. - -== Typst CLI によるビルド +エディターソフトのこだわりが無い方にはVisual Studio Code (VS Code)の使用をオススメします。 +VS Code の拡張機能であるTinymist Typstをインストールすれば、そのPreview機能によって、編集中においても現在の出力結果を常に確認できます。 +インストールされていない状態でこのディレクトリをVS Code で開くと、拡張機能のRecommendationsにTinymist Typstが表示されるのでインストールしてください。 +表示されない場合には、VS Codeの拡張機能検索からインストールしてください。 +また、`.vscode/settings.json` にて保存と同時にPDFファイルが作成される設定にしております。 + +== Typst app へのアップロード +Typst appはブラウザ上で動作するため、OSに依存しません。 +有料のプランもありますが、無料プランでも十分な機能が使えます。 +たとえば、URLを共有して他の人と共同編集することも可能です。 +Typst appのページ https://typst.app/ から`Sign up`でアカウントを作成してください。 +ご自身のページを開いたら`Empty document`から新規プロジェクトを作成できます。 +`git clone`やzip展開したファイルおよびフォルダーをアップロードしてください。 + +== Typst CLI でコンパイル +ターミナルでのコマンド操作でコンパイルする方法もあります。 +何か不具合があるときには、こちらでのコンパイルが一番確実です。 === インストール -- Windows の場合\ Windows PowerShell から以下のコマンドでインストールできる. -```sh +- Windows の場合\ Windows PowerShell から以下のコマンドでインストールできます。 +```powershell winget install --id Typst.Typst ``` -- Mac の場合\ Homebrew を使ってインストールできる. +- Mac の場合\ Homebrew を使ってインストールできます。 ```sh # Homebrew のインストール /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # Typst のインストール brew install typst ``` -- Rust からインストール\ たとえば Ubuntu の場合は,Rust の cargo を使ってインストールする方法が簡単と思われます. +- Rustを通じてインストール\ たとえばUbuntuなど他のOSの場合は、Rustのcargoを使ってインストールする方法が簡単です。 ```sh # Rust のインストール curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh @@ -87,49 +84,40 @@ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh cargo install --git https://github.com/typst/typst --locked typst-cli ``` -=== ビルド -シェルで対象のディレクトリに移り +=== コンパイル +ターミナルで対象のディレクトリに移り ```sh typst compile main.typ ``` -とコマンドすれば main.pdf をビルドできます. - -== このパッケージが使えない場合 -ビルドができない場合などのトラブルがございましたら,https://github.com/kimushun1101/typst-jp-conf-template/issues でご相談ください. -以下に対応方法を記載します. - -=== パッケージの自動インストールができない場合 -大学や会社などのプロキシ環境によっては,パッケージの自動インストールがブロックされてしまう可能性がある. -その場合には Tyspt Universe から圧縮ファイルを手動でダウンロードする. -本サンプルで使用しているパッケージを入手できるリンクは以下のとおりである. -- https://typst.app/universe/package/sourcerer -- https://typst.app/universe/package/ctheorems -これらの圧縮ファイルを main.typ と同じフォルダーにある libs フォルダーの中に展開した後,以下のようにコメントアウトを付け替えて,それぞれの lib.typ ファイルへのパスを指定する. -```typ - // ソースコードブロックを表示するためのパッケージ - #import "@preview/codly:1.1.1": codly-init - #show: codly-init.with() - - // 定理環境 - // #import "@preview/ctheorems:1.1.3": thmplain, thmproof, thmrules - #import "libs/ctheorems-1.1.3/lib.typ": thmplain, thmproof, thmrules // 2.3.1 を参照 +とコマンドすればmain.pdfをビルドできます。 +編集しながら自動でコンパイルしたい場合は +```sh +typst watch main.typ ``` +というコマンドもあります。 -= 原稿の体裁 +== このパッケージが使えない場合 +コンパイルができない場合などのトラブルがございましたら、https://github.com/kimushun1101/typst-jp-conf-template/issues でご相談ください。 + += 原稿の体裁 +このテンプレートのソースコードはcharge-ieeeとabiding-ifacconfなどのテンプレートを参考にして作成しました。 +テンプレートの検索はTypst Universe https://typst.app/universe ででき、そこで掲載されているテンプレートのソースコードは https://github.com/typst/packages/tree/main/packages/preview で見ることができます。 +ここで実行しているテンプレートファイルは "libs/学会名/" に格納しています。 +体裁は2023年に公開されていた各学会のフォーマットに近づけました。 +#context{ + show ",": "、" + show ".": "。" + [句読点は全角の "," と "." を使用します.main.typ に記載した"、"や"。"は自動で変換されます.] +} == レイアウトとフォント -用紙サイズは A4,縦250 mm,横170 mm の枠内に収まるようにしてください. -余白は,上 20 mm,下27 mm,左20 mm,右20 mm とします. -タイトル,著者,アブストラクトはシングルコラム,本文はダブルコラムです. -アブストラクトは左右に 0.7 cm 余白を取っています. - -フォントの設定は @tab:fonts の通りです. -ここで,ゴシック体とは "BIZ UDPGothic", "MS PGothic", "Hiragino Kaku Gothic Pro", "IPAexGothic", "Noto Sans CJK JP" のいずれか,明朝体とは "BIZ UDPMincho", "MS PMincho", "Hiragino Mincho Pro", "IPAexMincho", "Noto Serif CJK JP" のいずれかで見つかるものが採用されます. -これらのフォントがお使いのコンピュータになければインストールするか,代わりに使いたいフォントがあればソースコードの方に追加してください. -以下のコマンドで使用可能なフォント一覧を確認できます. -```sh -typst fonts -``` +用紙サイズは A4、縦250 mm、横170 mm の枠内に収まるようにしています。 +余白は、上 20 mm、下27 mm、左20 mm、右20 mm とします。 +タイトル、著者、アブストラクトはシングルコラム、本文はダブルコラムです。 +アブストラクトは左右に 0.7 cm 余白を取っています。 + +フォントの設定は @tab:fonts の通りです。 +ここで、ゴシック体や明朝体の具体的なフォントファミリーは @sec:info のコード内で設定しています。 #figure( placement: bottom, @@ -146,124 +134,114 @@ typst fonts [#text(18pt, "タイトル")], [18], [ゴシック体], [#text(12pt, "著者名")], [12], [ゴシック体], [#text(12pt, "章タイトル")], [12], [ゴシック体], - [節,小節,本文], [10], [明朝体], + [節、小節、本文], [10], [明朝体], [#text(9pt, "参考文献")], [9], [明朝体], ) ) -今回使用しているテンプレートは "rsj-conf/lib.typ" に記載されています. -このテンプレートのソースコードは charge-ieee と abiding-ifacconf というテンプレートを参考にして,第41回日本ロボット学会学術講演会のフォーマットに近づけて作成しました. -テンプレートの検索は Typst Universe https://typst.app/universe ででき,そこで掲載されているテンプレートのソースコードは https://github.com/typst/packages/tree/main/packages/preview で見ることができます. - == 数式・図・表 -数式番号は @eq:system のように数式の右側に, 図のタイトルは "@fig:quadratic タイトル名"のように図の下部に,表のタイトルは "@tab:fonts タイトル名" のように図の上部につきます. -投稿先に応じてキャプションの言語は日本語や英語で指定されるかと思いますので,指示に従ってください. +数式番号は @eq:system のように数式の右側に、図のタイトルは "@fig:quadratic タイトル名"のように図の下部に、表のタイトルは "@tab:fonts タイトル名" のように図の上部につきます。 +投稿先に応じてキャプションの言語は日本語や英語で指定されるかと思いますので、指示に従ってください。 == 定理環境 -以下は,theorem 環境の使用例です. -現バージョンでは日本語に太字が使えない変わりに,フォントをゴシックにすることでそれっぽく見せています. +以下はtheorem環境の使用例です。 +定理などのタイトルフォントをゴシックにしています。 #definition("用語 A")[ - 用語 A の定義を書きます. + 用語 A の定義を書きます。 ] #lemma[ - 補題を書きます.タイトルは省略することもできます. + 補題を書きます。タイトルは省略することもできます。 ] #lemma("補題 C")[ - 補題を書きます.番号は定義や補題ごとに 1 からカウントします. + 補題を書きます。番号は定義や補題ごとに 1 からカウントします。 ] #theorem("定理 D")[ - ここに定理を書きます. + ここに定理を書きます。 ] #corollary[ - 系を書きます.@def:definition1 のように,ラベルで参照することもできます. + 系を書きます。@def:definition1 のように、ラベルで参照することもできます。 ] #proof([@thm:theorem1 の証明])[ - 証明を書きます.証明終了として□印をつけています. + 証明を書きます。証明終了として□印をつけています。 ] == 特殊な章 -謝辞と参考文献は他の章とは異なり,章番号が自動でつかないように設定しています. -また,参考文献は "参 考 文 献" とスペースで区切り,中央揃えにしています. +謝辞と参考文献は他の章とは異なり、章番号が自動でつかないように設定しています。 +また、参考文献は "参 考 文 献" とスペースで区切り、中央揃えとなります。 +付録は "A" のように番号の代わりにアルファベットがつくようにしています。 -= 編集の仕方 += 編集の仕方 -== 論文情報の編集 -main.typ の文頭にある以下のコードを解説します. +== 論文情報の編集 +main.typ の文頭にある以下のコードを解説します。 ```typ - #import "libs/rsj-conf/lib.typ": rsj-conf - #show: rsj-conf.with( - title: [Typst を使った国内学会論文の書き方 \ - 国内学会予稿集に似せたフォーマットの作成 - ], - authors: [◯ 著者姓1 著者名1,著者姓2 著者名2(○○○大学),著者姓3 著者名3 (□□□株式会社)], - abstract: [#lorem(80)], - bibliography: bibliography("refs.yml", full: false) - ) +// Select the Template +#import "libs/mscs/lib.typ": mscs as temp, definition, lemma, theorem, corollary, proof, appendix +// #import "libs/rengo/lib.typ": rengo as temp, definition, lemma, theorem, corollary, proof, appendix +// #import "libs/rsj-conf/lib.typ": rsj-conf as temp, definition, lemma, theorem, corollary, proof, appendix + +#show: temp.with( + title-ja: [Typst を使った国内学会論文の書き方 \ - 国内学会予稿集に似せたフォーマットの作成 - ], + title-en: [How to Write a Conference Paper in Japanese], + authors-ja: [◯ 著者姓1 著者名1、著者姓2 著者名2(○○○大学)、著者姓3 著者名3 (□□□株式会社)], + authors-en: [\*A. First, B. Second (○○○ Univ.), and C. Third (□□□ Corp.)], + abstract: [#lorem(80)], + keywords: ([Typst], [conference paper writing], [manuscript format]), + font-gothic: "Noto Sans CJK JP", + font-mincho: "Noto Serif CJK JP", + font-latin: "New Computer Modern" ``` -1 行目はこの原稿の体裁を設定するためのソースコードを import しています. -これは "libs" ディレクトリ以下にあります. -2 行目は,ソースコードやコマンドなどを綺麗に表示するための "code" 関数を呼び出すために import しています. -こちらは "libs" ディレクトリにはありません. -Typst Universe から自動でインストールされたものを使っております. -その他,Typst Universe で使いたい packages があるとここで同様に import しておくとよいでしょう. -// 今回 rsj-conf という論文体裁手元のファイルを使用しておりますが,テンプレートファイルも登録することができます. -// 将来的には Typst Universe に登録しようと思います. -4 行目では,1行目で読み込んだ関数を使用して,原稿体裁を作成しています. -5 行目ではタイトルを,6行目では著者一覧を,7 行目ではアブストラクトを記載します. -各内容の中で改行をしたい場合には,`\` で改行してください. -`lorem` 関数は英文のダミーテキストを作成してくれる関数です. -8 行目の参考文献については本章の最後の節で説明します. - -また,異なるテンプレートも用意してみました. -コメントアウトで切り替えてみてください. -```typ - #import "libs/rengo/lib.typ": rengo - #show: rengo.with( - title: [Typst を使った国内学会論文の書き方 \ - 国内学会予稿集に似せたフォーマットの作成 - ], - authors: [◯ 著者姓1 著者名1,著者姓2 著者名2(○○○大学),著者姓3 著者名3 (□□□株式会社)], - title-en: [How to write a conference paper in Japanese], - authors-en: [\*A. First, B. Second (○○○ Univ.), and C. Third (□□□ Corp.)], - abstract: [#lorem(80)], - keywords: ([Typst], [conference paper writing], [manuscript format]), - bibliography: bibliography("refs.yml", full: false) - ) +ここの2行目はこの原稿の体裁を設定するためのソースコードをimportしています。 +これは"libs"ディレクトリ以下にあるファイルを指定しており、`mscs`関数を`temp`関数として読み出し、他の関数はそのまま読み出しています。 +3行目と4行目は他のテンプレートを用意しており、2行目と交換してコメントアウトを切り替えることで、そのテンプレートを適用できます。 +6行目では、2行目で読み込んだ関数を使用して、原稿体裁を作成しています。 +7行目では日本語タイトル、8行目では英語タイトル、9行目には著者一覧、10行目には英語の著者一覧を、11行目にはアブストラクト、12行目にはキーワード、13から15行目には使用するフォントファミリーを記載します。 +タイトルなどで途中改行をしたい場合には、`\`で改行してください。 +アブストラクトに入力されている`lorem` 関数は英文のダミーテキストを作成してくれる関数です。 +`keywords` は`()` のリスト形式で指定されていることに注意してください。 +フォントに関しては、設定したフォントがお使いのコンピュータになければ警告を出します。 +以下のコマンドで使用可能なフォント一覧を確認できます。 +```sh +typst fonts ``` -このフォーマットですと,`title-en`, `authors-en`, `keywords` が追加されており,それぞれ英語タイトル,英語著者名,キーワードを意味しています. -`keywords` は`()` のリスト形式で指定されていることに注意してください. - -`#import` でテンプレートの関数を持ってくるところと,その関数を使用するところ以外の本文部分のコードはテンプレートの変更に応じて変更する必要はありません. +こちらで存在するフォントを設定してください。 +たとえば、Windowsであれば"MS PGothic" や "MS PMincho" が、Macであれば"Hiragino Kaku Gothic Pro" や "Hiragino Mincho Pro" が使えるかと思います。 +また、使用したいフォントがない場合には、フォントをインストールしてください。 == 基本的な文法 -章は `=`,節は `==`,小節は `===` で始めます. -改段落は LaTeX と同じく改行を 2 つ以上挟みます. -数字つき箇条書きは `+` で,数字なしの箇条書きは `-` を文頭につけて書くことができます. -テキストの装飾は text 関数で行えます. -LaTeX に慣れている方は,Typst 公式ページの https://typst.app/docs/guides/guide-for-latex-users/ を読むと雰囲気がつかめると思います. +章は `=`、節は `==`、小節は `===` で始めます。 +改段落は LaTeX と同じく改行を 2 つ以上挟みます。 +数字つき箇条書きは `+` で、数字なしの箇条書きは `-` を文頭につけて書くことができます。 +テキストの装飾は text 関数で行えます。 +LaTeX に慣れている方は、Typst 公式ページの https://typst.app/docs/guides/guide-for-latex-users/ を読むと雰囲気がつかめると思います。 == 数式 -数式番号をつけるような中央揃えの数式は,最初の`$` の後ろと閉じの`$` の前にスペースを挟み +数式番号をつけるような中央揃えの数式は、最初の`$` の後ろと閉じの`$` の前にスペースを挟み ```typ $ dot(x) &= A x + B u \ y &= C x $ ``` -のように書き,文中に書く数式は,`$` の前後にスペースを挟まず +のように書き、文中に書く数式は、`$` の前後にスペースを挟まず ```typ $x in RR^n$ ``` -というように書きます. -ここで `` は引用するときのラベルになります. +というように書きます。 +ここで `` は引用するときのラベルになります。 -出力例はつぎの通りです. -以下のシステムを考える. +出力例はつぎの通りです。 +以下のシステムを考える。 $ dot(x) &= A x + B u \ y &= C x $ -ここで $x in RR^n$ は状態,$u in RR^m$ は入力,$y in RR^l$ は出力,$A in RR^(n times n)$,$B in RR^(n times m)$.および $C in RR^(l times n)$ は定数行列である. -このシステムに対して,目標値 $r(t)$ に対する偏差を $e = r - y$ とした以下の PI 制御器を使用する. +ここで $x in RR^n$ は状態、$u in RR^m$ は入力、$y in RR^l$ は出力、$A in RR^(n times n)$、$B in RR^(n times m)$。および $C in RR^(l times n)$ は定数行列である。 +このシステムに対して、目標値 $r(t)$ に対する偏差を $e = r - y$ とした以下の PI 制御器を使用する。 $ u = K_P e + K_I integral_0^t e d t $ -ただし,$K_P$ と $K_I$ はそれぞれ比例ゲイン,積分ゲインとする. +ただし、$K_P$ と $K_I$ はそれぞれ比例ゲイン、積分ゲインとする。 == 図と表 -本稿を執筆時のバージョン Typst 0.11.0 では,PNG, JPEG, GIF, SVG の形式のイメージデータを挿入することができます. -例としては以下の通りです. +本稿を執筆時のバージョン Typst 0.12 では、PNG, JPEG, GIF, SVG の形式のイメージデータを挿入することができます。 +PDFの挿入は muchpdfパッケージ(https://typst.app/universe/package/muchpdf)を使用すれば可能ですが、ここでは説明しません。 +SVGとPNGの表示例としては以下の通りです。 ```typ #figure( placement: bottom, @@ -277,7 +255,7 @@ $ u = K_P e + K_I integral_0^t e d t $ caption: [$sqrt(x)$ と $sin x$ のグラフ], ) ``` -ここで placement は,紙面の上 (top) に寄せるか下 (bottom) に寄せるかを決められます.言及している文章に近い方に調整してください. +ここで placement は、紙面の上 (top) に寄せるか下 (bottom) に寄せるかを決められます。言及している文章に近い方や見栄えが良い方に調整してください。 #figure( placement: bottom, @@ -291,7 +269,7 @@ $ u = K_P e + K_I integral_0^t e d t $ caption: [$sqrt(x)$ と $sin x$ のグラフ], ) -@tab:fonts は以下で記述されております. +@tab:fonts は以下で記述されております。 ```typ #figure( placement: top, @@ -308,101 +286,87 @@ $ u = K_P e + K_I integral_0^t e d t $ [#text(18pt, "タイトル")], [18], [ゴシック体], [#text(12pt, "著者名")], [12], [ゴシック体], [#text(12pt, "章タイトル")], [12], [ゴシック体], - [節,小節,本文], [10], [明朝体], + [節、小節、本文], [10], [明朝体], [#text(9pt, "参考文献")], [9], [明朝体], ) ) ``` -table の columns の数に応じて,文字列の配列が自動的に整列されます. -`stroke: none` は枠線を消しています.`table.hline()` を挟むとその位置に横線を引けます. -ここで,`gothic` は `lib.typ` で定義されています. -他のテンプレートを使用する場合には注意をしてください. -```typ - #import "libs/rsj-conf/lib.typ": rsj-conf, gothic -``` +table の columns の数に応じて、文字列の配列が自動的に整列されます。 +`stroke: none` は枠線を消しています。 +`table.hline()` を挟むとその位置に横線を引けます。 == 定理環境 -@def:definition1 や @lem:lemma1 などは以下で記述されております. +@def:definition1 や @lem:lemma1 などは以下で記述されております。 ```typ #definition("用語 A")[ - 用語 A の定義を書きます. + 用語 A の定義を書きます。 ] #lemma[ - 補題を書きます.タイトルは省略することもできます. + 補題を書きます。タイトルは省略することもできます。 ] #lemma("補題 C")[ - 補題を書きます.番号は定義や補題ごとに 1 からカウントします. + 補題を書きます。番号は定義や補題ごとに 1 からカウントします。 ] #theorem("定理 D")[ - ここに定理を書きます. + ここに定理を書きます。 ] #corollary[ - 系を書きます.@def:definition1 のように,ラベルで参照することもできます. + 系を書きます。@def:definition1 のように、ラベルで参照することもできます。 ] #proof([@thm:theorem1 の証明])[ - 証明を書きます.証明終了として□印をつけています. + 証明を書きます。証明終了として□印をつけています。 ] ``` -ここで,`definition`, `lemma`, `theorem`, `corollary`, `proof` は `gothic` と同様に `lib.typ` で定義されています. -他のテンプレートを使用する場合には注意をしてください. -```typ - #import "libs/rsj-conf/lib.typ": rsj-conf, gothic -``` -さらに元をたどると `lib.typ` で ctheorems パッケージ (https://typst.app/universe/package/ctheorems) をインポートして使用しております. - +ここで、`definition`, `lemma`, `theorem`, `corollary`, `proof` は `lib.typ` で定義されており、`#import`しなければ使用できません。 +他のテンプレートを使用する場合には注意をしてください。 ```typ - // Theorem environment - #import "@preview/ctheorems:1.1.3": thmplain, thmproof, thmrules - #let thmjp = thmplain.with(base: {}, separator: [#h(0.5em)], titlefmt: strong, inset: (top: 0em, left: 0em)) - #let definition = thmjp("definition", text(font: gothic)[定義]) - #let lemma = thmjp("lemma",text(font: gothic)[補題]) - #let theorem = thmjp("theorem", text(font: gothic)[定理]) - #let corollary = thmjp("corollary",text(font: gothic)[系]) - #let proof = thmproof("proof", text(font: gothic)[証明], separator: [#h(0.9em)], titlefmt: strong, inset: (top: 0em, left: 0em)) +#import "libs/mscs/lib.typ": mscs as temp, definition, lemma, theorem, corollary, proof, appendix ``` +さらに元をたどると `lib.typ` で ctheorems パッケージ (https://typst.app/universe/package/ctheorems) をインポートして使用しております。 == 参考文献 -参考文献は `refs.yml` に記載してください. -Hayagriva という YAML 形式のフォーマットに従っています. -編集するだけであれば特に解説する必要はないと思います. -詳細が気になる方は https://github.com/typst/hayagriva をご参照ください. -参考文献の体裁は `libs/rsj-conf/bib.csl` で制御しています. -これは Citation Style Language という XML 形式で記述されております. -CSL ファイルは著者が編集する必要はありませんが,詳細が気になる方は https://citationstyles.org/ をご参照ください. -日本語論文として重要な点は,CSL ファイルでは Hayagriva で記述された `language` の属性を見て,著者表示を"カンマ区切りのみ"にするか"カンマ区切り+最終著者の前にand" にするかを決定している点です. -したがって,英語文献だけでしたら YAML ファイルの代わりに bib ファイルも使用することができます. - -文献内で引用された順番にフォーマットを整えて自動で参考文献の章が作られます. -引用の方法については後述します. -完成原稿では推奨されませんが,引用されていない論文も記載したい場合には full: true にすれば,すべての文献が出力されます. +参考文献は `refs.yml` に記載してください。 +Hayagriva という YAML 形式のフォーマットに従っています。 +編集するだけであれば特に解説する必要はないと思います。 +詳細が気になる方は https://github.com/typst/hayagriva をご参照ください。 +参考文献の体裁は `libs/学会名/` にあるCSLファイルで制御しています。 +これはCitation Style LanguageというXML形式で記述されております。 +CSLファイルは著者が編集する必要はありませんが、詳細が気になる方は https://citationstyles.org/ をご参照ください。 +日本語論文として重要な点は、CSL ファイルでは Hayagriva で記述された `language` の属性を見て、著者表示を"カンマ区切りのみ"にするか"カンマ区切り+最終著者の前にand" にするかを決定している点です。 +したがって、英語文献だけでしたら YAML ファイルの代わりに bib ファイルも使用することができます。 + +文献内で引用された順番にフォーマットを整えて自動で参考文献の章が作られます。 +引用の方法については後述します。 +完成原稿では推奨されませんが、引用されていない論文も記載したい場合には full: true にすれば、すべての文献が出力されます。 == 引用 -引用は "\@label" と記述することで,数式であれば @eq:system,図であれば @fig:quadratic,表であれば @tab:fonts,参考文献であれば @kimura2015asymptotic のように表示されます. -参考文献は連続して引用すると @kimura2017state @kimura2021control @kimura2020facility @khalil2002control @sugie1999feedback @shimz2022visually と繋げられて表示されます. -文法上では特に規則はありませんが,個人的にはラベルの命名規則として,図の場合には "fig:" から,表の場合には"tab:" から始めるようにラベル名を設定しており,参考文献のラベルは "著者名発行年タイトルの最初の単語"で名付けております. - -= おわりに -筆者の理解や表現が誤っている箇所もあるかと思います. -#link("https://github.com/kimushun1101/typst-jp-conf-template")[GitHub] を通して,Issues や Pull Reqests を歓迎しております. -日本語での投稿で構いません. -誤字脱字や文法,表現など細かい修正でも大変ありがたいです. -筆者は,Typst が普及するためには学会のフォーマットで配布されることが不可欠だと感じています. -異なる学会のフォーマットも随時 `libs` ディレクトリに追加していこうと思っております. -これらのファイルがTypst が普及の一助となれば幸いです. +引用は "\@label" と記述することで、数式であれば@eq:system、図であれば@fig:quadratic、表であれば@tab:fonts、セクションであれば@sec:edit、付録セクションであれば@appendix:edit、参考文献であれば@kimura2015asymptotic のように表示されます。 +参考文献は連続して引用すると@kimura2017state @kimura2021control @kimura2020facility @khalil2002control @sugie1999feedback @shimz2022visually と繋げられて表示されます。 +文法上では特に規則はありませんが、個人的にはラベルの命名規則として、数式の場合には "eq:" から、図の場合には "fig:" から、表の場合には"tab:" から、セクションの場合には "sec:" から、付録セクションであれば "appendix:" から始めるようにラベル名を設定しており、参考文献のラベルは "著者名発行年タイトルの最初の単語"で名付けております。 + += おわりに +まだまだTypst自体は発展途上中であり、最新の状態は日々変化しております。 +また筆者の理解や表現が誤っている箇所もあるかと思います。 +対応していただきたい内容や修正していただきたい内容などありましたら、#link("https://github.com/kimushun1101/typst-jp-conf-template")[GitHub] を通して、Issues や Pull Reqests をいただけますと幸いです。 +このテンプレートは日本語論文のために作成しておりますため、日本語での投稿で構いません。もちろん英語での投稿でも問題ありません。 +誤字脱字や文法、表現など細かい修正でも大変ありがたいです。 +筆者は、Typstが普及するためには学会のフォーマットで配布されることが不可欠だと感じています。 +異なる学会のフォーマットも随時`libs`ディレクトリに追加していこうと思っております。 +これらのファイルがTypst が普及の一助となれば幸いです。 = 謝辞 -謝辞には章番号が振られないように設定しております. -「この研究は☆☆☆の助成を受けて行われました.」や「〇〇〇大学との共同研究です.」 -みたいな文章が書かれることを想定しています. -最後までお読みいただき誠にありがとうございました. +謝辞には章番号が振られないように設定しております。 +「この研究は☆☆☆の助成を受けて行われました。」や「〇〇〇大学との共同研究です。」 +みたいな文章が書かれることを想定しています。 +最後までお読みいただき誠にありがとうございました。 #bibliography("refs.yml", full: false) #show: appendix -= 付録の書き方 += 付録の書き方 参考文献の後ろに付録を付けたい場合には、 ```typ #show: appendix