请考虑以下 HTML:
<ruby>振<rt>ふ</rt>り<rt></rt>仮<rt>が</rt>名<rt>な</rt></ruby>
振り仮名
这里的空 <rt></rt> 非常关键,因为它确保了每个字符上方正确显示假名。り 后面的空 <rt></rt> 表示该字符上方不显示假名。正如您在上文所见,这符合预期。
然而,当我引用该文本(非整篇帖子引用)时,生成的 HTML 如下:
<ruby>振<rt>ふ</rt>り仮<rt>が</rt>名<rt>な</rt></ruby>
振り仮名
由于空的 <rt></rt> 被移除,が 现在出现在 り 和 仮 两个字符的上方,而不是像原文本那样仅出现在 仮 上方。这是因为系统认为 が 应该放置在自上一个 rt 标签以来的所有 preceding 字符上方。
如果可能的话,能否更新对 rt HTML 标签的引用处理,确保即使为空也能将其完整复制?
Falco
(Falco)
3
在 HTML5 规范 中,我看到示例使用了以下两种形式之一:
\u003cruby\u003e\u003crb\u003e振\u003crb\u003eり\u003crb\u003e仮\u003crb\u003e名\u003crt\u003eふ\u003crt\u003e\u003crt\u003eが\u003crt\u003eな\u003c/ruby\u003e
振り仮名
或者
\u003cruby\u003e振\u003crt\u003eふ\u003c/rt\u003e\u003c/ruby\u003eり\u003cruby\u003e仮\u003crt\u003eが\u003c/rt\u003e名\u003crt\u003eな\u003c/rt\u003e\u003c/ruby\u003e
振り仮名
因此,我建议使用规范中现有的任意一种有效形式?第一种甚至更简短,输入起来更方便!
看起来第一个版本正确的写法应该是:
<ruby><rb>振<rb><rt>ふ<rt>り<rb>仮<rb><rt>が<rb>名<rt>な</ruby>
振仮名
相比之下:
<ruby>振<rt>ふ</rt>り<rt></rt>仮<rt>が</rt>名<rt>な</rt></ruby>
振り仮名
所以长度差不多。我其实从未见过第一种写法中使用的 rb 方式。我不确定大家是否普遍使用这种版本。不过它确实能正确引用。但我仍然很好奇,在引用时是否还有其他情况会复制空 HTML 标签?
我正在开发一个 Discourse 插件,它封装了一个现有的用于 ruby 标签的 markdown-it 插件,该插件遵循传统的 rt 方式,而不是 rb + rt 的方式。不幸的是,这意味着在这种特定情况下进行引用会导致 HTML 格式错误。当然,如果人们手动编写 ruby HTML 标签,这种情况也可能发生。我只是碰巧从插件中注意到了这一点。