gpt4 book ai didi

python - 使用 docutils 从 reStructuredText 创建最小的 LaTeX 语法

转载 作者:行者123 更新时间:2023-11-28 17:51:02 25 4
gpt4 key购买 nike

我正在制作一个 Python 脚本,该脚本采用多个具有 reStructuredText 语法的文本文件,并使用 Docutils 创建一个 LaTeX 文件。一切都很好,除了 Docutils 创建了很多我不需要的额外语法。

例如,Docutils 将编写一个简单的小节

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

当我只需要

\subsection{About}

我已经看到 Pandoc 没有创建那么多额外的语法,但是它不支持 CSV 表,所以我不能将它用于我的项目。

我查看了所有 docutils 设置,但我真的找不到任何限制输出的选项。无论如何我设置 Docutils 只创建我想要的语法?

最佳答案

根据我的评论,应该可以子类化 docutils.writers.latex2e.Writerdocutils.writers.latex2e.LaTeXTranslator 以自定义 docutils 的输出LaTeX 编写器,类似于 this 的方式博客文章,其中描述了如何自定义 HTML 编写器。然而,通过 docutils.writers.latex2e.LaTeXTranslator 来看,这看起来比 HTML 编写器复杂得多。

另一种方法是只修改这些类。要获得您想要的输出,只需执行以下操作(注意,这是针对 docutils 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.Writerdocutils.writers.latex2e.LaTeXTranslator 子类化您可以从 future 版本的 docutils 中对这些类所做的任何更改中受益。上述方法有效,但在未来的版本中可能需要更改。

关于python - 使用 docutils 从 reStructuredText 创建最小的 LaTeX 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9824271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com