sphinx: 通过 raw:: latex 方式包含 .tex 文件

6

我想在 Sphinx 中包含 LaTeX 文档。Sphinx 的 HTML 构建过程不会包含使用 .. raw:: latex 指令链接的 LaTeX 文件。这是我的目录结构:

docs/
    source/
        importlatex.rst
        index.rst

    build/
    tex/
       texfile.tex

index.rst 的样子如下:

Welcome to documentation!
=========================

Contents:

.. toctree::
   :maxdepth: 2

   icnludelatex
   and-other-stuff

icnludelatex.rst看起来像:

Include Latex
=============

.. raw:: latex
    :file: ../tex/texfile.tex

这个参考资料提供了包含HTML的示例

.. raw:: html
    :file: inclusion.html

为什么会出现这种情况?

Sphinx没有对该包含引发任何错误。它会创建一个带有标题的页面(我在单独的.rst文件中拥有此标题)。 - muon
tex/ 目录在 source/ 目录外,因此请将其移动到内部或将其作为源文件的附加路径添加到您的 conf.py 中。 - Steve Piercy
建议您制作一个MCVE并将其推到公共存储库中,以便我可以重现此问题。 - Steve Piercy
1个回答

8
使用raw指令时,该块只被关联的writer解释。例如,.. raw:: latex 适用于生成LaTeX,但对于HTML来说是不可见的。
您需要的是一个LaTeX解析器,但是在快速搜索中,我只找到了适用于markdown (recommonmark) 和jupyter笔记本 (nbsphinx) 的解析器。
也许,一个简单粗暴的解决方案是使用pandoc将您的latex文档转换为rst(您可能会失去一些格式化文本)。
pandoc -s texfile.tex -o texfile.rst

然后在您的icnludelatex.rst中使用include指令。

.. include:: texfile.rst

谢谢,我以前做过这个,但是Pandoc会弄乱方程、表格等,所以我希望直接导入Latex会更方便一些。 - muon
@muon 也许你可以先使用 Hevea、LaTeXML 或 PDF2HTMLex 将其转换为 HTML,然后再使用 include html。 - cosmoscalibur

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接