Joh*_*ohn 6 python latex jinja2
如果插入空格,Jinja2 会正确呈现三个彼此相邻的大括号,如下面的案例 1 所示。但是,如果没有空格,则会引发异常,如下例 2 所示。此处的空白区域用红条表示。
是否可以渲染不包含空格的输出,即渲染类似的输出\textbf{Hello, World!}
?
下面列出了一个Python代码示例
from jinja2 import Template
template_1 = Template(r"\textbf{ {{msg}} }")
#template_2 = Template(r"\textbf{{{msg}} }") # Throws an exception
msg = "Hello, World!"
out_1 = template_1.render({'msg':msg})
#out2 = template_2.render({'msg':msg}) # FAILS!
print(out_1)
Run Code Online (Sandbox Code Playgroud)
输出
\textbf{ Hello, World! }
Run Code Online (Sandbox Code Playgroud)
我想要的是
\textbf{Hello, World!}
Run Code Online (Sandbox Code Playgroud)
小智 8
您是否尝试过在 {{ 之后和 }} 之前添加“-”?
template_2 = Template(r"\textbf{ {{-msg-}} }")
Run Code Online (Sandbox Code Playgroud)
这将删除空格。因此,您可以将单/双花括号之间的空格保留到模板中,并在渲染期间 Jinja2 删除它们。
小智 5
我发现的最好的解决方案是使用{% raw %}
标签来专门包含一个大括号:
template_1 = Template(r"\textbf{% raw %}{{% endraw %}{{msg}}{% raw %}}{% endraw %}")
Run Code Online (Sandbox Code Playgroud)
这将呈现
\textbf{Hello, World!}
Run Code Online (Sandbox Code Playgroud)
如预期的。