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

то я получаю следующее

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

Связанный контент