TsukuyoOka.MarkdigExtensions.RubyAnnotation 1.0.0

dotnet add package TsukuyoOka.MarkdigExtensions.RubyAnnotation --version 1.0.0
NuGet\Install-Package TsukuyoOka.MarkdigExtensions.RubyAnnotation -Version 1.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="TsukuyoOka.MarkdigExtensions.RubyAnnotation" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add TsukuyoOka.MarkdigExtensions.RubyAnnotation --version 1.0.0
#r "nuget: TsukuyoOka.MarkdigExtensions.RubyAnnotation, 1.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install TsukuyoOka.MarkdigExtensions.RubyAnnotation as a Cake Addin
#addin nuget:?package=TsukuyoOka.MarkdigExtensions.RubyAnnotation&version=1.0.0

// Install TsukuyoOka.MarkdigExtensions.RubyAnnotation as a Cake Tool
#tool nuget:?package=TsukuyoOka.MarkdigExtensions.RubyAnnotation&version=1.0.0

Ruby Annotation Markup Extension for Markdig

Japanese Version

This extension adds the ability to parse Aozora Bunko format ruby syntax to Markdig's Markdown parser, enabling the use of ruby annotations in Markdown.

NuGet Package

https://www.nuget.org/packages/TsukuyoOka.MarkdigExtensions.RubyAnnotation/

Install-Package TsukuyoOka.MarkdigExtensions.RubyAnnotation

What is ruby?

Ruby is a short annotation that appears in small letters above or to the right of the text. They are generally used in East Asia, especially Japan, to guide the pronunciation of kanji characters.

The text to be annotated is called the base text.

How to use

Generate and use Markdig's MarkdownPipeline with UseRuby().

using Markdig;
using TsukuyoOka.MarkdigExtensions.RubyAnnotation;

var pipeline = new MarkdownPipelineBuilder().UseRuby().Build();

Console.WriteLine(Markdown.ToHtml("漢字《かんじ》", pipeline));
// → <p><ruby>漢字<rp>(</rp><rt>かんじ</rt><rp>)</rp></ruby></p>
Console.WriteLine(Markdown.ToPlainText("漢字《かんじ》", pipeline));
// → 漢字

You can also change the method of outputting ruby annotations.

using Markdig;
using TsukuyoOka.MarkdigExtensions.RubyAnnotation;

var pipeline = new MarkdownPipelineBuilder()
    .UseRuby(new()
    {
        EnableRubyRenderToPlainText = true,
        OpenParenthesisForRendering = "〔",
        CloseParenthesisForRendering = "〕"
    })
    .Build();

Console.WriteLine(Markdown.ToHtml("漢字《かんじ》", pipeline));
// → <p><ruby>漢字<rp>〔</rp><rt>かんじ</rt><rp>〕</rp></ruby></p>
Console.WriteLine(Markdown.ToPlainText("漢字《かんじ》", pipeline));
// → 漢字〔かんじ〕

Syntax

The syntax in this extension is based on the ruby markup syntax adopted by Aozora Bunko (lang: ja) and now widely used in Japan, especially on novel submission sites such as Shōsetsuka ni Narō (lang: ja).

Kanji《ruby text》 Syntax

In this syntax, the ruby text is written immediately after the base text, enclosed in double angle brackets <sub>(U+300A)</sub> <sub>(U+300B)</sub>. The base text is kanji characters immediately before the opening bracket.

Examples
  • 漢字《かんじ》 → <ruby>漢字<rp>(</rp><rt>かんじ</rt><rp>)</rp></ruby>
  • 隴西《ろうせい》の李徴《りちょう》 → <ruby>隴西<rp>(</rp><rt>ろうせい</rt><rp>)</rp></ruby>の<ruby>李徴<rp>(</rp><rt>りちょう</rt><rp>)</rp></ruby>
  • 霞ヶ浦《かすみがうら》 → <ruby>霞ヶ浦<rp>(</rp><rt>かすみがうら</rt><rp>)</rp></ruby>
  • 代々木《よよぎ》 → <ruby>代々木<rp>(</rp><rt>よよぎ</rt><rp>)</rp></ruby>
  • 本音《建前》 → <ruby>本音<rp>(</rp><rt>建前</rt><rp>)</rp></ruby>
  • Hello《こんにちは》 → Hello《こんにちは》

|Base text《ruby text》 Syntax

In this syntax, a delimiter <sub>(U+FF5C)</sub> is written at the beginning of the base text, and the ruby text is written immediately after the base text, enclosed in double angle brackets <sub>(U+300A)</sub> <sub>(U+300B)</sub>.

The base text can contain both kanji and non-kanji characters.

ASCII |<sub>(U+007C)</sub> can be used instead of .

Examples
  • 博学|才穎《さいえい》 → 博学<ruby>才穎<rp>(</rp><rt>さいえい</rt><rp>)</rp></ruby>
  • |Hello《こんにちは》 → <ruby>Hello<rp>(</rp><rt>こんにちは</rt><rp>)</rp></ruby>
  • |極・雷斬光剣《アルティメット ライジングスラッシュ》 → <ruby>極・雷斬光剣<rp>(</rp><rt>アルティメット ライジングスラッシュ</rt><rp>)</rp></ruby>

|Base text (ruby text) Syntax

The original Aozora Bunko format uses non-ASCII full-width characters, but this extension also defines a syntax that allows writing in ASCII only.

In this syntax, even if the base text is only kanji characters, the range must be indicated by |<sub>(U+007C)</sub>.

Although the syntax is defined for ASCII, not only ASCII |<sub>(U+007C)</sub> (<sub>(U+0028)</sub> )<sub>(U+0029)</sub> but also full-width <sub>(U+FF5C)</sub> <sub>(U+FF08)</sub> <sub>(U+FF09)</sub> can be used.

Examples
  • |漢字(かんじ) → <ruby>漢字<rp>(</rp><rt>かんじ</rt><rp>)</rp></ruby>
  • |隴西(ろうせい)の|李徴(りちょう) → <ruby>隴西<rp>(</rp><rt>ろうせい</rt><rp>)</rp></ruby>の<ruby>李徴<rp>(</rp><rt>りちょう</rt><rp>)</rp></ruby>
  • 漢字(かんじ) → 漢字(かんじ)

Escape Syntax

If you want to use as normal text instead of a ruby syntax, insert <sub>(U+FF5C)</sub> or ASCII |<sub>(U+007C)</sub> immediately before the opening bracket. Otherwise, the standard Markdown escape character using \<sub>(U+005C)</sub> will also work.

Examples
  • 漢字|《かんじ》 → 漢字《かんじ》
  • 漢字\《かんじ》 → 漢字《かんじ》
  • 漢字《かんじ\》 → 漢字《かんじ》
  • 漢字《かんじ\》かんじ》 → <ruby>漢字<rp>(</rp><rt>かんじ》かんじ</rt><rp>)</rp></ruby>
  • \|ハロー《こんにちは》 → |ハロー《こんにちは》
  • ハロー|(こんにちは) → ハロー(こんにちは)

Definition of kanji characters

The term "kanji" in this extension refers to the following in Unicode. Kanji characters include those used only in Japan, those used only in China, those common to all kanji cultures sphere, etc., but no distinction is made.

For each symbol that is not included in Kanji but treated as equivalent to Kanji, we follow the Aozora Bunko's Guideline (lang: ja).

  • CJK Unified ideographs (U+4E00 - U+9FFF)
  • CJK Compatibility Ideographs (U+F900 - U+FAFF)
  • CJK Unified Ideographs Extension A (U+3400 - U+4DBF)
  • CJK Unified Ideographs Extension B (U+20000 - U+2A6DF)
  • CJK Unified Ideographs Extension C (U+2A700 - U+2B73F)
  • CJK Unified Ideographs Extension D (U+2B740 - U+2B81F)
  • CJK Unified Ideographs Extension E (U+2B820 - U+2CEAF)
  • CJK Unified Ideographs Extension F (U+2CEB0 - U+2EBEF)
  • CJK Unified Ideographs Extension G (U+30000 - U+3134F)
  • CJK Unified Ideographs Extension H (U+31350 - U+323AF)
  • CJK Unified Ideographs Extension I (U+2EBF0 - U+2EE5F)
  • CJK Compatibility Ideographs Supplement (U+2F800 - U+2FA1F)
  • Ideographic Iteration Mark (同の字点; Dō no jiten) "々" (U+3005)
  • Ideographic Closing Mark (しめ; Shime) "〆" (U+3006)
  • Ideographic Number Zero "〇" (U+3007)
  • Vertical Ideographic Iteration Mark (二の字点; Ni no jiten) "〻" (U+303B)
  • Katakana Letter Small KE "ヶ" (U+30F6)

It also supports the variation selectors of both the Standardized Variation Sequence (SVS) and the Ideographic Variation Sequence (IVS).

  • Variation Selectors of the SVS (U+FE00 - U+FE0F)
  • Variation Selectors of the IVS (U+E0100 - U+E01EF)

If a variant selector is immediately follows a kanji character, it is treated as part of the kanji character. Conversely, if it follows a non-kanji character, it is treated as part of the non-kanji character.

It does not determine whether the combination of the kanji character and the variant selector is correct as defined in the Unicode specification or the Ideographic Variation Database (IVD).

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.0 97 2/19/2024