2

我有一个使用 Jinja2 的 MkDocs 站点模板。我正在尝试添加指向每个页面的 PDF 版本的链接。PDF 始终与 markdown 文件同名。所以我试图在模板中添加一个链接,该链接将自动针对每个页面的正确 PDF。这比让作者在每个页面上添加手动链接感觉更干净。

<a href="{{ page.url|url }}.pdf">Download</a>

以上几乎是正确的,但所有 URL 的末尾都有一个“/”。意思是结果是:

page/url/slug/.pdf

MkDocs 和 Jinja 似乎都没有提供过滤器来删除斜杠,所以我想知道是否可以使用正则表达式来删除它。我相信这会很简单\/$?但是,我从文档中看不到如何在 Jinja 中应用正则表达式过滤器?

4

3 回答 3

3

你可以这样做:

{{ "string/".rstrip("/") }}

为我工作。

于 2021-09-30T17:00:16.900 回答
1

所以我为我的具体情况找到了一个解决方法,但这很讨厌:

<a href='{{ config.site_url }}{{ page.url | reverse | replace("/", "", 1) | reverse }}.pdf'>Download</a>
  1. 预先添加网站 URL
  2. 获取当前页面 URL,反转它,使用可选的 count 参数替换以删除 FIRST '/',然后再次反转它以使其以正确的顺序返回
  3. 附加“.pdf”

根据上面 Jan 链接的问题的答案之一,您不能简单地在 Jinja2 中使用正则表达式而不进入自定义过滤器。

于 2019-02-11T13:47:14.237 回答
1
<a href="{{ page.url | replace("/$", "")}}.pdf">Download</a>

哪里$是行的结尾/字符串的结尾。

因此,/$意味着/最后。

于 2019-02-11T13:59:33.530 回答