2 个稳定版本

1.1.0 2022年11月5日
1.0.0 2021年8月28日

#3 in #dialogue

自定义许可证

105KB
1.5K SLoC

ogam

什么是 ogam

在文档中一致地执行排版规则可能很复杂。在法语中,对话的排版规则可能最为复杂。 ogam 是一种特定领域的标记语言,旨在让小说作者免于手动执行排版规则的痛苦。

此外,ogam 允许对文本进行元数据注释。例如,可以指明特定对话行是由哪个角色说的。这为可发现性铺平了道路,例如,查找特定角色说话的场景列表。

语言

格式化

This is a regular sentence.
<p>This is a regular sentence.</p>

这是一个普通句子。


*This is a sentence with emphasize.*</p>
<p><em>This is a regular sentence.</em></p>

这是一个普通句子。


+This is a sentence with strong emphasize.+</p>
<p><strong>This is a sentence with strong emphasize.</strong></p>

这是一个强调的句子。


This +is+ a *sentence with +multiple emphasizes+*.
<p>This <strong>is</strong> a <em>sentence with <strong>multiple emphasizes</strong></em>.</p>

这是一个 强调 的句子。


"This is a +quote+."
<p>“This is a <strong>quote</strong>.”</p>

“这是一个 引用。”


This +is an "incorrect+" sentence.
<p>This <span class="illformed_inline">+is an "incorrect+" sentence.</span></p>

This +is an "incorrect+"
sentence.
<p>This <span class="illformed_inline">+is an "incorrect+"</span> sentence.</p>

对话

[Hi,| she says.|](Clara)
<p><span class="dialogue by-Clara"><span class="reply">Hi,</span>” she says.</span></p>

嗨,她说。


[Hi,| she says.| How are you?](Clara)
<p><span class="dialogue by-Clara"><span class="reply">Hi,</span> she says. <span class="reply">How are you?</span></span></p>

嗨,她说。 你好吗?


[Hi,| she says.| How are you?](Clara) [I'm fine, thanks.]
<p><span class="dialogue by-Clara"><span class="reply">Hi,</span> she says. <span class="reply">How are you?</span></span></p><p><span class="dialogue"><span class="reply">I’m fine, thanks.</span></span></p>

嗨,她说。 你好吗?

我很好,谢谢。


[Hi,| she says.| How are you?](Clara) She was smiling. [I'm fine, thanks.]
<p><span class="dialogue by-Clara"><span class="reply">Hi,</span> she says. <span class="reply">How are you?</span></span> She was smiling. <span class="dialogue"><span class="reply">I’m fine, thanks.</span></span></p>

嗨,她说。 你好吗? 她在微笑。 我很好,谢谢。


It was a hot day. [Hi!| he said.](Aaron)
His friends smiled.
<div><p>It was a hot day.<span class="illformed_inline">[Hi!| he said.](Aaron)</span> His friends smiled. </p></div>

天气很热。[嗨!|他说。(Aaron)](Aaron) 他的朋友们笑了。

段落

This is a first paragraph.

This is a second paragraph.
<div><p>This is a first paragraph.</p><p>This is a second paragraph</p>

这是第一段。

这是第二段


[Ceci est une première ligne de dialogue.]

[Ceci est une autre ligne de dialogue.]
<div><p><span class="dialogue">«&nbsp;<span class="reply">Ceci est une première ligne de dialogue.</span></span></p><p><span class="dialogue"><span class="reply">Ceci est une autre ligne de dialogue.</span></span></p></div>

「 这是第一行对话。

这是另一行对话。

实现

在此期间,一个 ogam 的第一个实现(即 ogmarkup)解析器和编译器已被编写在 Haskell 中,并且已在 hackage(MIT)上发布。

这个第一个项目已被废弃,以便于用 Rust 重新编写。与它的前身不同,ogam 以 MPL 2.0 的条款发布。

依赖关系

~0.9–1.3MB
~25K SLoC