Pelican中Markdown图片插入语法困惑求助
你遇到的这个问题,核心原因大概率是没启用Pelican为Markdown专门提供的路径解析扩展——毕竟reStructuredText的图片语法是Pelican默认支持的,但Markdown要识别{filename}这类占位符,得额外配置扩展才行。我给你一步步梳理排查方案:
第一步:启用
pelican_markdown_extensions.path扩展
打开你的pelicanconf.py配置文件,找到MARKDOWN配置块,确保里面包含这个扩展。修改后的配置大概是这样:MARKDOWN = { 'extension_configs': { 'markdown.extensions.codehilite': {'css_class': 'highlight'}, 'markdown.extensions.extra': {}, 'markdown.extensions.meta': {}, 'pelican_markdown_extensions.path': {}, # 这行是关键! }, 'output_format': 'html5', }这个扩展的作用就是让Pelican能识别并解析
{filename}、{attach}这类路径占位符,否则Markdown渲染器只会把它们当成普通文本输出。第二步:确认图片路径的正确性
检查你的图片是否确实放在content/images/Rugby-Tackle.jpg这个位置——因为{filename}对应的是Pelican项目根目录下的content文件夹。如果图片位置不对,哪怕扩展启用了也找不到资源。第三步:用基础语法先测试
先抛开点击放大的嵌套链接,用最基础的Markdown图片语法测试:等这个能正常显示后,再尝试添加点击放大的嵌套版本:
[]({filename}/images/Rugby-Tackle.jpg)额外排查:清理缓存重新生成
如果改了配置还是没效果,试试清空Pelican的输出目录(默认是output)和缓存目录(__pycache__),然后重新生成站点:rm -rf output __pycache__ pelican content
简单来说,reStructuredText的路径处理是Pelican默认支持的,但Markdown需要额外开启扩展才能实现相同的路径解析能力,这就是你两种语法表现不一样的核心原因。
内容的提问来源于stack exchange,提问作者AZhao

