用于 Pandoc 的表格布局

ƘɌỈ*_*ƬƠƑ 5 markdown latex pandoc

我正在尝试创建文档生成工作流程(专业文档)。目标是尽可能多地用 Markdown 编写。生成的文档应为 PDF,同时仍可在必要时导出为 .docx。

我已经决定使用 Pandoc,为此我将创建一个 Latex 模板并使用一个 YAML 文档来保存文档元数据。到现在为止还挺好。然而,有时我需要使用表格,从非常简单的表格到更复杂的布局,例如跨列。

除了最简单的表格之外,Markdown 几乎不能用于任何东西。我尝试用 HTML 来定义更复杂的表格布局,但 Pandoc 似乎不知道如何处理跨列或跨行。

如果没有完全在 Latex 中定义表格,是否还有其他替代方法可以使用易于维护的方法来定义表格,同时仍然能够使用 Pandoc 将它们转换为 Latex/PDF?

一个更复杂的表的例子(取自这里):

<body>
<table border="1">

<!-- First row -->

<tr>
<td>1</td>
<td colspan="2">2 and 3</td>
<td>4</td>
</tr>

<!-- Second row -->

<tr>
<td rowspan="3">5, 9 and 13</td>
<td>6</td>
<td>7</td>
<td>8</td>
</tr>

<!-- Third row -->

<tr>
<td>10</td>
<td>11</td>
<td>12</td>
</tr>

<!-- Fourth row -->

<tr>
<td colspan="3">14, 15 and 16</td>
</tr>

</table>
</body>
Run Code Online (Sandbox Code Playgroud)

这是 PDF 中的结果:

PDF结果

mb2*_*b21 5

pandoc 2.10 版本开始,其内部文档 AST 可以表示表的列跨度和行跨度。

后续版本中添加了对各种输入和输出格式的支持(html 和 Latex 应该已经可以使用),并且更多功能正在开发中

使用 Markdown 时,看看网格表...

旧答案

如果您绝对需要多种输出格式的单元格跨度,那么最好的选择是以<div class="table">您想要的任何格式(例如 HTML 甚至reStructuredText )编写表格(在 pandoc markdown 的代码块或 a 内)。然后,您可以编写一个pandoc 过滤器,将 pandoc AST 的这一部分转换为 HTML,并编写另一个过滤器,将其转换为 LaTeX。