Python 使用jinja2创建表
我正在尝试使用jinja2创建一个(latex)表。我定义了一个宏来帮助我创建表:Python 使用jinja2创建表,python,jinja2,templating-engine,Python,Jinja2,Templating Engine,我正在尝试使用jinja2创建一个(latex)表。我定义了一个宏来帮助我创建表: {% macro table(header, rows, columns) %} \begin{tabular}{(formatting, later)} {{ row(header) }} {% for row in rows %} {% for column in columns %} {{ caller(row, column) }} & % *here* {% en
{% macro table(header, rows, columns) %}
\begin{tabular}{(formatting, later)}
{{ row(header) }}
{% for row in rows %}
{% for column in columns %}
{{ caller(row, column) }} & % *here*
{% endfor %} \\
{% endfor %}
\end{tabular}
{% endmacro %}
我可以这样使用模板:
{% call(row, column) table.table(header, rows, columns) %}
Content at row = {{row}}, column = {{column}}
{% endcall %}
我很喜欢这些宏的工作方式。但是,问题是我希望通过符号和符号而不是
在每行后面打一个标志。基本上现在我有了这个:
Content at row = 0, column = 0 &
Content at row = 0, column = 1 & \\
我想换成这个:
Content at row = 0, column = 0 &
Content at row = 0, column = 1 \\
是否可以对宏结果使用过滤器?是否有其他方法生成表,其中每个单元格都是另一个jinja2模板,具体取决于参数?我不熟悉Jinja本身的连接功能。但是,它确实在循环中内置了索引。使用loop.last
可以确定在何处更改输出符号
{% macro table(header, rows, columns, ) %}
\begin{tabular}{(formatting, later)}
{{ row(header) }}
{% for row in rows %}
{% for column in columns %}
{{ caller(row, column) }} {% if loop.last %}\\{% else %}&{%endif%}
{% endfor %}
{% endfor %}
\end{tabular}
{% endmacro %}
以下是关于其他可用循环变量的文档: