嘿社区,我正在使用一个 Discourse 站点来发布一些主要用 Markdown 编写的规范,但我遇到了一个问题:用于标题的锚点正在被渲染,而它们本应被隐藏。
有人知道有什么方法可以隐藏它们吗?
你好,欢迎!
这是来自 kramdown 还是 PHP Markdown Extra 的语法?
Discourse 依赖于 MarkdownIt,它基于 CommonMark 规范。它不支持指定标题 ID。
他们似乎曾经讨论过这个问题:https://talk.commonmark.org/t/anchors-in-markdown/247,但我没有看到任何明确的结论。
但是,Discourse 会自动生成锚点。
你可以在这里看到:
基本上,你可以预期这些 ID:
h-{headingId} (没有帖子 ID,没有 slug)h-{slug}-{headingId} (没有帖子 ID)p-{postId}-h-{headingId} (有帖子 ID,没有 slug)p-{postId}-h-{slug}-{headingId} (有帖子 ID,有 slug)例如:
如果你愿意,仍然可以用 HTML 手动创建一个锚点,例如:<a>
附加资源 –
如果你需要生成目录,可以使用这个组件:
非常感谢 @Arkshine!
问题更多在于我们同时在 discourse 中发布其他用途的 markdown,因此维护文档的人员在将多个 markdown 合并到单个文档时,会使用这些锚点进行交叉引用。
我想我会编写一个脚本来在发布内容之前进行清理。
明白了!
解决方案也是为 Discourse 创建一个带有 markdown 插件的插件来支持此语法。如果您有预算,可以咨询 #marketplace。
如果您仍然感兴趣,我制作了一个小型 Discourse 插件,可以处理在标题旁边指定锚点 ID。
它与 Discourse 的自动标题锚点协同工作。
请注意,它仅支持基本功能。可能有许多变体,但此插件仅支持以下内容:
## My Heading {#custom_section}
将生成:
<a name="custom_section" href="#custom_section" class="custom-anchor-id"></a>
您可以试试!如果您在使用过程中遇到任何问题,请告诉我。
感谢 @Arkshine!
我会和我们的 discourse 管理员确认是否可以使用它 ![]()
@Arkshine 你知道 Discourse(当前网站)中的锚点是如何生成的吗?我问是因为它们似乎不遵循你分享的模式。例如,请看这个:
https://meta.discourse.org/t/adding-a-table-to-your-post-using-markdown/66544#creating-a-simple-table-1
对此有设置吗?我找不到。或者他们使用的是 <a>?还是你的插件?