pandoc:在 rst 中自訂表格轉換

pandoc:在 rst 中自訂表格轉換

考慮以下mwe

特克斯

\documentclass{article}

\begin{document}

\begin{table}
    \centering
    \caption{my caption}
    \label{mylabel}
    \begin{tabular}{lc}
        1 & 2\\
        3 & 4
    \end{tabular}
\end{table}
\end{document}

rst當使用以下命令轉換檔案時

pandoc -o mwe.rst mwe.tex

然後我收到以下內容

mwe.rst

+-----+-----+
| 1   | 2   |
+-----+-----+
| 3   | 4   |
+-----+-----+

Table: my caption

但是,我希望輸出是

.. _mylabel:

.. table:: my caption

   +-----+-----+
   | 1   | 2   |
   +-----+-----+
   | 3   | 4   |
   +-----+-----+

它做了三件事:給表格一個編號,給表格一個標題,並允許引用表格。

我如何調整以我想要的格式pandoc輸出tabular

答案1

首先,您沒有向 pandoc 提供輸出格式,因此它輸出的是 markdown 而不是 RST:

$ pandoc -o mwe.rst mwe.tex -f latex -t rst

應該給出:

.. table:: my caption

   +-----+-----+
   | 1   | 2   |
   +-----+-----+
   | 3   | 4   |
   +-----+-----+

其次,不幸的是pandoc本身並沒有表標籤的概念。因此,當它讀取表時,它會忽略標籤。

最好的方法是建立一個 pandoc 過濾器。使用排簫是一個很好的方法。

>> import panflute as pf
>> content = pf.convert_text(tex, input_format="latex")
>> content
[Table(TableRow(TableCell(Plain(Str(1))) TableCell(Plain(Str(2)))) TableRow(TableCell(Plain(Str(3))) TableCell(Plain(Str(4)))); alignment=['AlignLeft', 'AlignCenter'], width=[0, 0], rows=2, cols=2)]
>> content.insert(0, pf.RawBlock(".. _mylabel:", format="rst"))
...

相關內容