如何在RST /读取文档的代码块中添加复制按钮

时间:2016-08-28 01:21:21

标签: html clipboard python-sphinx restructuredtext read-the-docs

我一直致力于个人"操作方法"我一直指导,记录和记录我的学习日记。

我现在有一个,几乎太长的代码块,当我自己遇到这段代码时,它总是令人沮丧地尝试突出显示块而不突出显示整个页面,或者不够。

所以,我的问题是,对于rst(reStructuredText).. code-block::,是否有一个加载项或一种方法来添加copy按钮,自动突出显示或自动将文本添加到用户剪贴板?或者这是一个更加html-literal类型的代码我必须包含在构建中并在代码块中引用它?如果是这样,那样的东西会是什么样的呢?

2 个答案:

答案 0 :(得分:3)

有一个专用的软件包称为sphinx-copybutton

使用起来很简单。

# Install
pip install sphinx-copybutton
# Declare it in the conf.py
extensions = [
    ...
    'sphinx_copybutton'
    ...
]

就是这样,生成文档,然后复制按钮将自动出现在每个代码块中。

答案 1 :(得分:2)

在Sphinx项目中,HTML页面的显示使用模板语言(默认为Jinja2)进行控制。因此,您可以通过将Javascript添加到HTML模板文件来使页面更具交互性,当Sphinx使用该特定模板文件呈现页面时,它将被插入。

templates_path

中搜索conf.py,找到您的模板目录

Jinja模板可以相互扩展,因此您可能希望文件以{% extends "basic/layout.html" %}开头。

一旦您追踪要进行更改的扩展序列中的哪个位置,您需要合并:

  • 您希望其生效的页面部分(通常是主要部分)
  • 带有代码块类的CSS(例如,在我的class=highlight中)。 .CSS文件可能位于docs / source / _static /
  • 用于创建按钮并写入剪贴板的javascript片段(例如https://clipboardjs.com/

接下来,在本地构建Sphinx项目(make html),直到您拨入,然后将源代码推送到readthedocs。