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

时间:2017-10-02 09:17:59

标签: html markdown pelican

当我提出以下内容时:

|![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.

但是如果我把第一个表和第二个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方式?

1 个答案:

答案 0 :(得分:0)

简而言之,您无法使用HTML来包装Markdown。 Markdown不在HTML中处理。但您可以使用Markdown扩展名为生成的HTML分配属性。

作为rules州:

  

在块级HTML标记中不处理Markdown格式化语法。例如,您不能在HTML块中使用Markdown样式的*emphasis*

当然,您想知道为什么当您在<p>标记之前的行上包含一行文字时它似乎有效。规则还解释了:

  

唯一的限制是块级HTML元素 - 例如<div><table><pre><p>等 - 必须通过空行与周围内容分开,并且不应缩进块的开始和结束标记带有标签或空格。 Markdown非常聪明,不会在HTML块级标记周围添加额外的(不需要的)<p>标记。

在您的情况下,缺少空行会导致解析器无法将<p>标记识别为原始HTML块。因此,它将块包装在自己的额外<p>标记中,从而生成无效的HTML。因此,造型挂钩可能无法按照您的意愿使用。

实际上,Pelican包括对Markdown扩展的支持,包括Attribute List Extension,默认情况下会与Markdown解析器一起安装。您只需要enable它(向下滚动到Markdown)。将以下内容添加到配置文件中:

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

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

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