You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DocBook的<term>中用<cmdsynopsis>风格描述配置选项?

解决DocBook中<term>内无法使用<arg>/<group>的问题

核心原因

DocBook 4.5的内容模型限制了<term>标签仅能包含内联级元素(如<option>、<literal>、<emphasis>等),而<cmdsynopsis>、<arg>、<group>属于命令概要专用的块级/结构化元素,不能直接嵌套在<term>中。

可行解决方案

方案1:用内联元素模拟选项结构

利用<choice>内联元素(专门用于表示互斥选项)结合<emphasis>标记默认值,既保持结构化又符合<term>的内容规则:

<variablelist>
  <varlistentry>
    <term>
      <option>foo=</option>
      <choice>
        <option>yes</option>
        <option><emphasis role="bold">NO</emphasis></option>
      </choice>
    </term>
    <listitem>
      <para>选项<option>foo</option>可取<option>yes</option>和<option>NO</option>值,默认值为<emphasis role="bold">NO</emphasis>。</para>
    </listitem>
  </varlistentry>
  <varlistentry>
    <term>
      <option>bar=</option>
      <choice>
        <option>easy</option>
        <option><emphasis role="bold">HARD</emphasis></option>
      </choice>
    </term>
    <listitem>
      <para>选项<option>bar</option>可取<option>easy</option>和<option>HARD</option>值,默认值为<emphasis role="bold">HARD</emphasis>。</para>
    </listitem>
  </varlistentry>
</variablelist>

方案2:将<cmdsynopsis>移至<listitem>中

如果必须保留<cmdsynopsis>的风格,可以在<term>中使用简化的选项标识,把完整的结构化概要放在<listitem>内:

<variablelist>
  <varlistentry>
    <term>
      <option>foo=yes|NO</option>
    </term>
    <listitem>
      <para>选项<option>foo</option>的取值说明:</para>
      <cmdsynopsis>
        <option>foo=</option>
        <group choice="plain">
          <arg choice="plain">yes</arg>
          <arg choice="plain">NO</arg>
        </group>
      </cmdsynopsis>
      <para>默认值为<emphasis role="bold">NO</emphasis>。</para>
    </listitem>
  </varlistentry>
  <varlistentry>
    <term>
      <option>bar=easy|HARD</option>
    </term>
    <listitem>
      <para>选项<option>bar</option>的取值说明:</para>
      <cmdsynopsis>
        <option>bar=</option>
        <group choice="plain">
          <arg choice="plain">easy</arg>
          <arg choice="plain">HARD</arg>
        </group>
      </cmdsynopsis>
      <para>默认值为<emphasis role="bold">HARD</emphasis>。</para>
    </listitem>
  </varlistentry>
</variablelist>

方案3:用<literal>+<replaceable>简化标记

如果不需要强结构化,仅需清晰区分选项和取值,可使用基础内联元素组合:

<term>
  <literal>foo=</literal><replaceable>yes</replaceable>| <emphasis role="bold">NO</emphasis>
</term>

内容的提问来源于stack exchange,提问作者cagney

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 05:07:04