pandoc: personalizar la conversión tabular en primer lugar

pandoc: personalizar la conversión tabular en primer lugar

Considera lo siguientemwe

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}

Al convertir el archivo para rstusar el siguiente comando

pandoc -o mwe.rst mwe.tex

entonces recibo lo siguiente

mwe.primero

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

Table: my caption

Sin embargo, me gustaría que el resultado fuera

.. _mylabel:

.. table:: my caption

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

que hace tres cosas: le da un número a la tabla, le da un título y permite hacer referencia a la tabla.

¿Cómo puedo modificar pandocpara generar el tabularformato deseado?

Respuesta1

En primer lugar, no está proporcionando el formato de salida a pandoc, por lo que genera Markdown en lugar de RST:

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

debe dar:

.. table:: my caption

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

En segundo lugar, desafortunadamente pandoc no tiene inherentemente un concepto de etiquetas de tabla. Entonces, cuando lee la tabla, ignora la etiqueta.

La mejor ruta sería crear un filtro pandoc. Usandoflauta de panes un buen enfoque.

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

información relacionada