pandoc: rst で表形式変換をカスタマイズする

pandoc: rst で表形式変換をカスタマイズする

次のことを考慮してくださいmwe

mwe.tex

\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

すると次のものを受け取ります

最初

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

Table: my caption

しかし、出力は

.. _mylabel:

.. table:: my caption

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

これは、テーブルに番号を付け、テーブルにキャプションを付け、テーブルを参照できるようにするという 3 つのことを行います。

希望する形式でpandoc出力するためにどのように調整すればよいでしょうか?tabular

答え1

まず、pandoc に出力形式を指定していないため、RST ではなく markdown が出力されます。

$ 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"))
...

関連情報