From 65add316e268ed23bac02bf017df36f6d7297637 Mon Sep 17 00:00:00 2001 From: miyaji255 <84168445+miyaji255@users.noreply.github.com> Date: Wed, 18 Dec 2024 10:39:43 +0900 Subject: [PATCH 1/3] =?UTF-8?q?TYpst=E6=BC=A2=E5=AD=97=E3=83=8A=E3=83=B3?= =?UTF-8?q?=E3=83=90=E3=83=AA=E3=83=B3=E3=82=B0=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../blogs/2024-12-17-typst-kanji-numbering.md | 64 ++++++++++++++++++ .../image.png | Bin 0 -> 18741 bytes 2 files changed, 64 insertions(+) create mode 100644 src/content/blogs/2024-12-17-typst-kanji-numbering.md create mode 100644 src/content/blogs/2024-12-17-typst-kanji-numbering/image.png diff --git a/src/content/blogs/2024-12-17-typst-kanji-numbering.md b/src/content/blogs/2024-12-17-typst-kanji-numbering.md new file mode 100644 index 0000000..8f3ac55 --- /dev/null +++ b/src/content/blogs/2024-12-17-typst-kanji-numbering.md @@ -0,0 +1,64 @@ +--- +title: Typstで漢数字ナンバリング +description: +category: tech +author: miyaji +tags: [advent-calendar, typst] +--- + +この記事は [OUCC Advent Calendar 2024](https://adventar.org/calendars/10655) の18日目の記事です。本日はTypstの漢数字のナンバリングを行うときの注意点について説明します。 + +## Typst のナンバリング + +Typst では`numbering`でナンバリングを指定することができ、`1`や`a`などのショートハンドがあります。現在サポートされているのは 1, a, A, i, I, 一, 壹, あ, い, ア, イ, א, 가, ㄱ, *, ①, ⓵ です。 + +この中でも漢数字の`一`は注意が必要です。日本語用ではなく中国語用のライブラリが使われているためです。これにより3つの問題が発生します。 + +1つ目は、100や1000が一百や一千になってしまうことです。中国語では100や1000に一をつけます。十でもつけることもあるそうですが、Typstでは省略しているようです。 + +2つ目は、億をナンバリングすると亿になることです。億以上の漢字は中国語と日本語では異なります。しかし、そもそもこれほど大きいかずは基本的に扱わないですし、Typstが数値として処理できるのもint32の範囲までなので問題にはなりません。 + +3つ目は、101のような間に0が入る数値が一百零一になってしまうことです。これは日本語の漢数字とは異なります。 + +## 例 + +以下の例では、10の0乗から10の9乗までを漢数字でナンバリングしています。 + +```typst +#for i in range(0,10) [ + #let value = calc.pow(10, i) + + #value \ + #numbering("一", value) +] +``` + +![Typst](2024-12-17-typst-kanji-numbering/image.png) + +## 対応策 + +対応策は文字列置換で一や零を消すことです。以下のように関数を作成しておくと便利です。 + +```typst +#let kanji-numbering(value) = { + return numbering("一", value) + .replace("一百", "百") + .replace("一千", "千") + .replace("零", "") +} +``` + +## 実装 + +実際の実装は次のリンク先にあります。 + +https://github.com/typst/typst/blob/73253d465192454f0dfe3fe9eef46d495b343aef/crates/typst-library/src/model/numbering.rs + +一番上に書いてあるようにchines_numberというクレートが使われています。 + +https://docs.rs/chinese-number/latest/chinese_number/ + +## まとめ + +Typstで漢数字をナンバリングするときは、中国語と日本語の違いをがあることを認識しておく必要があります。また、その違いを吸収するために文字列置換を行う関数を作成すると便利です。 + diff --git a/src/content/blogs/2024-12-17-typst-kanji-numbering/image.png b/src/content/blogs/2024-12-17-typst-kanji-numbering/image.png new file mode 100644 index 0000000000000000000000000000000000000000..1a08a35a2a5c43250f74f900a6cbcac8d0d6aaac GIT binary patch literal 18741 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 DURi|{ literal 0 HcmV?d00001 From 9dd580c9dfaab8cf246bbab7146e9d53ff807d13 Mon Sep 17 00:00:00 2001 From: miyaji255 <84168445+miyaji255@users.noreply.github.com> Date: Wed, 18 Dec 2024 10:42:01 +0900 Subject: [PATCH 2/3] =?UTF-8?q?=E8=A8=98=E4=BA=8B=E3=81=AE=E8=AA=AC?= =?UTF-8?q?=E6=98=8E=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/content/blogs/2024-12-17-typst-kanji-numbering.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/blogs/2024-12-17-typst-kanji-numbering.md b/src/content/blogs/2024-12-17-typst-kanji-numbering.md index 8f3ac55..b963785 100644 --- a/src/content/blogs/2024-12-17-typst-kanji-numbering.md +++ b/src/content/blogs/2024-12-17-typst-kanji-numbering.md @@ -1,6 +1,6 @@ --- title: Typstで漢数字ナンバリング -description: +description: この記事では、Typstにおける漢数字ナンバリングの仕様と、その際に発生する中国語と日本語の違いによる問題点について解説しています。さらに、それを補正するための文字列置換を活用した簡単な対応策を紹介します。 category: tech author: miyaji tags: [advent-calendar, typst] From 9c43e8e8ca4597625e1945dea7ff54a805f73739 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 18 Dec 2024 01:45:02 +0000 Subject: [PATCH 3/3] [Bot] Update Blog Meta --- src/content/blog-metas/2024-12-17-typst-kanji-numbering.json | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 src/content/blog-metas/2024-12-17-typst-kanji-numbering.json diff --git a/src/content/blog-metas/2024-12-17-typst-kanji-numbering.json b/src/content/blog-metas/2024-12-17-typst-kanji-numbering.json new file mode 100644 index 0000000..14f7980 --- /dev/null +++ b/src/content/blog-metas/2024-12-17-typst-kanji-numbering.json @@ -0,0 +1,3 @@ +{ + "postDate": "2024-12-18T01:44:58.014Z" +}