diff --git a/Cargo.lock b/Cargo.lock index a1c8dae33..97703229a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2092,16 +2092,21 @@ dependencies = [ [[package]] name = "pulldown-cmark" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57206b407293d2bcd3af849ce869d52068623f19e1b5ff8e8778e3309439682b" +version = "0.13.0" +source = "git+https://github.com/3w36zj6/pulldown-cmark-cjk-friendly?rev=ccdd8e0#ccdd8e0bd2ed96da7786272250b79a996911fd05" dependencies = [ "bitflags 2.9.1", "getopts", "memchr", + "pulldown-cmark-escape", "unicase", ] +[[package]] +name = "pulldown-cmark-escape" +version = "0.11.0" +source = "git+https://github.com/3w36zj6/pulldown-cmark-cjk-friendly?rev=ccdd8e0#ccdd8e0bd2ed96da7786272250b79a996911fd05" + [[package]] name = "pxfm" version = "0.1.24" @@ -3018,6 +3023,7 @@ dependencies = [ "ecow", "heck", "pulldown-cmark", + "pulldown-cmark-escape", "regex", "rustc-hash", "serde", diff --git a/crates/typst-library/src/foundations/args.rs b/crates/typst-library/src/foundations/args.rs index b2cae1c7d..12e9bab33 100644 --- a/crates/typst-library/src/foundations/args.rs +++ b/crates/typst-library/src/foundations/args.rs @@ -13,7 +13,7 @@ use crate::foundations::{ /// /// # 引数シンク /// 組み込み関数と同様に、カスタム関数も可変長引数を受け取れます。 -/// 余分にある引数を全てまとめて受け取る _引数シンク_(キッチンシンクのようにさまざまなものが流れ込む先)は、`..sink`の形で指定できます。このとき生成される`sink`の値は`arguments`型になります。この型は、位置引数と名前付き引数の両方にアクセスするためのメソッドを提供しています。 +/// 余分にある引数を全てまとめて受け取る_引数シンク_(キッチンシンクのようにさまざまなものが流れ込む先)は、`..sink`の形で指定できます。このとき生成される`sink`の値は`arguments`型になります。この型は、位置引数と名前付き引数の両方にアクセスするためのメソッドを提供しています。 /// /// ```example /// #let format(title, ..authors) = { diff --git a/crates/typst-library/src/foundations/content/mod.rs b/crates/typst-library/src/foundations/content/mod.rs index 4bfb6af44..70cb4d058 100644 --- a/crates/typst-library/src/foundations/content/mod.rs +++ b/crates/typst-library/src/foundations/content/mod.rs @@ -48,7 +48,7 @@ use crate::text::UnderlineElem; /// コンテンツは`+`演算子で追加したり、[結合]($scripting/#blocks)したり、整数と乗算したりすることができます。コンテンツが期待される場所であれば、[文字列]($str)や`{none}`を渡すことも可能です。 /// /// # Representation -/// コンテンツはフィールドを持つ要素で構成されます。 _要素関数_ で要素を構築する際は、フィールドを引数として提供します。コンテンツ値がある場合は、[フィールドアクセス構文]($scripting/#field-access)でそのフィールドにアクセスできます。 +/// コンテンツはフィールドを持つ要素で構成されます。_要素関数_で要素を構築する際は、フィールドを引数として提供します。コンテンツ値がある場合は、[フィールドアクセス構文]($scripting/#field-access)でそのフィールドにアクセスできます。 /// /// フィールドの中には必須のものがあります。それらは要素を構築する際に提供する必要があるため、その型のコンテンツでは常にフィールドアクセスを通じて利用可能です。 /// 必須フィールドはドキュメント内でそのようにマークされています。 diff --git a/crates/typst-library/src/foundations/datetime.rs b/crates/typst-library/src/foundations/datetime.rs index 800e70bb7..de8342e53 100644 --- a/crates/typst-library/src/foundations/datetime.rs +++ b/crates/typst-library/src/foundations/datetime.rs @@ -65,7 +65,7 @@ use crate::foundations::{ /// ``` /// /// # フォーマット -/// [`display`]($datetime.display)メソッドを使うことで、日時をカスタマイズして表示するフォーマットを指定できます。日時のフォーマットは、_コンポーネント_ に _修飾子_ を組み合わせることで指定します。 +/// [`display`]($datetime.display)メソッドを使うことで、日時をカスタマイズして表示するフォーマットを指定できます。日時のフォーマットは、_コンポーネント_に_修飾子_を組み合わせることで指定します。 /// コンポーネントは、日時の中の特定の部分(例えば年や月など)を表します。そして修飾子を使うことで、そのコンポーネントをどのように表示するかを細かく設定できます。 /// コンポーネントを表示するには、コンポーネントの名前を角かっこで囲みます(例:`[[year]]`は年を表示します)。修飾子を追加するには、コンポーネント名の後に半角スペースを入れ、修飾子名、コロン(:)、修飾子の値を記述します(例:`[[month repr:short]]`は月名を短縮形で表示します)。 /// diff --git a/crates/typst-library/src/foundations/func.rs b/crates/typst-library/src/foundations/func.rs index ce796a6f5..54d2b495d 100644 --- a/crates/typst-library/src/foundations/func.rs +++ b/crates/typst-library/src/foundations/func.rs @@ -18,7 +18,7 @@ use crate::foundations::{ /// 引数値から戻り値への写像。 /// -/// 関数名の直後に括弧で囲まれたカンマ区切りの関数の _引数_ のリストを書くことにより関数を呼び出すことができます。 +/// 関数名の直後に括弧で囲まれたカンマ区切りの関数の_引数_のリストを書くことにより関数を呼び出すことができます。 /// 加えて、通常の引数リストの後に任意の数のコンテンツブロック引数を関数に渡すこともできます。 /// 通常の引数リストが空の場合は省略が可能です。 /// Typstは位置引数と名前付き引数をサポートしています。 @@ -47,7 +47,7 @@ use crate::foundations::{ /// Typstで関数をさらに活用する方法については、[setルール]($styling/#set-rules)および[showルール]($styling/#show-rules)のドキュメントも参照して下さい。 /// /// # 要素関数 -/// [見出し]($heading)や[表]($table)のような、いくつかの関数は _要素_ と結びついており、呼び出すとその種類に応じた要素を作成します。 +/// [見出し]($heading)や[表]($table)のような、いくつかの関数は_要素_と結びついており、呼び出すとその種類に応じた要素を作成します。 /// さらに、通常の関数とは異なり、要素関数は[setルール]($styling/#set-rules)、[showルール]($styling/#show-rules)および [セレクター]($selector)で使用可能です。 /// /// # 関数スコープ @@ -107,7 +107,7 @@ use crate::foundations::{ /// ``` /// /// # 関数の純粋性に関する注意 -/// Typstにおいて関数は全て _純粋_ です。 +/// Typstにおいて関数は全て_純粋_です。 /// これは同じ引数からは常に同じ結果が返ってくることを意味します。 /// 純粋関数は2回目の呼び出し時に別の値を生成するために何かを「記憶」することはできません。 /// diff --git a/crates/typst-library/src/introspection/counter.rs b/crates/typst-library/src/introspection/counter.rs index 7c373d8d6..afd3ec4e1 100644 --- a/crates/typst-library/src/introspection/counter.rs +++ b/crates/typst-library/src/introspection/counter.rs @@ -26,7 +26,7 @@ use crate::routines::Routines; /// counter関数を用いることで、ページや見出し、図表などのカウンターにアクセスしたり、修正を加えたりできます。 /// さらに、独自のカウンターを定義して、他のものを数えることもできます。 /// -/// カウンターは文書全体を通して変化するため、現在のその値は _コンテキスト依存_ です。 +/// カウンターは文書全体を通して変化するため、現在のその値は_コンテキスト依存_です。 /// 先に進む前に[コンテキスト]($context)の章を読むことをおすすめします。 /// /// # カウンターへのアクセス { #accessing } diff --git a/crates/typst-library/src/introspection/location.rs b/crates/typst-library/src/introspection/location.rs index a0ffb481f..ca4780c09 100644 --- a/crates/typst-library/src/introspection/location.rs +++ b/crates/typst-library/src/introspection/location.rs @@ -15,7 +15,7 @@ use crate::model::Numbering; /// また、検索したロケーションや表示された要素のロケーションは、コンテンツの[`location()`]($content.location)メソッドを使って取得できます。 /// /// # ロケータブル要素 { #locatable } -/// ロケーションが自動的に割り当てられる要素は _ロケータブル_ と呼ばれます。 +/// ロケーションが自動的に割り当てられる要素は_ロケータブル_と呼ばれます。 /// 効率上の理由から、全ての要素がロケータブルであるわけではありません。 /// /// - [Modelカテゴリ]($category/model)では、ほとんどの要素がロケータブルです。 diff --git a/crates/typst-library/src/introspection/state.rs b/crates/typst-library/src/introspection/state.rs index 6ed490303..5f78494ae 100644 --- a/crates/typst-library/src/introspection/state.rs +++ b/crates/typst-library/src/introspection/state.rs @@ -17,7 +17,7 @@ use crate::routines::Routines; /// 文書中で何回か計算を行い、最後の計算結果を次の計算で使用するために記憶しておきたいとします。 /// 以下と同等のコードを試すと10、13、26、21と出力されることを期待するでしょう。 /// しかしTypstでは**そうはなりません**。 -/// このコードを試してみると、Typstは _Variables from outside the function are read-only and cannot be modified._ というエラーメッセージを出力することが分かります。 +/// このコードを試してみると、Typstは_Variables from outside the function are read-only and cannot be modified._というエラーメッセージを出力することが分かります。 /// /// ```typ /// // This doesn't work! @@ -74,7 +74,7 @@ use crate::routines::Routines; /// この状態値はいくつかの関数を公開しており、最も重要な2つの関数が`get`と`update`です。 /// /// - [`get`]($state.get)関数は状態の現在値を取得します。 -/// 値は文書中で変化するため、これは[コンテキスト]($context)が利用可能な場合にのみ使用できる _コンテキスト_ 関数です。 +/// 値は文書中で変化するため、これは[コンテキスト]($context)が利用可能な場合にのみ使用できる_コンテキスト_関数です。 /// /// - [`update`]($state.update)関数は状態に修正を加えます。 /// 任意の値が使用できます。 diff --git a/crates/typst-library/src/layout/align.rs b/crates/typst-library/src/layout/align.rs index 059efb9c2..ce2c6236f 100644 --- a/crates/typst-library/src/layout/align.rs +++ b/crates/typst-library/src/layout/align.rs @@ -24,7 +24,7 @@ use crate::text::TextElem; /// A work of art, a visual throne /// ``` /// -/// 垂直方向に中央揃えにするには _horizon_ 配置を使用します。 +/// 垂直方向に中央揃えにするには_horizon_配置を使用します。 /// ```example /// #set page(height: 120pt) /// #set align(horizon) diff --git a/crates/typst-library/src/model/heading.rs b/crates/typst-library/src/model/heading.rs index 38628c85c..5069bbde4 100644 --- a/crates/typst-library/src/model/heading.rs +++ b/crates/typst-library/src/model/heading.rs @@ -16,7 +16,7 @@ use crate::text::{FontWeight, LocalName, TextElem, TextSize}; /// セクションの見出し。 /// /// 見出しを使うことで、文書をセクションとして構造化できます。 -/// 各見出しには1から始まる _レベル_ があり、上限はありません。 +/// 各見出しには1から始まる_レベル_があり、上限はありません。 /// このレベルは、以下に続くコンテンツの論理的な役割(セクション、サブセクションなど)を示します。 /// 最上位のレベルの見出しは、文書の最上位のレベルのセクションを示します(文書のタイトルではありません)。 /// diff --git a/crates/typst-library/src/model/numbering.rs b/crates/typst-library/src/model/numbering.rs index 29a7cae19..e44fe8ed2 100644 --- a/crates/typst-library/src/model/numbering.rs +++ b/crates/typst-library/src/model/numbering.rs @@ -52,16 +52,16 @@ pub fn numbering( context: Tracked, /// 番号付けの表示形式を定義します。 /// - /// **カウント記号** として使用できるパターン文字は `1`, `a`, `A`, `i`, `I`, `α`, `Α`, `一`, `壹`, `あ`, `い`, `ア`, `イ`, `א`, `가`, `ㄱ`, `*`, `١`, `۱`, `१`, `১`, `ক`, `①`, `⓵`があります。 + /// **カウント記号**として使用できるパターン文字は `1`, `a`, `A`, `i`, `I`, `α`, `Α`, `一`, `壹`, `あ`, `い`, `ア`, `イ`, `א`, `가`, `ㄱ`, `*`, `١`, `۱`, `१`, `১`, `ক`, `①`, `⓵`があります。 /// これらの文字は、大文字・小文字を維持したまま、対応する順序の番号文字に置き換えられます。 /// /// 記号`*`は `*`, `†`, `‡`, `§`, `¶`, `‖`の順序で番号付けすることを意味します。 /// 項目が6つ以上ある場合は、記号を繰り返し使用して番号を表現します。 /// - /// **サフィックス** とは、最後のカウント記号の後ろに置く文字列です。 + /// **サフィックス**とは、最後のカウント記号の後ろに置く文字列です。 /// これらは、生成された番号文字の末尾に、そのままの形で繰り返し表示されます。 /// - /// **プレフィックス** は、カウント記号でもサフィックスでもない文字列です。 + /// **プレフィックス**は、カウント記号でもサフィックスでもない文字列です。 /// それぞれのカウント記号の前に、そのままの形で繰り返し表示されます。 /// /// このパラメータには、数値を個別の引数として受け取る任意の関数も指定できます。 diff --git a/crates/typst-library/src/model/outline.rs b/crates/typst-library/src/model/outline.rs index 2868ee147..137b51190 100644 --- a/crates/typst-library/src/model/outline.rs +++ b/crates/typst-library/src/model/outline.rs @@ -49,7 +49,7 @@ use crate::text::{LocalName, SpaceElem, TextElem}; /// 同様に`{figure.where(kind: table)}`と設定すれば、表のアウトラインを生成できます。 /// /// [`where`]($function.where)セレクターを使わずに`figure`のみの指定もできますが、その場合は画像や表、 -/// またその他の素材も含む _全て_ の図表がアウトラインに表示されます。 +/// またその他の素材も含む_全て_の図表がアウトラインに表示されます。 /// /// ```example /// #outline( diff --git a/crates/typst-library/src/model/par.rs b/crates/typst-library/src/model/par.rs index e4c2395bc..2b165468a 100644 --- a/crates/typst-library/src/model/par.rs +++ b/crates/typst-library/src/model/par.rs @@ -14,7 +14,7 @@ use crate::model::Numbering; /// テキストコンテンツの論理的な区分。 /// -/// Typstは _インラインレベル_ の要素を自動的に段落にまとめます。 +/// Typstは_インラインレベル_の要素を自動的に段落にまとめます。 /// インラインレベルの要素には、[テキスト]($text)、 [水平方向の空白]($h)、 /// [ボックス]($box)、[インライン数式]($math.equation)が含まれます。 /// diff --git a/crates/typst-library/src/model/reference.rs b/crates/typst-library/src/model/reference.rs index 93d2c1f53..89abda473 100644 --- a/crates/typst-library/src/model/reference.rs +++ b/crates/typst-library/src/model/reference.rs @@ -25,7 +25,7 @@ use crate::text::TextElem; /// 参照は該当する要素へのリンクにもなります。 /// また、参照の構文は文献リストからの[cite]にも使用できます。 /// -/// このデフォルト形式では補足語と番号が必要なため、ラベルは _参照可能な要素_ に付けなくてはなりません。 +/// このデフォルト形式では補足語と番号が必要なため、ラベルは_参照可能な要素_に付けなくてはなりません。 /// 参照可能な要素としては、 /// [headings]($heading)、[figures]($figure)、[equations]($math.equation)、[footnotes]($footnote) /// などがあります。 diff --git a/crates/typst-library/src/text/lorem.rs b/crates/typst-library/src/text/lorem.rs index 66af0e9f3..ce83c0cca 100644 --- a/crates/typst-library/src/text/lorem.rs +++ b/crates/typst-library/src/text/lorem.rs @@ -2,7 +2,7 @@ use crate::foundations::{Str, func}; /// ダミーテキストの作成。 /// -/// この関数は与えられた単語数だけラテン語風のダミーテキストである _Lorem Ipsum_ を生成します。 +/// この関数は与えられた単語数だけラテン語風のダミーテキストである_Lorem Ipsum_を生成します。 /// この関数で生成される単語の並びはランダムに選ばれますが、生成のたびに同じものになります。 /// 通常のダミーテキストと同様に、意味のないテキストです。 /// レイアウトを試すプレースホルダーとして使用してください。 diff --git a/crates/typst-library/src/text/smallcaps.rs b/crates/typst-library/src/text/smallcaps.rs index a82b61848..204172c76 100644 --- a/crates/typst-library/src/text/smallcaps.rs +++ b/crates/typst-library/src/text/smallcaps.rs @@ -12,7 +12,7 @@ use crate::foundations::{Content, elem}; /// デフォルトでは、この関数はフォントのOpenTypeフィーチャーの`smcp`および`c2sc`を使用します。 /// 全てのフォントがこれらのフィーチャーをサポートしているわけではありません。 /// スモールキャピタルは専用のフォントとして提供されることがあります。 -/// この例として _Latin Modern_ フォントファミリーが該当します。 +/// この例として_Latin Modern_フォントファミリーが該当します。 /// この場合、show-setルールを用いてスモールキャピタルでのテキストの見た目がカスタマイズできます。 /// /// ```typ diff --git a/crates/typst-library/src/visualize/image/mod.rs b/crates/typst-library/src/visualize/image/mod.rs index c90c267c3..ba59f57e8 100644 --- a/crates/typst-library/src/visualize/image/mod.rs +++ b/crates/typst-library/src/visualize/image/mod.rs @@ -37,7 +37,7 @@ use crate::visualize::image::pdf::PdfDocument; /// /// 画像を[`figure`]で囲むことで、番号とキャプションを与えることができます。 /// -/// ほとんどの要素と同様に、画像はデフォルトでは _ブロックレベル_ であるため、隣接する段落に統合されることはありません。 +/// ほとんどの要素と同様に、画像はデフォルトでは_ブロックレベル_であるため、隣接する段落に統合されることはありません。 /// 画像を強制的にインラインにするには、[`box`]の中に入れてください。 /// /// # 例 diff --git a/docs/Cargo.toml b/docs/Cargo.toml index 51da9af90..8795cd518 100644 --- a/docs/Cargo.toml +++ b/docs/Cargo.toml @@ -25,7 +25,8 @@ clap = { workspace = true, optional = true } codex = { workspace = true } ecow = { workspace = true } heck = { workspace = true } -pulldown-cmark = { workspace = true } +pulldown-cmark = { git = "https://github.com/3w36zj6/pulldown-cmark-cjk-friendly", rev = "ccdd8e0" } +pulldown-cmark-escape = { git = "https://github.com/3w36zj6/pulldown-cmark-cjk-friendly", rev = "ccdd8e0" } regex = { workspace = true } rustc-hash = { workspace = true } serde = { workspace = true } diff --git a/docs/overview.md b/docs/overview.md index 9afe778c9..8b1cfa1a1 100644 --- a/docs/overview.md +++ b/docs/overview.md @@ -19,7 +19,7 @@ description: | ---- -Typstは、学術用途のために新たに生まれたマークアップベースの組版システムです。LaTeXのような高度なツールや、WordあるいはGoogleドキュメントのような手軽なツールの両方に取って代わるものとして設計されています。私たちがTypstを通して目指しているのは、高機能 _かつ_ 使っていて楽しくなるような組版ツールを作ることです。 +Typstは、学術用途のために新たに生まれたマークアップベースの組版システムです。LaTeXのような高度なツールや、WordあるいはGoogleドキュメントのような手軽なツールの両方に取って代わるものとして設計されています。私たちがTypstを通して目指しているのは、高機能_かつ_使っていて楽しくなるような組版ツールを作ることです。 このドキュメントは、2つの部分に分かれています:実際の使用例を通じてTypstの使い方を学べる、初心者にやさしいチュートリアル。そして、Typstのあらゆる仕様・機能を扱った包括的なリファレンスです。 diff --git a/docs/reference/export/html.md b/docs/reference/export/html.md index 338c83291..1465cd9b1 100644 --- a/docs/reference/export/html.md +++ b/docs/reference/export/html.md @@ -15,12 +15,12 @@ TypstのHTMLエクスポートの目的は、入力文書の構造を捉え、 生成されるHTMLは、アクセシビリティに優れ、人間が読みやすく、手作業での編集や下流のツールによる処理が可能であるべきです。 対照的に、PDF、PNG、SVGエクスポートは全て、 -完全にレイアウト済みの文書の _視覚的_ 表現を生成します。 +完全にレイアウト済みの文書の_視覚的_表現を生成します。 このようなフォーマットの意図の違いにより、 Typstは既存のTypst文書に対して完璧なHTMLを単純に生成することはできません。 Typstがあなたのコンテンツにとって最適に意味付けされたHTML表現が何であるかを常に知ることはできないためです。 -代わりに、Typstは _あなた_ に完全な制御を委ねます。 +代わりに、Typstは_あなた_に完全な制御を委ねます。 [`target`]($target)関数で現在のエクスポート形式を確認でき、これがHTMLに設定されている場合、 [生のHTML要素]($html.elem)を生成できます。 これらの要素は主にテンプレートやshowルールでの使用を想定しています。 @@ -34,7 +34,7 @@ Typstは常に単一のHTMLファイルを出力します。 Typstは現状ではCSSスタイルシートを出力せず、意味付けされたマークアップの生成に重点を置いています。 もちろん、独自にCSSスタイルを書くこともでき、 -そうすればPDFとHTMLの間で _コンテンツ_ を共有する利点をそのまま享受できます。 +そうすればPDFとHTMLの間で_コンテンツ_を共有する利点をそのまま享受できます。 将来的には、既存のsetルールをより多く考慮に入れた上で、 CSSを自動的に出力するオプションを提供する予定です。 diff --git a/docs/reference/export/pdf.md b/docs/reference/export/pdf.md index ff5a8c137..1bb277e5c 100644 --- a/docs/reference/export/pdf.md +++ b/docs/reference/export/pdf.md @@ -120,7 +120,7 @@ PDF/Aファイルは、現在および将来のPDF用ツールとの最大限の この形式は実装が困難な機能や独自仕様に依存せず、網羅的なメタデータを含みます。 これにより、長期的なアーカイブに適した形式となっています。 -PDF/A規格には複数のバージョン(ISOにおける用語では _パート_)があり、 +PDF/A規格には複数のバージョン(ISOにおける用語では_パート_)があり、 ほとんどのパートにはファイルの適合レベルを示す複数のプロファイルが存在します。 現在、Typstは以下のPDF/A出力プロファイルをサポートしています。 diff --git a/docs/reference/language/context.md b/docs/reference/language/context.md index 1f0d15f96..853601ef4 100644 --- a/docs/reference/language/context.md +++ b/docs/reference/language/context.md @@ -51,7 +51,7 @@ setルールを使用すると、文書の一部または全体の書式のプ ## 位置コンテキスト {#location-context} コンテキストでアクセスできるのはsetルールの値だけではありません。 -そのコンテキストが現在の文書内の _どこにあるのか_ を、他の要素との相対位置やページの絶対位置として知ることも可能です。 +そのコンテキストが現在の文書内の_どこにあるのか_を、他の要素との相対位置やページの絶対位置として知ることも可能です。 この情報を活用することで、文書内のさまざまなパーツ同士を柔軟に連携させることができます。 位置コンテキストは、見出し番号や目次、章ごとに変わるページヘッダーを扱う機能の基盤となります。 @@ -81,7 +81,7 @@ setルールを使用すると、文書の一部または全体の書式のプ - 最初に `{counter(heading).get()}` があり、これは先程のように `{(2,)}` に解決されます。 - 次に、より強力な [`counter.at`]($counter.at) と [`here`]($here) を組み合わせて使用します。これは `get` と同等であるため `{(2,)}` が得られます。 -- 最後に、[label]($label) と組み合わせて `at` を使用して、文書内の _異なる_ 位置、つまり導入見出しの位置でカウンターの値を取得します。これにより `{(1,)}` が得られます。Typstのコンテキストシステムは、文書内の _任意の_ 位置でカウンターや状態の値を取得することができるタイムトラベル能力を提供します。 +- 最後に、[label]($label) と組み合わせて `at` を使用して、文書内の_異なる_位置、つまり導入見出しの位置でカウンターの値を取得します。これにより `{(1,)}` が得られます。Typstのコンテキストシステムは、文書内の_任意の_位置でカウンターや状態の値を取得することができるタイムトラベル能力を提供します。 ```example #set heading(numbering: "1.") @@ -160,7 +160,7 @@ Background is at: \ ] ``` -しかし、2番目の `text.lang` は言語の変更に反応 _します_。なぜなら、その周囲のコンテキストブロックの評価が、それに対するスタイルがわかるまで遅延されるからです。これは、正確なスタイルにアクセスするために、コンテキストにとって適切な挿入ポイントを選択することの重要性を示しています。 +しかし、2番目の `text.lang` は言語の変更に反応_します_。なぜなら、その周囲のコンテキストブロックの評価が、それに対するスタイルがわかるまで遅延されるからです。これは、正確なスタイルにアクセスするために、コンテキストにとって適切な挿入ポイントを選択することの重要性を示しています。 同様のことが位置コンテキストにも当てはまります。 以下の例では、最初の `{c.display()}` 呼び出しは外側のコンテキストブロックにアクセスするため、 `{c.update(2)}` の効果を見ることはできません。 diff --git a/docs/reference/language/scripting.md b/docs/reference/language/scripting.md index d04ebdd3e..743bd48bb 100644 --- a/docs/reference/language/scripting.md +++ b/docs/reference/language/scripting.md @@ -8,7 +8,7 @@ Typstには強力なスクリプト言語が組み込まれています。これ ## 式 { #expressions } Typstでは、マークアップとコードが一体となっています。 -最も一般的な要素以外のものは _関数_ を使って作成されます。 +最も一般的な要素以外のものは_関数_を使って作成されます。 これを可能な限り便利にするため、Typstはコード式をマークアップに埋め込むためのコンパクトな構文を提供しています。式はハッシュ(`#`)で始まり、 この式が終了すると通常のマークアップの解析が再開されます。 式の直後に通常の文字列として解釈されるべき文字が続く場合、セミコロン(`;`)を使って式を強制的に終了できます。 @@ -28,7 +28,7 @@ Typstでは、マークアップとコードが一体となっています。 このような式をマークアップに埋め込むためには、`[#(1 + 2)]`のように丸括弧を使用します。 ## ブロック { #blocks } -コードを構造化し、マークアップを埋め込むために、Typstは次の二種類の _ブロック_ を提供します。 +コードを構造化し、マークアップを埋め込むために、Typstは次の二種類の_ブロック_を提供します。 - **コードブロック:** `{{ let x = 1; x + 2 }}` \ コードを書く際には、計算を複数のステートメントに分割したり、中間変数を作成したりすることがあるでしょう。 @@ -152,7 +152,7 @@ Typstは`{if}`式、`{else if}`式、および`{else}`式をサポートして ループを使用すると、コンテンツを繰り返したり、何かを反復的に計算したりできます。 Typstは、`{for}`ループと`{while}`ループの2つのループをサポートしています。 前者は指定されたコレクションを反復するのに対し、後者は条件が満たされている限り反復を続けます。 -ブロックと同様に、ループは各反復からの結果を1つの値に _結合_ します。 +ブロックと同様に、ループは各反復からの結果を1つの値に_結合_します。 以下の例では、forループによって作成された3つの文が1つのコンテンツ値に結合され、whileループの中の長さ1の配列が1つの大きな配列に結合されます。 @@ -203,7 +203,7 @@ forループはさまざまなコレクションを反復処理できます。 - `{while condition [..]}` ## フィールド { #fields } -_ドット記法_ を使用することで値のフィールドにアクセスできます。[コンテンツ]($content)型の値については、[fields]($content.fields)関数を使用してフィールドを一覧表示できます。 +_ドット記法_を使用することで値のフィールドにアクセスできます。[コンテンツ]($content)型の値については、[fields]($content.fields)関数を使用してフィールドを一覧表示できます。 @@ -252,13 +252,13 @@ _ドット記法_ を使用することで値のフィールドにアクセス ``` 特定の値に対して呼び出された際に、その値を変更する特別な関数がいくつかあります(例: [`array.push`]($array.push))。 -これらの関数は、_必ず_ メソッド形式で呼び出す必要があります。 +これらの関数は、_必ず_メソッド形式で呼び出す必要があります。 場合によっては、メソッドが副作用のためだけに呼び出されるとき、その戻り値は無視されるべきです(結合に加わるべきではありません)。 値を破棄する標準的な方法は、`{let _ = array.remove(1)}`のように letバインディングを使用することです。 ## モジュール { #modules } -Typstプロジェクトを、_モジュール_ と呼ばれる複数のファイルに分割できます。 +Typstプロジェクトを、_モジュール_と呼ばれる複数のファイルに分割できます。 モジュールは他のモジュールのコンテンツや定義を複数の方法で参照できます。 @@ -289,7 +289,7 @@ Typstプロジェクトを、_モジュール_ と呼ばれる複数のファイ ``` ## パッケージ { #packages } -プロジェクト間でビルド中のブロックを再利用するために、Typstの _パッケージ_ を作成してインポートできます。 +プロジェクト間でビルド中のブロックを再利用するために、Typstの_パッケージ_を作成してインポートできます。 パッケージのインポートは、名前空間、名前、バージョンの3つの組み合わせとして指定されます。 ```example diff --git a/docs/reference/language/styling.md b/docs/reference/language/styling.md index 049b78b05..d15db1f70 100644 --- a/docs/reference/language/styling.md +++ b/docs/reference/language/styling.md @@ -5,9 +5,9 @@ description: Typst で文書のスタイル設定をするために必要な概 # スタイル設定 Typstには柔軟なスタイル設定機能を持ち、出力される文書に対して自動的に任意のスタイル設定を適用します。 -_setルール_ では要素の基本プロパティを設定できます。 +_setルール_では要素の基本プロパティを設定できます。 しかし、やりたいこと全てに対応するプロパティがあらかじめ実装されているとは限りません。 -このため、Typstは要素の外観を完全に再定義できる _showルール_ もサポートしています。 +このため、Typstは要素の外観を完全に再定義できる_showルール_もサポートしています。 ## setルール { #set-rules } @@ -44,7 +44,7 @@ This one is not: ``` ときには、setルールを条件付きで設定したい場合もあるでしょう。 -その場合には _set-if_ ルールを使用します。 +その場合には_set-if_ルールを使用します。 ```example #let task(body, critical: false) = { @@ -120,7 +120,7 @@ gets extra style points. setルールと同様に、showルールは、現在のブロック内またはファイルの終わりまで有効です。 関数の代わりに、showルールのコロン右側は、要素に直接置換されるべきリテラル文字列またはコンテンツブロックを取ることもできます。 -またshowルールのコロン左側は、以下に示すように、変換を適用する対象を定義する _セレクター_ を受け取ることができます。 +またshowルールのコロン左側は、以下に示すように、変換を適用する対象を定義する_セレクター_を受け取ることができます。 - **全て:** `{show: rest => ..}` \ showルール以降の全てを変換する。 diff --git a/docs/reference/language/syntax.md b/docs/reference/language/syntax.md index 8d1e8ef16..5612c6914 100644 --- a/docs/reference/language/syntax.md +++ b/docs/reference/language/syntax.md @@ -208,7 +208,7 @@ Typstは、画像、Typstファイル、データファイルなどのリソー #image("images/logo.png") ``` -- **絶対パス**はプロジェクトの _ルートディレクトリ_ からのパスを指定します。先頭を`/`から始めます。 +- **絶対パス**はプロジェクトの_ルートディレクトリ_からのパスを指定します。先頭を`/`から始めます。 ```typ #image("/assets/logo.png") diff --git a/docs/reference/library/introspection.md b/docs/reference/library/introspection.md index cc919e403..c7a94c3da 100644 --- a/docs/reference/library/introspection.md +++ b/docs/reference/library/introspection.md @@ -5,5 +5,5 @@ また、独自のカウンターも作成できます。 一方、`query`関数を用いると、図表のリストや現在の章タイトルを表示する見出しなどを作成するために、文書内の要素を探せます。 -ほとんどの関数が _コンテキスト依存_です。 +ほとんどの関数が_コンテキスト依存_です。 先に進む前に[コンテキスト]($context)の章を読むことをおすすめします。 diff --git a/docs/reference/library/math.md b/docs/reference/library/math.md index 51174bd64..d14bfd8aa 100644 --- a/docs/reference/library/math.md +++ b/docs/reference/library/math.md @@ -30,7 +30,7 @@ $ x < y => x gt.eq.not y $ # 改行 数式には改行を含めることもできます。 -各行には、その場所で配置することを指定する、1つまたは複数の _配置点_(`&`)を含めることができます。 +各行には、その場所で配置することを指定する、1つまたは複数の_配置点_(`&`)を含めることができます。 ```example $ sum_(k=0)^n k @@ -64,7 +64,7 @@ $ lim_x = 前にハッシュがある関数呼び出しは通常のコードの関数呼び出しで、これらの規則に影響されません。 # 配置 -数式が複数の _配置点_(`&`)を含む場合、右揃えと左揃えが交互に行われる列のブロックが作成されます。 +数式が複数の_配置点_(`&`)を含む場合、右揃えと左揃えが交互に行われる列のブロックが作成されます。 以下の例では、`(3x + y) / 7`という式は右揃えで、`= 9`が左揃えです。 "given"という単語も左揃えです。これは`&&`が行内に2つの配置点を作成し、2回配置方法が切り替わるためです。 `& &`と`&&`は全く同じように振る舞います。 diff --git a/docs/src/html.rs b/docs/src/html.rs index 653b796f1..cd69701d9 100644 --- a/docs/src/html.rs +++ b/docs/src/html.rs @@ -4,6 +4,7 @@ use std::ops::Range; use ecow::EcoString; use heck::{ToKebabCase, ToTitleCase}; use pulldown_cmark as md; +use pulldown_cmark_escape::escape_html; use serde::{Deserialize, Serialize}; use typed_arena::Arena; use typst::diag::{FileError, FileResult, StrResult}; @@ -61,7 +62,8 @@ impl Html { let options = md::Options::ENABLE_TABLES | md::Options::ENABLE_FOOTNOTES | md::Options::ENABLE_STRIKETHROUGH - | md::Options::ENABLE_HEADING_ATTRIBUTES; + | md::Options::ENABLE_HEADING_ATTRIBUTES + | md::Options::ENABLE_CJK_FRIENDLY_EMPHASIS; // Convert `[foo]` to `[foo]($foo)`. let mut link = |broken: md::BrokenLink| { @@ -191,7 +193,7 @@ impl<'a> Handler<'a> { fn handle(&mut self, event: &mut md::Event<'a>) -> bool { match event { // Rewrite Markdown images. - md::Event::Start(md::Tag::Image(_, path, _)) => { + md::Event::Start(md::Tag::Image { dest_url: path, .. }) => { *path = self.handle_image(path).into(); } @@ -205,12 +207,12 @@ impl<'a> Handler<'a> { } // Register HTML headings for the outline. - md::Event::Start(md::Tag::Heading(level, id, _)) => { + md::Event::Start(md::Tag::Heading { level, id, .. }) => { self.handle_heading(id, level); } // Also handle heading closings. - md::Event::End(md::Tag::Heading(level, _, _)) => { + md::Event::End(md::TagEnd::Heading(level)) => { nest_heading(level, self.nesting()); } @@ -225,7 +227,7 @@ impl<'a> Handler<'a> { } // Rewrite links. - md::Event::Start(md::Tag::Link(ty, dest, _)) => { + md::Event::Start(md::Tag::Link { link_type: ty, dest_url: dest, .. }) => { assert!( matches!( ty, @@ -263,7 +265,7 @@ impl<'a> Handler<'a> { self.code = EcoString::new(); return false; } - md::Event::End(md::Tag::CodeBlock(md::CodeBlockKind::Fenced(_))) => { + md::Event::End(md::TagEnd::CodeBlock) => { let Some(lang) = self.lang.take() else { return false }; let html = code_block(self.resolver, &lang, &self.code); *event = md::Event::Html(html.raw.into()); @@ -295,7 +297,7 @@ impl<'a> Handler<'a> { fn handle_heading( &mut self, - id_slot: &mut Option<&'a str>, + id_slot: &mut Option>, level: &mut md::HeadingLevel, ) { nest_heading(level, self.nesting()); @@ -307,24 +309,24 @@ impl<'a> Handler<'a> { let default = body.map(|text| text.to_kebab_case()); let has_id = id_slot.is_some(); - let id: &'a str = match (&id_slot, default) { - (Some(id), default) => { - if Some(*id) == default.as_deref() { + let id = match id_slot.take() { + Some(id) => { + if Some(id.as_ref()) == default.as_deref() { eprintln!("heading id #{id} was specified unnecessarily"); } id } - (None, Some(default)) => self.ids.alloc(default).as_str(), - (None, None) => panic!("missing heading id {}", self.text), + None => match default { + Some(default) => md::CowStr::Borrowed(self.ids.alloc(default).as_str()), + None => panic!("missing heading id {}", self.text), + }, }; - *id_slot = (!id.is_empty()).then_some(id); - // Special case for things like "v0.3.0". let name = match &body { - _ if id.starts_with('v') && id.contains('.') => id.into(), + _ if id.starts_with('v') && id.contains('.') => id.as_ref().into(), Some(body) if !has_id => body.as_ref().into(), - _ => id.to_title_case().into(), + _ => id.as_ref().to_title_case().into(), }; let mut children = &mut self.outline; @@ -336,7 +338,8 @@ impl<'a> Handler<'a> { depth -= 1; } - children.push(OutlineItem { id: id.into(), name, children: vec![] }); + children.push(OutlineItem { id: id.as_ref().into(), name, children: vec![] }); + *id_slot = (!id.is_empty()).then_some(id); } fn handle_link(&self, link: &str) -> StrResult { @@ -434,7 +437,7 @@ fn code_block(resolver: &dyn Resolver, tag: &str, text: &str) -> Html { if lang.is_empty() { let mut buf = String::from("
");
-        md::escape::escape_html(&mut buf, &display).unwrap();
+        escape_html(&mut buf, &display).unwrap();
         buf.push_str("
"); return Html::new(buf); } else if !matches!(lang, "example" | "typ" | "preview") { diff --git a/docs/tutorial/1-writing.md b/docs/tutorial/1-writing.md index 100215bec..b680fdac4 100644 --- a/docs/tutorial/1-writing.md +++ b/docs/tutorial/1-writing.md @@ -64,7 +64,7 @@ behaviour of these natural structures. あなたは「レポートに図表を入れるともっとよくなる」と考えているとします。やりましょう。 Typstでは、PNG、JPEG、GIF、SVG、PDF、WebPの形式の画像をサポートしています。 -プロジェクトに画像ファイルを追加するには、まず左サイドバーのボックスアイコンをクリックして _ファイルパネル_ を開きます。 +プロジェクトに画像ファイルを追加するには、まず左サイドバーのボックスアイコンをクリックして_ファイルパネル_を開きます。 ここにはプロジェクト内の全てのファイルのリストが表示されます。 現在、ここにあるのはあなたが書いているメインのTypstファイルだけです。 別のファイルをアップロードするには、右上隅の矢印のボタンをクリックします。 @@ -73,10 +73,10 @@ Typstでは、PNG、JPEG、GIF、SVG、PDF、WebPの形式の画像をサポー ![Upload dialog](1-writing-upload.png) -以前にも見てきたように、Typstでは特定の記号(_マークアップ_ と呼ばれる)が特有の意味を持ちます。 +以前にも見てきたように、Typstでは特定の記号(_マークアップ_と呼ばれる)が特有の意味を持ちます。 `=`、`-`、`+`、`_` をそれぞれ見出し、リスト、強調テキストを作成するために使用することができます。 しかし、文書に挿入したいもの全てに特別な記号を割り当てると、すぐに分かりづらく、そして扱いづらくなってしまいます。 -そのため、Typstでは一般的な書式にのみマークアップ記号を用意し、それ以外は全て _関数_ を使って挿入します。 +そのため、Typstでは一般的な書式にのみマークアップ記号を用意し、それ以外は全て_関数_を使って挿入します。 ページに画像を表示させるためには、Typstの[`image`]($image)関数を使用します。 @@ -84,8 +84,8 @@ Typstでは、PNG、JPEG、GIF、SVG、PDF、WebPの形式の画像をサポー #image("glacier.jpg") ``` -一般的に、関数は一連の _引数_ に対して何らかの出力を生成します。 -マークアップ内で関数を _呼び出す_ 時は、あなたが関数の引数を指定すると、Typstがその結果(関数の _戻り値_)を文書に挿入してくれます。 +一般的に、関数は一連の_引数_に対して何らかの出力を生成します。 +マークアップ内で関数を_呼び出す_時は、あなたが関数の引数を指定すると、Typstがその結果(関数の_戻り値_)を文書に挿入してくれます。 今回の場合、`image` 関数は1つの引数として画像ファイルへのパスを受け取ります。 マークアップで関数を呼び出すには、まず `#` 文字を入力し、直後に関数の名前を記述します。 その後、引数を丸括弧で囲みます。 @@ -93,7 +93,7 @@ Typstは引数リスト内でさまざまなデータ型を認識します。 私たちの画像のファイルパスは短い [文字列]($str) ですので、二重引用符で囲む必要があります。 挿入された画像はページ全体の幅を使います。これを変更するには、`image` 関数に `width `引数を渡します。 -これは _名前付き_ 引数であり、`引数の名前: 引数の値` という形式で指定されます。 +これは_名前付き_引数であり、`引数の名前: 引数の値` という形式で指定されます。 複数の引数がある場合はカンマで区切ります。そのため、ここでは先ほど指定したファイルパスの後ろにカンマを付ける必要があります。 ```example @@ -113,7 +113,7 @@ Typstは引数リスト内でさまざまなデータ型を認識します。 `#` 記号は、マークアップ内でテキストと関数呼び出しを区別するために書くものなのです。 キャプションの中には、任意のマークアップを含めることが出来ます。 -ある関数の引数としてマークアップを指定するためには、それを角括弧 `[ ]` で囲みます。この「マークアップが角括弧で囲まれている構造」のことを、_コンテンツブロック_ と呼ばれます +ある関数の引数としてマークアップを指定するためには、それを角括弧 `[ ]` で囲みます。この「マークアップが角括弧で囲まれている構造」のことを、_コンテンツブロック_と呼ばれます ```example #figure( @@ -151,7 +151,7 @@ we don't take action soon! どちらもテキストを含んでいるように見えますが、違いは何でしょうか? コンテンツブロックはテキストを含むことができますが、それ以外にもさまざまなマークアップ、関数呼び出しなどを含むことができます。 -一方、文字列は本当に _文字の並び_ に過ぎません。 +一方、文字列は本当に_文字の並び_に過ぎません。 例えば、image関数は、引数として画像ファイルへのパスが渡されることを想定しています。ここに文章の段落や他の画像を渡しても意味がありません。 image関数の引数としてマークアップがダメで文字列が許可されるのは、そういうわけなのです。 diff --git a/docs/tutorial/2-formatting.md b/docs/tutorial/2-formatting.md index bb2cbecbd..ddf8dcd18 100644 --- a/docs/tutorial/2-formatting.md +++ b/docs/tutorial/2-formatting.md @@ -9,7 +9,7 @@ description: Typstチュートリアル この章では、Typstの組版システムを使ってレポートの体裁を整える方法を示します。 ## setルール { #set-rule } -前章で見たように、Typstにはコンテンツを _挿入する_ 関数(例:[`image`]関数)と、引数として受け取ったコンテンツを*操作する*関数(例:[`align`]関数)があります。 +前章で見たように、Typstにはコンテンツを_挿入する_関数(例:[`image`]関数)と、引数として受け取ったコンテンツを*操作する*関数(例:[`align`]関数)があります。 例えば、フォントを変更したいとき、最初に思いつくことは、それを行う関数を探して、その関数で文書全体を囲むことでしょう。 ```example @@ -27,14 +27,14 @@ description: Typstチュートリアル ``` ここで、関数の全ての引数は括弧の中で指定されるべきではないか?と思うでしょう。 -なぜ括弧の _後_ にコンテンツを記述する2つ目の角括弧があるのでしょうか? +なぜ括弧の_後_にコンテンツを記述する2つ目の角括弧があるのでしょうか? 答えは、関数にコンテンツを渡すことはTypstではよくあるため、特別な構文があるからです。 コンテンツを引数リストの中に入れる代わりに、通常の引数の後に角括弧内でコンテンツを直接書くことが可能であり、これによりカンマ区切りを減らすことができます。 上で見たように、これは正しく動作します。[`text`]関数を使えば、その範囲内の全てのテキストのフォントを調整できます。しかし、無数の関数で文書を囲み、選択的に各場所でスタイルを適用しようとするとすぐに面倒になります。 幸いなことに、Typstにはもっと簡潔な記法があります。 -_setルール_ を使えば、以後現れる全てのコンテンツに対してスタイル設定を適用可能です。 +_setルール_を使えば、以後現れる全てのコンテンツに対してスタイル設定を適用可能です。 `{set}`キーワードを入力し、その後に設定したい関数の名前と引数のリストを括弧で囲んでsetルールを記述します。 ```example @@ -81,7 +81,7 @@ setルールを書くときは、スタイルを設定したい要素の種類 - [`document`]($document) タイトルや著者情報などPDF出力に含まれるメタデータ 関数のパラメーターは全て設定できるわけではありません。 -一般的に、関数のパラメーターを設定できるのは、関数に _どのように_ 実行させるかを指示するパラメーターだけであり、関数に _何を_ 実行させるかを指示するパラメーターは設定できません。 +一般的に、関数のパラメーターを設定できるのは、関数に_どのように_実行させるかを指示するパラメーターだけであり、関数に_何を_実行させるかを指示するパラメーターは設定できません。 関数のリファレンスページには、設定可能なパラメーターが示されています。 文書にもう少しスタイルを追加してみましょう。 @@ -189,7 +189,7 @@ text関数の引数リストにいるとき、補完パネルで利用可能な ``` この例では、[`lorem`]関数を使って仮テキストを生成しています。 -この関数は引数に数値を取り、その単語数の _Lorem Ipsum_ テキストを生成します。 +この関数は引数に数値を取り、その単語数の_Lorem Ipsum_テキストを生成します。
@@ -197,7 +197,7 @@ headingとtextのsetルールが、それぞれの関数で作成されていな Typstは内部的に`[= Conclusion]`と書くたびに`heading`関数を呼び出します。 実際に、関数呼び出し `[#heading[Conclusion]]` は上記の見出しマークアップと同等です。 -他のマークアップ要素も同様に機能し、対応する関数呼び出しのための _シンタックスシュガー_ に過ぎません。 +他のマークアップ要素も同様に機能し、対応する関数呼び出しのための_シンタックスシュガー_に過ぎません。