pandoc: tabellarische Konvertierung in rst anpassen

pandoc: tabellarische Konvertierung in rst anpassen

Folgendes berücksichtigenmwe

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}

Beim Konvertieren der Datei in rstverwenden Sie den folgenden Befehl

pandoc -o mwe.rst mwe.tex

dann erhalte ich folgendes

mwe.rst

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

Table: my caption

Ich möchte jedoch, dass die Ausgabe

.. _mylabel:

.. table:: my caption

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

Dies hat drei Auswirkungen: Die Tabelle erhält eine Nummer und eine Überschrift und kann referenziert werden.

Wie kann ich pandocdie Ausgabe tabularim gewünschten Format optimieren?

Antwort1

Erstens stellen Sie Pandoc nicht das Ausgabeformat zur Verfügung, sodass Markdown und nicht RST ausgegeben wird:

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

sollte geben:

.. table:: my caption

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

Zweitens verfügt pandoc leider nicht über ein Konzept für Tabellenbeschriftungen. Beim Einlesen der Tabelle werden die Beschriftungen daher ignoriert.

Der beste Weg wäre, einen Pandoc-Filter zu erstellen.Panflöteist ein schöner Ansatz.

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

verwandte Informationen