Создание минимального синтаксиса LaTeX из reStructuredText с документами - PullRequest
3 голосов
/ 22 марта 2012

Я делаю скрипт на Python, который принимает несколько текстовых файлов с синтаксисом reStructuredText и создает один единственный файл LaTeX с Docutils. Все отлично работает, кроме Docutils создает много дополнительного синтаксиса, который мне не нужен.

Например, с простым подразделом Docutils напишет

\subsection*{\phantomsection%
About%
\addcontentsline{toc}{subsection}{About}%
\label{about}%

когда мне нужно только

\subsection{About}

Я видел, что Pandoc не создает столько дополнительного синтаксиса, но он не поддерживает таблицы CSV, поэтому я не могу использовать его для своего проекта.

Я просмотрел все настройки Docutils и не могу найти какие-либо опции для ограничения вывода. Могу ли я в любом случае настроить Docutils на создание только синтаксиса, который мне нужен?

1 Ответ

2 голосов
/ 24 апреля 2012

В дополнение к моему комментарию, должна быть возможность создать подкласс docutils.writers.latex2e.Writer и docutils.writers.latex2e.LaTeXTranslator для настройки вывода писателя LaTeX Documenttils, аналогично этому сообщению в блоге, в котором описано, какнастроить HTML писатель.Однако при просмотре docutils.writers.latex2e.LaTeXTranslator это выглядит намного сложнее, чем при написании HTML.

Альтернативным методом было бы просто изменить эти классы.Чтобы получить результат, который вы хотите, просто сделайте следующее (обратите внимание, это для documenttils 0.8.1):

  1. Резервное копирование каталога path/to/docutils/writers/latex2e

  2. Изменить path/to/docutils/writers/latex2e/__init__.py следующим образом

    1. в методе LaTeXTranslator.visit_title заменить строку (строка 2870)

      pdfanchor = '\\phantomsection%\n  '
      

      на

      pdfanchor = ''
      
    2. в методе LaTeXTranslator.visit_title заменить строку (строка 2878)

      self.context.append(self.bookmark(node) + '}\n')
      

      на

      self.context.append('}\n')
      

Примечание : гораздо лучше подклассы docutils.writers.latex2e.Writer и docutils.writers.latex2e.LaTeXTranslator, если это возможно, чтобы вы могли извлечь выгоду из любых изменений, внесенных в эти классы в будущих версиях документов.Описанный выше метод работает, но, возможно, его придется изменить в будущих версиях.

...