Skip to content

neknaj/gloss

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

98 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gloss

Ruby・Anno・Nest・Math・Lint の5つの拡張を持つ Markdown 方言のライブラリ・ツールチェーン。

拡張 構文 説明
Ruby [漢字/かんじ] テキストに音韻注釈(振り仮名・ピンイン・転写など)
Anno {用語/term} テキストに意味注釈(訳語・文法・分類・語間グロスなど)
Nest --- / ;;; セクション明示クローズ(--- は HR あり、;;; は HR なし)
Math $…$ / $$…$$ KaTeX 数式(内部の [/] {/} は Ruby/Anno と解釈しない)
Lint 構文ミス・カタカナへのひらがなルビ・未注釈漢字などの警告

入力ファイルの拡張子は慣習的に .n.md を使う。


提供するツール

Rust ライブラリ(src-core

#![no_std] 対応パーサー。Event ストリームを生成し push_html() で HTML を出力する。

WASM ライブラリ(src-web

wasm-bindgen を使った WASM ビルド。render_markdown() を JS に公開する。

CLI(src-cli

.n.md ファイルを読み込みスタンドアロン HTML ページを出力するバイナリ。


Ruby

[ベース/よみ] の記法でテキストに注釈を付ける。

  • 基本は漢字への振り仮名。片仮名・数字・記号には付けない
  • Ruby は Anno の内部にも外にも書ける
  • ベースが純粋カタカナでよみがひらがなの場合は Lint 警告
[私/わたし]は[漢字/かんじ][仮名/かな][交/ま]じりの[文/ぶん]を[書/か]く

多言語への応用(ピンイン・注音・転写など):

[我/wǒ][在/zài][学/xué][校/xiào][学/xué][习/xí][汉/hàn][语/yǔ]。
[我/ㄨㄛˇ][在/ㄗㄞˋ][學/ㄒㄩㄝˊ][校/ㄒㄧㄠˋ][學/ㄒㄩㄝˊ][習/ㄒㄧˊ][漢/ㄏㄢˋ][語/ㄩˇ]。
[𡨸/Chữ][喃/Nôm]はベトナム語の古い表記体系です。

Anno

{ベース/注釈} の記法でテキストに注釈を付ける。 {ベース/注釈1/注釈2} で複数段(多言語・多段グロス)も可。 Ruby との組み合わせ {[漢字/かんじ]/term} も使える。

訳語・技術用語

{[微分/びぶん][係数/けいすう]/derivative}は{[接線/せっせん]/tangent}の傾きを表す
{カルボン[酸/さん]/carboxylic acid}は{[弱酸/じゃくさん]/weak acid}として{[電離/でんり]/ionize}しやすい

多言語・固有名詞

{[台湾/たいわん]/[台灣/Táiwān]}に行く
{トルストイ/Лев Николаевич Толстой}の小説を読む
{Firenze/Florence} と {Athens/Αθήνα} を訪れる
我明年想去{佛罗伦萨/Firenze/Florence}和{雅典/Αθήνα/Athens}旅行。

語間グロス(発音は Ruby・意味は Anno)

{[книга/kniga]/本}・{[φιλοσοφία/philosophía]/哲学}・{[नमस्ते/namaste]/こんにちは}
{[अहम्/aham]/1SG.NOM} {[ब्रह्म/brahma]/Brahman.NOM} {[अस्मि/asmi]/be.1SG}

韓国語(ハングルベース + 漢字 Anno)

{훈민정음/訓民正音}은 {세종대왕/世宗大王}이 창제한 문자입니다。

Nest

---;;; でセクション階層を明示的に閉じる。 見出しレベル(# の数)がそのまま <section class="nm-sec level-N"> のネスト深さになる。

記号 動作
--- 現在のセクションを閉じ、<hr> を描画する
;;; 現在のセクションを閉じる(HR なし)
# H1
## H2
内容

---        ← H2 を閉じて HR → H1 に戻る

## H2-2
### H3

;;;        ← HR なしで H3 を閉じ → H2-2 に戻る

Math

$…$ でインライン数式、$$…$$ で別行立て数式。 数式区間内の [/] {/} は Ruby・Anno として解釈しない。

$E = mc^2$
$$\int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi}$$

Lint

パーサーが構文ミスや非推奨パターンを Parser::warnings に収集する。 CLI は黄色で stderr に出力。Web プレイグラウンドはアンバー色の警告ボックスに表示。

警告 条件
Possibly malformed ruby syntax [ に対応 ] がない、またはネストが壊れている
Possibly malformed anno syntax { に対応 } がない
Unclosed $ / $$ 数式が閉じられていない
Anno looks like Ruby {漢字/かな} — Anno のつもりが Ruby 記法に見える
Katakana base + hiragana reading [インド/いんど] — カタカナはすでに表音文字
Kanji without ruby ルビのない漢字がテキストに含まれる
Undefined footnote ref [^id] の定義がない
Unused footnote def [^id]: … が参照されていない
Card link: non-HTTP URL @[card](ftp://…) など
Card link: unknown type @[embed](…) など未対応タイプ