6

我经常遇到想将一个术语链接到词汇表但以复数形式陈述该术语的情况。

所以通常你用单数做这样的事情:

Some text before the term :term:`important word` then the stuff after the term

这被认为是一个完全不同的术语:

Some text before the term :term:`important words` then the stuff after the term

这不会被解析:

Some text before the term :term:`important word`s then the stuff after the term

这是非常多余的(但就我目前的知识而言,这是我唯一的选择):

Some text before the term :term:`important words<important word>` then the stuff after the term

有没有另一种方法可以用复数形式写一个术语而不需要两次陈述这个术语?

4

1 回答 1

17

我面临同样的问题。我不是专家,但这是我发现的(部分与您自己的发现重叠):

.. won't resolve to "foo"
:term:`foos`

.. reST doesn't parse the string
:term:`foo`s

.. ugly markup and gives different formatting for "foo" and "s"
:term:`foo`\ s

.. redundant and verbose, but most versatile
:term:`foos<foo>`

虽然倒数第二个模式会起作用,但最后一个确实是你想要的。它不仅将复数“s”的格式与单词的其余部分相同(不像:term:`foo`\ s,它可能会给你类似foo s 的东西),而且当复数不仅仅是简单的串联时它也有效。例如考虑目录/目录,或数据/数据。对于这些情况,最好采用完全重写机制。

您可以通过定义替换来使您的文档不那么冗长:

.. |foos| replace:: :term:`foos<foo>`

然后在任何你想要复数“foos”的地方,你都可以写替换引用(见上一个链接)|foos|,文档处理器会像对待它一样对待它:term:`foos<foo>`


参考:

https://sourceforge.net/p/docutils/mailman/message/31536488/

于 2014-05-25T09:31:32.557 回答