< 在markdown中有特殊意义?

< has special meaning in markdown?

tmp.md:

Choices for blank 91:       __A__:  pa>pb      __B__:  pa<pb      __C__: pa==pb      __D__: pa<>pb

Choices for blank 92:       __A__:  pa<>pb      __B__:  pa<pb      __C__:  pa>pb      __D__: pa==pb

使用 'grip --export tmp.md' 编译并得到意外结果:

Choices for blank 91: A: pa>pb B: papb

Choices for blank 92: A: pa<>pb B: papb D: pa==pb

GRIP 似乎将 < 视为元字符。但是降价手册上没有这么说吗?我在这里遗漏了什么吗?

作为 rules 状态:

For any markup that is not covered by Markdown’s syntax, you simply use HTML itself. There’s no need to preface it or delimit it to indicate that you’re switching from Markdown to HTML; you just use the tags.

因此,Markdown 通过 <> 不变。但是,由于这些字符是 HTML 标记分隔符,您的浏览器会将 <> 之间的任何内容解释为 HTML 标记,并且不会显示它。当然,如果您从不打开标签(<),那么浏览器将忽略结束标签(>)。因此,当使用 < 作为纯文本字符时,最好使用 HTML 实体以确保浏览器将其视为:&lt;(提示: Less Than => &lt; => <)

因此,要使用您的示例输入:

Choices for blank 91:       __A__:  pa>pb      __B__:  pa&lt;pb      __C__: pa==pb      __D__: pa&lt;>pb

Choices for blank 92:       __A__:  pa&lt;>pb      __B__:  pa&lt;pb      __C__:  pa>pb      __D__: pa==pb

输出将如下所示:

Choices for blank 91: A: pa>pb B: pa<pb C: pa==pb D: pa<>pb

Choices for blank 92: A: pa<>pb B: pa<pb C: pa>pb D: pa==pb

请注意,这是您的浏览器的行为。除非 Markdown 没有在 Markdown 文档中使用原始 HTMLallow/support,否则 Markdown 无法改变这一点。

当然,每次想要 < 字符时都键入 &lt; 并不理想。通常,包含此类字符的文本可归类为“代码”。因此通常最好将它包装在 code span (when it is embedded in text) or a code block 中(当所有代码都由一行或多行组成时)。

For example, this paragraph contains `<>` characters.

上面的 Markdown 将导致生成以下 HTML:

<p>For example, this paragraph contains <code>&lt;&gt;</code> characters.</p>

请注意,尖括号已为您转换为 &lt;&gt;(并包含在 <code> 标记中)。浏览器会将其呈现为:

For example, this paragraph contains <> characters.