将 markdown 与 html 混合以包含图像和空行含义

Mixing markdown with html for including image and empty line meaning

当我输入以下内容时:

|![alt ]({attach}img/myimg.png "hint1")|

鹈鹕将按预期生成图像。我想使用 html 来自定义食物,所以我使用了:

<p align="center">
![alt ]({attach}img/myimg.png "hint1")
<br>
Figure 1.
</p>

但鹈鹕只生产:

![alt ]({attach}img/myimg.png "hint1")
Figure 1.

但是,如果我把第一个 table 和第二个 html 没有像这样的空分隔线:

|![Attention architecture ]({attach}img/myimg.png "hint1")|
<p align="center">
![Attention architecture ]({attach}img/myimg.png "hint1")
<br>
Figure 1.
</p>

我有两张图片..但是...当我在第一张图片指令之后和第二张图片指令之前放置空行时,例如:

|![Attention architecture ]({attach}img/myimg.png "hint1")|

<p align="center">
![Attention architecture ]({attach}img/myimg.png "hint1")
<br>
Figure 1.
</p>

然后只有第一条指令包含预期的图像,第二条指令不包含图像,并且产生相同的结果:

  ![alt ]({attach}img/myimg.png "hint1")
    Figure 1.

如何使用这种HTML包含图片的方式?

总之不能用HTML来包装Markdown。 HTML 内不处理 Markdown。但是您可以使用 Markdown 扩展为生成的 HTML.

分配属性

作为 rules 状态:

Markdown formatting syntax is not processed within block-level HTML tags. E.g., you can’t use Markdown-style *emphasis* inside an HTML block.

当然,您想知道为什么当您在 <p> 标记之前的行中包含一行文本时它似乎有效。规则还有说明:

The only restrictions are that block-level HTML elements — e.g. <div>, <table>, <pre>, <p>, etc. — must be separated from surrounding content by blank lines, and the start and end tags of the block should not be indented with tabs or spaces. Markdown is smart enough not to add extra (unwanted) <p> tags around HTML block-level tags.

在您的情况下,缺少空行会导致解析器无法将 <p> 标记识别为原始 HTML 块。因此,它将块包装在自己的额外 <p> 标记中,生成无效的 HTML。因此,样式挂钩可能无法如您所愿地应用。

碰巧,Pelican 包括对 Markdown 扩展的支持,包括 Attribute List Extension, which is installed by default along with the Markdown parser. You just need to enable 它(向下滚动到 Markdown)。将以下内容添加到您的配置文件中:

MARKDOWN = {
    'extension_configs': {
        'markdown.extensions.attr_list': {}
}

然后您可以在 Markdown 中包含属性列表以分配各种样式挂钩。

![alt ]({attach}img/myimg.png "hint1")
<br>
Figure 1.
{: align=center }