You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Sphinx中让HTML显示本地TOC,LaTeX构建时隐藏{contents}

如何让Markdown中的本地目录仅在HTML显示,LaTeXPDF中隐藏

我在setup_macos.md里用{contents}生成的本地目录,只想要在HTML页面显示,LaTeXPDF构建时不出现,现有代码如下:

当前代码

index.rst

======================================
MyTitle
======================================
.. raw:: latex

   \section*{MyTitle}

Some text

.. toctree::
      :hidden:
      :titlesonly:
      :caption: Setup

   setup_macos

setup_macos.md

```{contents} On this page:
macOS setup

In this tutorial...

## 解决办法
直接用MyST-Parser提供的`{only}`条件指令,把生成目录的代码包裹起来,指定仅对HTML输出生效:

修改后的`setup_macos.md`:
```md
```{only} html
```{contents} On this page:
# macOS setup

In this tutorial...

原理很简单:{only} html会告诉Sphinx,只有当输出格式是HTML时才渲染里面的内容,LaTeXPDF构建时会自动跳过这段代码,完美实现你要的效果。

如果你的项目还在使用旧版的m2r2解析器,也可以用raw指令分别处理HTML和LaTeX:

.. raw:: html

   ```{contents} On this page:

.. raw:: latex

% LaTeX会忽略这段注释,相当于不生成目录

不过更推荐用MyST的`{only}`指令,语法更简洁,也符合现在Sphinx Markdown的主流用法。

内容的提问来源于stack exchange,提问作者crockeea
相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 11:20:01