使用 jinja2 创建 table
Creating a table using jinja2
我正在尝试使用 jinja2 创建一个(乳胶)table。我定义了一个宏来帮助我创建 table:
{% 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 %}
我非常喜欢这些宏的工作方式。然而,问题是我想 join
宏的结果用 &
符号而不是
在每一行之后打一个牌子。基本上现在我有这个:
Content at row = 0, column = 0 &
Content at row = 0, column = 1 & \
我想改用这个:
Content at row = 0, column = 0 &
Content at row = 0, column = 1 \
是否可以对宏结果使用过滤器?有没有其他方法可以根据参数生成 table,其中每个单元格都是另一个 jinja2 模板?
我不熟悉 Jinja 本身的 join
功能。但是,它确实在您的循环中内置了索引。使用 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 %}
这是关于其他 loop
可用变量的文档:http://jinja.pocoo.org/docs/2.9/templates/#for
我正在尝试使用 jinja2 创建一个(乳胶)table。我定义了一个宏来帮助我创建 table:
{% 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 %}
我非常喜欢这些宏的工作方式。然而,问题是我想 join
宏的结果用 &
符号而不是
在每一行之后打一个牌子。基本上现在我有这个:
Content at row = 0, column = 0 &
Content at row = 0, column = 1 & \
我想改用这个:
Content at row = 0, column = 0 &
Content at row = 0, column = 1 \
是否可以对宏结果使用过滤器?有没有其他方法可以根据参数生成 table,其中每个单元格都是另一个 jinja2 模板?
我不熟悉 Jinja 本身的 join
功能。但是,它确实在您的循环中内置了索引。使用 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 %}
这是关于其他 loop
可用变量的文档:http://jinja.pocoo.org/docs/2.9/templates/#for