Sphinx - 在代码块片段中使用省略号 (...)

Posted

技术标签:

【中文标题】Sphinx - 在代码块片段中使用省略号 (...)【英文标题】:Sphinx - Use ellipses (…) in code-block snippets 【发布时间】:2019-12-20 21:00:51 【问题描述】:

假设您记录了一个长代码 sn-p,并且您想用省略号 ... (…) 和垂直省略号 ⋮ 来表示其中的重复值和行。 (⋮)。

这是 JSON 格式的示例记录。有 26 个孩子,您不想全部展示。

.. code-block:: json

   
       "total": 26,
       "kids" [
           
               "_id":  1,
               "name": "Alice",
               "age":  3
           ,
           
               "_id":  2,
               "name": "Becky",
               "age":  3
           ,
           ...,
           
               "_id":  26,
               "name": "Zoe",
               "age":  4
           
       ]
   

人类读者仍然可以将其视为 JSON sn-p/code,概括并猜测省略号 ( ...)。

但是 Sphinx 会返回错误,因为这个 sn-p 的语法无效。

$ make html
...
/.../docs/source/sample.rst:3: WARNING: Could not lex literal_block as "json". Highlighting skipped.

我可以在代码块中使用省略号(带有语法高亮)吗?请注意,示例不一定是 JSON。您也会在其他语言(例如 Python)中看到此问题。

【问题讨论】:

试试:force:选项(sphinx-doc.org/en/master/usage/restructuredtext/…)。 如果:foce: 不起作用,那么吸引人的选项就更少了。不幸的是,JSON 不支持 cmets。对于支持 cmets 但将省略号视为语法错误的语言,我将省略号注释掉。如果您不介意弄脏您的 JSON 数据,您可以插入一个数据元素 "MOAR_KIDS": 999, 并用大量空格包围它。 【参考方案1】:

添加选项 :force: 并添加自定义 CSS 以禁用错误突出显示:

.highlight .err 
    border: inherit;
    box-sizing: inherit;

【讨论】:

奉献:此答案基于 mzjn 和 Steve Piercy。

以上是关于Sphinx - 在代码块片段中使用省略号 (...)的主要内容,如果未能解决你的问题,请参考以下文章

如何自定义 Sphinx 的代码块语言?

如何在 Django Summernote 中显示编程片段的代码块?

css常用代码片段 (更新中)

在 Sphinx 文档中嵌入绘图图

js中如果省略分号那么它是如何运行的

if的{}的省略