示例的Python源代码或者交互界面都可以使用标准reST模块实现.在正常段落后面跟着 :: 开始,再加上适当缩进.

交互界面需包含提示及Python代码的输出. 交互界面没有特别的标记. 在最后一行输入或输出之后,不应出现空的提示; 这是一个什么都不做的例子:

>>> 1 + 1
2
>>>

语法高亮显示由 Pygments (如果安装) 优雅的显示:

  • 每个源文件都有高亮语言”highlighting language”. 默认是 'python' ,多数文件会高亮显示 Python 代码段, 可以在 :confval:`highlight_language` 配置.

  • 有了Python 高亮显示模块, 交互界面会自动识别并且适当强调显示. 一般Python 代码仅在可解析时高亮显示 (使用默认的Python, 但是零散的代码段比如shell命令等代码块将不会像Python一样高亮显示).

  • 高亮显示语言也可以通过指令 highlight 改变,如下:

    .. highlight:: c
    

    C 语言将会被使用直到下一个 highlight 指令.

  • 如果文档需展示不同语言片段, 直接使用 code-block 指令给出高亮语言:

    .. code-block:: ruby
    
       Some Ruby code.
    

    指令别名也可用于 sourcecode .

  • (这里我理解错误,直接设置
  • .. code:: c (code指令比较老)并不能高亮,前面还必须设置:
  • .. highlight:: c,但是很奇怪,我用code-block不设置highlight也可以)
  • 有效的语言:

    • none (没有高亮显示)
    • python (默认, :confval:`highlight_language` 没有设置时)
    • guess (让 Pygments 根据内容去决定, 仅支持一些可识别的语言)
    • rest
    • c
    • ... 其他Pygments 支持的语言名.
  • 如果选定语言的高亮显示失败,则模块不会以其他方式高亮显示.

行号

如果安装好, Pygments可以为代码块产生行号.自动高亮显示模块 (以 :: 开始), 行号由指令 highlight 的选项 linenothreshold 管理:

.. highlight:: python
:linenothreshold: 5

如果代码块多于5行将产生行号.

对于 code-block 模块, 选项 linenos 给出则为独立块生成行号:

.. code-block:: ruby
:linenos: Some more Ruby code.

另外, 选项 emphasize-lines 可以生成特别强调的行:

.. code-block:: python
:emphasize-lines: 3,5 def some_function():
interesting = False
print 'This line is highlighted.'
print 'This one is not...'
print '...but this one is.'

Changed in version 1.1: 添加了``emphasize-lines`` .

参考:http://zh-sphinx-doc.readthedocs.org/en/latest/markup/code.html

sphinx支持的语言非常之多,参考:http://pygments.org/docs/lexers/

scheme支持:

class pygments.lexers.functional.RacketLexer

Short names: racket, rkt
Filenames: *.rkt, *.rktl
MIME types: text/x-racket, application/x-racket

Lexer for Racket source code (formerly known as PLT Scheme).

New in Pygments 1.6.

如何在.rst中插入代码?

.. literalinclude:: ./code/1.2.3.rkt
:language: rkt
:linenos:

包含:

.. literalinclude:: filename

目录里不显示的文件可能被一个外部纯文本文件保存为例子文本. 文件使用指令 literalinclude 包含. [1] 例如包含Python源文件 example.py, 使用:

.. literalinclude:: example.py

文件名为当前文件的相对路径. 如果是绝对路径 (以 / 开始), 则是源目录的相对路径.

输入标签可以扩展,给出 tab-width 选项指定标签宽度.

该指令也支持 linenos 选项产生行号, emphasize-lines 选项生成强调行, 以及 language 选项选择不同于当前文件使用的标准语言的语言. 例如:

.. literalinclude:: example.rb
:language: ruby
:emphasize-lines: 12,15-18
:linenos:

被包含文件的编码会被认定为 :confval:`source_encoding`. 如果文件有不同的编码,可以使用 encoding 选项:

.. literalinclude:: example.py
:encoding: latin-1

指令支持包含文件的一部分. 例如 Python模块, 可以选择类,函数或方法,使用 pyobject 选项:

.. literalinclude:: example.py
:pyobject: Timer.start

这会包含文件中 Timer 类的 start() 方法后面的代码行.

使用 lines 选项精确的控制所包含的行:

.. literalinclude:: example.py
:lines: 1,3,5-10,20-

包含1, 3, 5 到 10 及 20 之后的代码行.

另一种实现包含文件特定部分的方式是使用 start-after 或 end-before 选项 (仅使用一种). 选项 start-after 给出一个字符串, 第一行包含该字符串后面的所有行均被包含. 选项 end-before 也是给出一个字符串,包含该字符串的第一行前面的文本将会被包含.

可以往包含代码的首尾添加新行,使用 prepend 及 append 选项. 这很有用,比如在高亮显示的PHP 代码里不能包含 <?php/?> 标签.

New in version 0.4.3: 选项 encoding .

New in version 0.6: 选项 pyobjectlinesstart-after 及 end-before , 并支持绝对文件名.

New in version 1.0: 选项 prepend 、 append 及 tab-width.

还有一种方式:

插入simple code:

Literal code blocks are introduced by ending a paragraph with the special marker (double coulumn) ::. The literal block must be indented (and, like all paragraphs, separated from the surrounding ones by blank lines).

The two following codes:

This is a simple example::

    import math
print 'import done'

and:

This is a simple example:
:: import math
print 'import done'

gives:

This is a very simple example:

import math
print 'import done'

By default the syntax of the language is Python, but you can specify the language using thecode-block directive as follows:

.. code-block:: html
:linenos: <h1>code block example</h1> 参考:http://openalea.gforge.inria.fr/doc/openalea/doc/_build/html/source/sphinx/rest_syntax.html
http://openmdao.org/docs/documenting/sphinx.html http://sphinx-doc.org/markup/code.html
http://zh-sphinx-doc.readthedocs.org/en/latest/markup/code.html

sphinx插入代码的更多相关文章

  1. Bootstrap css栅格 + 网页中插入代码+css表格

    设计达人 http://www.shejidaren.com/30-minimal-app-icons.html CSS栅格: <!DOCTYPE html> <html lang= ...

  2. 使用Markdown在博客里插入代码

    今天尝试了一下在线使用Markdown编辑器写博客,发现想要实现下面这样的效果还真得折腾一会儿. <html> <head> <meta charset="ut ...

  3. 怎样在Word中插入代码并保持代码原始样式不变

    怎样在Word中插入代码并保持样式不变 我们有时候需要在word中添加一段我们写的代码,但是把代码粘贴到word文档中之后就发现所有的代码的样子都变了,我们可以采用下边的方法来实现保持代码原来的样式和 ...

  4. PE头的应用---插入代码到EXE或DLL文件中

    三.代码实现(DELPHI版本),采用第三种方式实现代码插入. 1. 定义两个类,一个用来实现在内存中建立输入表:一个用来实现对PE头的代码插入. DelphiCode: const MAX_SECT ...

  5. 编程算法 - 有序双循环链表的插入 代码(C)

    有序双循环链表的插入 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 有序双循环链表的插入, 须要找到插入位置, 能够採用, 两个指针, 一个在前, 一 ...

  6. xhEditor实现插入代码功能

    如果大家经常使用CSDN或者其他技术博客,都会有插入程序代码或脚本功能 开源中国 CSDN 这里介绍xhEditor实现插入代码功能,对xhEditor进行插件扩展 一.首先定义插件样式 <st ...

  7. 在word中如何美观地插入代码

    打开这个网站 http://www.planetb.ca/syntax-highlight-word 进去后我们看到下面的界面 中间的空白文本框,可以插入代码,下面可以选择代码种类,最后点击Show ...

  8. 在word中优雅地插入代码

    PlanetB:带行号 http://www.planetb.ca/syntax-highlight-word   Pygments(推荐):不带行号,多种样式可选 http://pygments.o ...

  9. php插入代码数据库

    插入代码:<?php $con = mysql_connect("localhost","peter","abc123"); if ( ...

随机推荐

  1. Qt 学习之路 :Repeater

    前面的章节我们介绍过模型视图.这是一种数据和显示相分离的技术,在 Qt 中有着非常重要的地位.在 QtQuick 中,数据和显示的分离同样也是利用这种“模型-视图”技术实现的.对于每一个视图,数据元素 ...

  2. Form实现无刷新上传文件并返回自定义值

    今天开发过程中遇到了这样一个问题:需要将Excel上传至服务器进行解析,但是在文档不合适的情况下希望可以不刷新页面提示用户文档不合适.冥思苦想了半天,在网上找了不少资料最终试验成功,在此分享下处理方法 ...

  3. poj 1849 Two

    /*poj 1849 two 思考一下会发现 就是求直径 直径上的中点就是两个人分开的地方(不再有交集)*/ #include<cstdio> #define maxn 100010 us ...

  4. Android使用 selector 自定义控件背景 (以spinner 为例)

    1. 在drawable中设置背景spinner_style.xml 文件  如图: 2. 在 styles.xml 中添加该背景 3. 最后在 spinner 控件添加样式 4.参考 http:// ...

  5. VS2015 Cordova Ionic移动开发(三)

    一.基础设置 1.修改App名称和程序起始页 打开config.xml配置文件显示如下,在[通用]选项卡中,将显示名称和起始页,修改为自己想要的名称即可. 如需直接在xml文件中修改:右击config ...

  6. Visual C#实现Windows信使服务

    现在有很多网络管理软件都具备网络上信息实时传送的功能,虽然有些网络通讯软件功能比较强大,有的软件不仅可以传送文本信息,还可以传送二进制文件等.但 它们都有一个无法克服的缺点,那就是分发比较困难,信息传 ...

  7. bash: ./configure: 权限不够 怎么办?

    configure没有执行权限 通过chmod给其加上x权限 chmod +x configure 再在该用户下执行 ./configure

  8. C# 线程数

    理论上,一个进程可用虚拟空间是2G,默认情况下,线程的栈的大小是1MB,所以理论上最多只能创建2048个线程,但是一般不会到这么大,因为主线程要占内存,可能还要多点.如果要创建多于2048的话,必须修 ...

  9. 在Xcode4中给程序提供命令行参数(转)

    网上xcode4的资料实在是不多,再加上xcode4相对3的改动还那么大,并且还只有英文版.我为了这个问题头痛了很久.后来终于找到了...方法如下 xcode菜单的Product->EditSc ...

  10. Oauth认证简介

    Oauth是什么: 1.Oauth是一种安全认证的协议: 2.Oauth为用户资源的授权提供了一个安全的.开放而又简易的标准: 3.Oauth的授权不会使第三方触及到用户的账号信息(用户名和密码). ...