问题标题应该是自我解释的。我在Sphinx的Markdown raw中找不到任何内容。
我知道我可以在md
文件中直接键入html,但是我有一个很长的html代码段,我想与markdown保持分隔。
答案 0 :(得分:2)
以rules的简明状态(添加了强调):
对于Markdown语法未涵盖的任何标记,您只需 使用HTML本身。 无需在其前添加或定界为 表示您正在从Markdown切换为HTML;你只用 标签。
唯一的限制是块级HTML元素-例如
<div>
,<table>
,<pre>
,<p>
等-必须与周围的内容分开 用空行,并且该块的开始和结束标签不应为 带有制表符或空格的缩进。 Markdown足够聪明,无法添加 HTML块级标签周围的多余(不需要的)<p>
标签。
如果您担心Markdown可能会破坏原始HTML的内容,则规则还应指出:
请注意,Markdown格式语法不会在其中处理 块级HTML标签。例如,您不能使用Markdown风格的
*emphasis*
在HTML块中。
因此,只要您的HTML块正确地包装在块级HTML标记中,Markdown便不会处理它们。当然,这不适用于Markdown文本中包含的内联HTML元素:
跨度HTML标签-例如
<span>
,<cite>
或<del>
-可以是 在Markdown段落,列表项或标题中的任何位置使用。如果你 想要的话,甚至可以使用HTML标签代替Markdown格式;例如 如果您希望使用HTML<a>
或<img>
标签而不是 Markdown的链接或图片语法,请继续。与块级HTML标签不同,Markdown语法在 跨度标签。
同样重要的是要注意,某些 Markdown实现未遵循上述规则。因此,您可能需要查看正在使用的实现的文档,以确保它遵循规则,或者具有强制使其遵循规则的配置开关。
然后是Commonmark,它不遵循原始的Markdown规则,而是使用different set of rules。具体来说,Commonmark在原始HTML块内不需要空白行,以避免Markdown解析。 CommonMark会将所有内容都视为原始HTML块中第一个空白行之后的Markdown。但是,如果您使用的是老式的Markdown解析器而不是Commonmark解析器,那么这应该不是问题。
最后请注意,Markdown(不是Commonmark)比HTML 5早得多。因此,添加到HTML 5的较新的块级元素(<section>
,<article>
等)大多数Markdown实施都不认为它是块级元素。一些实现已被更新以增加支持,但是即使在实现之间也没有一致性,关于哪些新元素应被视为块级,因为尚未更新参考实现以设置总裁。因此,最好坚持使用旧的HTML 4和/或XHTML 1规范中定义为块级的元素。