pandoc: personalize a conversão tabular primeiro

pandoc: personalize a conversão tabular primeiro

Considere o seguintemwe

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}

Ao converter o arquivo rstusando o seguinte comando

pandoc -o mwe.rst mwe.tex

então recebo o seguinte

mwe.rst

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

Table: my caption

No entanto, gostaria que a saída fosse

.. _mylabel:

.. table:: my caption

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

que faz três coisas: dá um número à tabela, dá uma legenda à tabela e permite que a tabela seja referenciada.

Como posso ajustar pandoca saída tabularno formato desejado?

Responder1

Primeiramente, você não está fornecendo o formato de saída para o pandoc e, portanto, ele está gerando markdown em vez de RST:

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

deveria dar:

.. table:: my caption

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

Em segundo lugar, infelizmente o pandoc não possui inerentemente um conceito de rótulos de tabela. Então, quando lê na tabela, ignora o rótulo.

O melhor caminho seria criar um filtro pandoc. Usandoflauta pané uma boa abordagem.

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

informação relacionada