0

我正在尝试为我的项目创建文档,该文档具有通过串行接口的特定通信协议。

该协议的工作原理如下:

Request data: 'command id''argument1''argument2'
Response: 'command id''response'

其中 'command id' 是单个字符,并且 id 和参数之间没有空格。

我需要突出显示每个论点,以便阅读它的人可以识别每个论点的开始和结束位置,并在以后为每个论点提供定义。

我能得到的最好结果是使用glossarysphinx 的选项。问题是词汇表是全球性的,所以我不能从任何命令中重复任何术语。

这是rst带有glossary解决方案的代码

command: L (0x4C)
-----------------

Description: Example command.

Usage: :term:`L`\ :term:`argument1`\ :term:`argument2`
    .. glossary::
        
        L
            command identifier.

        argument1
            
            first argument1
        
        argument2
            
            second argument

Answer: :term:`L`\ :term:`response`
    .. glossary::

        L
            command identifier.

        response
            response example. 

我也尝试过使用:

:samp: `L{argument1}{argument2}`

但是这样一来,就不可能区分输出文档中的每个参数。这是一种交替每个参数颜色的方法吗?

还尝试用粗体标记替换每个参数,但如果它不是内容块,则会被主题样式覆盖。

我怎样才能达到示例中的结果,但glossary仅限于我所描述的行?glossary不需要在术语及其定义之间创建的引用。

我正在使用 readthedocs 提供的主题,但这不是必需的。

4

1 回答 1

1

如果我理解您的问题,您可以使用自定义样式来执行此操作。

例如,在Pyramid 文档词汇表中,创建一个新的样式规则:

dl.glossary.docutils dt:nth-of-type(2n+1) {
    background: #ffc0cb;
}

请参阅如何将自定义样式添加到 RTD 主题的详细信息。

词汇表条目的备用背景颜色

操作编辑:

在这个答案之后,我发现如何做我想要的,这是第一个:

command: E (0x45)
-----------------

Description: Example command.

Usage: :samp:`{E}{argument1}{argument2}`
    .. rst-class:: cmdglossary

        | E: command identifier.
        | argument1: first argument1
        | argument2: second argument

Answer: :samp:`{E}`
    .. rst-class:: cmdglossary

        | E: command identifier.        
        | response: response example. 

这是自定义的css文件

code.samp em:nth-of-type(2n+2) {
    background: #e7f2fa;
}

code.samp em{
    color: #2980B9;
}

.cmdglossary div.line:nth-of-type(2n+2) {
    background: rgb(231, 242, 250);
}
于 2019-04-01T20:16:08.513 回答