在 sphinx 侧边栏中启用版本阅读文档主题

2024-04-16

我想将 versions.html 包含在侧边栏中,但无法成功。

我尝试在 ** 中为侧边栏添加 versions.html,但这没有效果:

html_sidebars = {
    '**': ['versions.html']
}

另外如何声明不同的版本conf.py.

我看过sphinxcontrib 版本控制 https://github.com/Robpol86/sphinxcontrib-versioning但这并不正是我正在寻找的。


这可以通过添加一个来实现_templates/versions.html文件覆盖 rtd 主题的默认值jinja 模板文件 https://www.sphinx-doc.org/en/master/templating.html并向其中添加一些变量conf.py file.

执行以下命令创建新的“_templates/”目录和“versions.html”文件:

mkdir _templates
cat > _templates/versions.html <<'EOF'
{% if READTHEDOCS or display_lower_left %}
{# Add rst-badge after rst-versions for small badge style. #}
  <div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="versions">
    <span class="rst-current-version" data-toggle="rst-current-version">
      <span class="fa fa-book"> Read the Docs</span>
      v: {{ current_version }}
      <span class="fa fa-caret-down"></span>
    </span>
    <div class="rst-other-versions">
      {% if languages|length >= 1 %}
      <dl>
        <dt>{{ _('Languages') }}</dt>
        {% for slug, url in languages %}
          {% if slug == current_language %} <strong> {% endif %}
          <dd><a href="{{ url }}">{{ slug }}</a></dd>
          {% if slug == current_language %} </strong> {% endif %}
        {% endfor %}
      </dl>
      {% endif %}
      {% if versions|length >= 1 %}
      <dl>
        <dt>{{ _('Versions') }}</dt>
        {% for slug, url in versions %}
          {% if slug == current_version %} <strong> {% endif %}
          <dd><a href="{{ url }}">{{ slug }}</a></dd>
          {% if slug == current_version %} </strong> {% endif %}
        {% endfor %}
      </dl>
      {% endif %}
      {% if downloads|length >= 1 %}
      <dl>
        <dt>{{ _('Downloads') }}</dt>
        {% for type, url in downloads %}
          <dd><a href="{{ url }}">{{ type }}</a></dd>
        {% endfor %}
      </dl>
      {% endif %}
      {% if READTHEDOCS %}
      <dl>
        <dt>{{ _('On Read the Docs') }}</dt>
          <dd>
            <a href="//{{ PRODUCTION_DOMAIN }}/projects/{{ slug }}/?fromdocs={{ slug }}">{{ _('Project Home') }}</a>
          </dd>
          <dd>
            <a href="//{{ PRODUCTION_DOMAIN }}/builds/{{ slug }}/?fromdocs={{ slug }}">{{ _('Builds') }}</a>
          </dd>
      </dl>
      {% endif %}
      <hr/>
      {% trans %}Free document hosting provided by <a href="http://www.readthedocs.org">Read the Docs</a>.{% endtrans %}
 
    </div>
  </div>
{% endif %}
 
EOF

并执行以下命令附加到conf.py file:

cat >> conf.py <<'EOF'
 
############################
# SETUP THE RTD LOWER-LEFT #
############################
try:
   html_context
except NameError:
   html_context = dict()
html_context['display_lower_left'] = True

templates_path = ['_templates']

if 'REPO_NAME' in os.environ:
   REPO_NAME = os.environ['REPO_NAME']
else:
   REPO_NAME = ''
 
# SET CURRENT_LANGUAGE
if 'current_language' in os.environ:
   # get the current_language env var set by buildDocs.sh
   current_language = os.environ['current_language']
else:
   # the user is probably doing `make html`
   # set this build's current language to english
   current_language = 'en'
 
# tell the theme which language to we're currently building
html_context['current_language'] = current_language
 
# SET CURRENT_VERSION
from git import Repo
repo = Repo( search_parent_directories=True )
 
if 'current_version' in os.environ:
   # get the current_version env var set by buildDocs.sh
   current_version = os.environ['current_version']
else:
   # the user is probably doing `make html`
   # set this build's current version by looking at the branch
   current_version = repo.active_branch.name
 
# tell the theme which version we're currently on ('current_version' affects
# the lower-left rtd menu and 'version' affects the logo-area version)
html_context['current_version'] = current_version
html_context['version'] = current_version
 
# POPULATE LINKS TO OTHER LANGUAGES
html_context['languages'] = [ ('en', '/' +REPO_NAME+ '/en/' +current_version+ '/') ]
 
languages = [lang.name for lang in os.scandir('locales') if lang.is_dir()]
for lang in languages:
   html_context['languages'].append( (lang, '/' +REPO_NAME+ '/' +lang+ '/' +current_version+ '/') )
 
# POPULATE LINKS TO OTHER VERSIONS
html_context['versions'] = list()
 
versions = [branch.name for branch in repo.branches]
for version in versions:
   html_context['versions'].append( (version, '/' +REPO_NAME+ '/'  +current_language+ '/' +version+ '/') )
 
# POPULATE LINKS TO OTHER FORMATS/DOWNLOADS
 
# settings for creating PDF with rinoh
rinoh_documents = [(
 master_doc,
 'target',
 project+ ' Documentation',
 '© ' +copyright,
)]
today_fmt = "%B %d, %Y"
 
# settings for EPUB
epub_basename = 'target'
 
html_context['downloads'] = list()
html_context['downloads'].append( ('pdf', '/' +REPO_NAME+ '/' +current_language+ '/' +current_version+ '/' +project+ '-docs_' +current_language+ '_' +current_version+ '.pdf') )
 
html_context['downloads'].append( ('epub', '/' +REPO_NAME+ '/' +current_language+ '/' +current_version+ '/' +project+ '-docs_' +current_language+ '_' +current_version+ '.epub') )
 
EOF

请参阅此网站的示例:

  • https://maltfield.github.io/rtd-github-pages/ https://maltfield.github.io/rtd-github-pages/

可以从以下 GitHub 存储库查看(并轻松分叉)创建上述站点的整个配置:

  • https://github.com/maltfield/rtd-github-pages/ https://github.com/maltfield/rtd-github-pages/

有关如何设置的更多信息,请参阅此有关如何设置左下阅读文档菜单以在语言、版本和下载之间进行导航的文章 https://tech.michaelaltfield.net/2020/07/23/sphinx-rtd-github-pages-2/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 sphinx 侧边栏中启用版本阅读文档主题 的相关文章

  • Sphinx 是否可以处理不能很好导入的代码?

    Sphinx 文档引擎能否成功生成导入不佳的项目的文档 特别是我的项目有一种奇异的依赖性 我不希望文档生成依赖于这种依赖性 Sphinx 是否需要导入我的模块并使用内省或解析 如果您使用 autodoc 扩展 那么您的项目必须是可导入的 但
  • Sphinx Note Block 在代码块下的列表中?

    我有一个问题 如果我想将注释块放在代码块下的列表中 它就会包含在代码块中 如果我取消缩进 列表编号会在注释后重新开始 所以基本上 我需要的是 Fixed list example First do spam Then do eggs som
  • 托管私人 Sphinx 文档 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我目前正在使用 Sphinx 为一个相当复杂的 Django 网站编写一些广泛的文档 我一直在内部从事
  • 使用“from x import *”记录文件

    sphinx 的 automodule 和其他自动功能可用于记录包含以下内容的模块from x import 声明不包含导入模块的所有文档 编辑 根据mzjn的观点 只要导入的方法 module 属性与模块名称不同 不应记录它们 然而 对于
  • 如何在自定义 python-sphinx 指令/扩展中使用现有指令?

    我想创建一个自定义的Directive使用现有指令 code block在这个例子中 在它的实现中 reStructuredText 中的手动等效项是 mydirective py code block py print Hello wor
  • 如何在每个页面的侧边栏中包含目录树

    我正在 Sphinx 中生成 html 文档 如何修改文档中每个 html 页面的侧边栏 以便它们包含目录树 默认情况下 目录树似乎只显示在master doc页面 并且仅在主区域而不是侧边栏 是否有捷径可寻 我将使用 readthedoc
  • 在 Python Sphinx 生成的文档中包含动态内容

    我正在使用 Sphinx 为我的项目生成文档 并在产品安装过程中构建文档 我想在文本和 或代码块中动态包含主机名 我没有在文档中看到任何解释 也没有看到任何包含 shell 命令输出或特定文件中特定行以外的任何内容的工具 有这个功能吗 这里
  • 如何强制Sphinx使用Python 3.x解释器

    我尝试为使用 Python 3 x 编写的项目创建文档 Sphinx http sphinx pocoo org index html is the我想使用的工具 并且根据官方网站 http sphinx pocoo org changes
  • 如何配置 Sphinx 有条件地排除某些页面?

    使用 Sphinx 生成文档时 我希望能够生成文档的两个版本 一个包含所有内容 另一个仅包含一组特定的页面 实现这一目标的最佳方法是什么 我可以编写一个构建脚本来移动文件来实现此目的 但如果有一种方法可以告诉 sphinx 在特定构建期间排
  • RestructedText - 向链接添加标题属性

    我正在尝试在我的网站上使用从 reStructuredText 生成的 jQuery lightBox 实现 lightBox 将图像周围的链接标题作为 lightBox 显示中图像的标题 但是 我似乎无法在 reStructuredTex
  • Sphinx 扩展可在 Sphinx 中使用 GitHub markdown 表情符号吗?

    Problem 我一直在使用 Python Sphinx 文档 http www sphinx doc org 随着通用标志 http commonmark org 解析器 用于编写包含以 reStructuredText 和 Markdo
  • Furo Sphinx 主题在 API 文档中保留过多的大写字母

    我面临着这个问题中讨论的同样的问题 Furo Sphinx 主题在 API 文档中大写过多 https stackoverflow com questions 69873561 furo sphinx theme uppercases to
  • Python-Sphinx:从超类“继承”方法文档

    Edit 截至目前 Sphinx 1 4 9 似乎没有办法告诉 Sphinx 做我想做的事情 参见issue https github com sphinx doc sphinx issues 3140在 GitHub 上 这接受的答案 h
  • 如何使用Sphinx管理多个版本的文档? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我维护一个用 C 编写的小型库项目 我想使用 Sphinx 来维护每个发行版本的图书馆网站 用户文档 我发现 类似的问题如何管理多个版本 htt
  • 阅读文档构建失败,并显示“无法从‘pip._internal.index’导入名称‘PackageFinder’”

    在阅读文档时构建 Sphinx 文档失败 并出现以下错误 完整日志如下 ImportError cannot import name PackageFinder from pip internal index home docs check
  • 使 viewcode 显示模块源

    我正在尝试使用 Sphinx 用一些 Python 片段制作一本食谱 每个片段都是一个独立的 Python 脚本 并且有一个教程类型的文档 我希望在生成的文档中有一个源链接来显示脚本内容 但viewcode https www sphinx
  • 摆脱 Sphinx 中的“重复标签”警告

    在 Sphinx 中 我收到大量警告 例如 PATH FILENAME LINE WARNING duplicate label LABELNAME other instance in PATH FILENAME 似乎将所有节标题视为 标签
  • 自 1.4.0 版本以来,sphinx_rtd_theme 不再是硬依赖项

    C Users Administrator Desktop item code serv documents api gt 制作 html 运行 Sphinx v1 6 2 加载腌制环境 失败 无法获取属性 WarningStream
  • Sphinx:将输出 html 分割成比输入文件更小的页面

    假设我有一个 Sphinx 索引文件 toctree foo bar 并且文档 foo 只有一个标题 Foo All about foo 而酒吧有两个 Bar All about Bars Parrot All about ex parro
  • readthedocs 中自动生成的索引文件

    我无法上传到阅读文档 http docs readthedocs io en latest 我为我的项目准备的文档 我正在尝试了解问题所在 该文档在本地构建良好make html但我无法上传 GitHub 项目是ASCII基因组 https

随机推荐

  • 如何重置测试之间导入的模块

    假设我有一个模块需要在应用程序启动时初始化一次 以传递配置 模块看起来像这样 MyModule js let isInitiazlied const myModule init function isInitiazlied true do
  • 张量流学习中的多元回归输出节点

    我对张量流比较陌生 想使用 tf contrib learn 中的 DNNRegressor 来执行回归任务 但我不想有一个输出节点 而是想要多个 例如十个 如何配置回归器来调整许多输出节点以满足我的需求 我的问题与以下已在 SO 上提出的
  • 如何查看亚马逊 lambda 函数的 console.log 输出

    当你做一个 console log Loading function 在亚马逊 lambda 函数中 它去哪里了 我的设置 API网关 lambda函数nodejs6 10 卷曲https n2tredacted execute api u
  • android跨度点击事件

    好的 这些都是我的问题 我需要使用正则表达式来过滤掉除字母之外的所有内容 然后我需要将找到的单词包含在 word 标签中 有了这个 str str replaceAll pattern 0 现在我正在过滤所有正确的元素 标点符号 数字等 但
  • 催化剂控制器问题

    我刚刚在我的第一个大型项目中使用了催化剂 我想知道我是否按照预期的方式使用了催化剂 我有 Root pm 在该文件中我放置了多个 url 处理程序 每个 url 有一个控制器是最佳实践还是应该考虑分组 Catalyst 的优点之一是它的灵活
  • Rails,将文件上传到服务器时获取文件名

    我在 Rails 3 中使用 AJAX 上传器以及 paper clip 并在此处上传文件 def upload photo Photo create photo gt params file title gt params filenam
  • 有哪些 CSS 属性可以让元素脱离正常流程?

    有哪些 CSS 属性可以让元素脱离正常流程 这些属性可以是 float position absolute 等 这个问题涉及正常流程的所有可能的改变 只有以下属性会影响任何给定元素的正常流程 float right left positio
  • 在共享主机上安装 PHP 扩展

    我需要启用mcrypt https www php net manual en book mcrypt php我的网站上的功能 除了我在共享主机上 运行 Linux 并且显然无权访问php ini文件 似乎确实有安装 PEAR 模块的选项
  • 在 R 中从 MySQL 获取 UTF-8 文本返回“???”

    我一直在尝试从 R 获取 MySQL 数据库中的 UTF 8 文本 我在 OS X 上运行 R 通过 GUI 和命令行都尝试过 其中默认区域设置是 en US UTF 8 并且没有无论我尝试什么 查询结果都显示 对于所有非 ASCII 字符
  • Plotly 中子图的标题

    我正在尝试在 Plotly 中制作 3x3 子图的网格 我正在尝试为每个子图获取标题并在顶部获取主标题 但我似乎无法让它发挥作用 我看到这个很棒的网站 http takwatanabe me data science plotly layo
  • Python multiprocessing.Pool在MacOS和Linux系统上的不同性能

    我是 Python 初学者 我在项目中使用了 multiprocessing Pool 来提高性能 这是我使用 multiprocessing Pool 的代码片段 我在驻留服务器的开头构建池 并在每次服务器收到请求时使用 Pool app
  • 不定长度的数组[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何在未知长度的排序数组中找到随机元
  • MFC:如何在一个函数中捕获对话框每个控件的设置焦点

    我有 n 个对话框 它们具有相同的基本对话框 每个对话框都有自己的控件 编辑框 组合框 列表控件 etc 在基本对话框中 如何设置每个控件的焦点消息 例如 给出一个消息框 text Hello I got focus my ID is d
  • XAMPP:无法启动 Apache (Windows 10)

    我正在使用 XAMPP 并且可以启动 Apache 但是 MySQL php我的管理员 https en wikipedia org wiki PhpMyAdmin start 当我开始时 我收到此错误 10 07 49 Apache Er
  • 无法更改视图中绘制的圆圈的颜色

    我正在尝试更新我在子类中创建的圆圈的颜色UIView通过在类中创建一个方法来更新颜色 如下所示 但颜色不会改变 import UIKit class badge UIView struct mine static var p UIBezie
  • Linux 文件权限的正则表达式(数字表示法)

    我一生都无法找出正确的正则表达式 我正在寻找的是一个正则表达式来匹配 Linux 文件权限的有效数字表示 例如 740 表示全部读取无 777 表示全部全部 到目前为止 我已经尝试过以下操作 strtotest 740 echo strto
  • 如何从视图范围的 JSF bean 获取请求参数?

    我有查看范围bean 应该在 init PostConstruct 上访问请求 URL 中的值并在其生命周期内存储它们 我了解到 为了获得价值http请求 我需要以下代码 ManagedProperty param x private in
  • iOS 相当于 Android 片段/布局

    在 Android 中 您可以使用 Fragments 只开发一款针对手机和平板电脑的应用程序 这样您就可以拥有不同的 UI 您甚至可以仅使用布局并对代码设置一些条件来运行平板电脑或手机逻辑 我需要为 iPhone 和 iPad 开发一个应
  • 仅根据lucene中term出现次数较多的文档来计算分数

    我开始研究基于 lucene net 引擎的简历检索 文档 组件 它工作得很好 它会获取文档并根据 VSM 背后的理念是 查询词出现在 a 中的次数 文档相对于数量 该术语出现在所有 集合中的文档越多 该文件的相关内容是 询问 Lucene
  • 在 sphinx 侧边栏中启用版本阅读文档主题

    我想将 versions html 包含在侧边栏中 但无法成功 我尝试在 中为侧边栏添加 versions html 但这没有效果 html sidebars versions html 另外如何声明不同的版本conf py 我看过sphi