编辑

编辑

我正在尝试学习如何使用枚举。我尝试按照 wiki 的此页面设置一个编号集,但不起作用。是否可以在不重新定义所有计数器的情况下实现?

\definestructureconversionset[myconversion][n, a, a, a][n]

\defineenumeration[test]

\setupenumeration[test]
                 [headstyle=bold,style=normal,
                   indenting=never, indentnext=no, margin=-0.5mm,
                   alternative=hanging, distance=0pt,
                   width=6mm, stopper={.}, text={},
                   before={\blank[none]},
                   prefixconversionset=myconversion]

\starttext

\test bla
\subtest ploup
\test bla

\stoptext

先感谢您。

编辑

在 Metafox 介入后,我之前的 MWE 行为正确,但实际环境中却不正确。完全枚举的唯一定义已经表现不正确。这是一个更完整的 MWE:

\definestructureconversionset[myconversion][n,n,a,a][n]

\defineenumeration[question]

\setupenumeration[question][headstyle=bold,style=normal,
  indenting=never, indentnext=no, margin=-0.5mm,
  alternative=hanging, distance=0pt,
  width=4mm, stopper={.}, text={},
  before={\blank[none]},
  numberconversionset=myconversion
]
\setupenumeration[subquestion][headstyle=bold,style=normal,
  indenting=never, indentnext=no, margin=-0.5mm,
  alternative=hanging, distance=0pt,
  width=6mm, stopper={.}, text={},
  before={\blank[none]},
  numberconversionset=myconversion
]
\setupenumeration[subsubquestion][headstyle=sl,style=normal,
  indenting=never, indentnext=no, margin=-0.5mm,
  alternative=hanging, distance=0pt,
  width=8mm, stopper={)}, text={},
  before={\blank[none]},
  numberconversionset=myconversion
]
\setupenumeration[subsubsubquestion][headstyle=sl,style=normal,
  indenting=never, indentnext=no, margin=-0.5mm,
  alternative=hanging, distance=0pt,
  width=11mm, stopper={)}, text={},
  before={\blank[none]},
  numberconversionset=myconversion
]

\def\doTA[#1]{
  \doifsomethingelse{#1}
    {
      \nextquestion
      \blank[big]\noindenting
      {\rm\bfb\convertedcounter[question][numberconversion=R]. #1}
      \blank[small,samepage]
    }
    {
      \question
    }
}

\def\doTB[#1]{
  \doifsomethingelse{#1}
    {
      \nextsubquestion
      \blank[small]\noindenting
      {\hskip 1cm {\rm\bfa\convertedcounter[question]. #1}}
      \blank[small,samepage]
    }
    {
      \subquestion
    }
}

\def\doTC[#1]{
  \doifsomethingelse{#1}
    {
      \nextsubsubquestion
      \blank[big]\noindenting
      {\hskip 1cm \sl\convertedcounter[question]) #1}
      \blank[small,samepage]
    }
    {
      \subsubquestion
    }
}

\def\doTD[#1]{
  \doifsomethingelse{#1}
    {
      \nextsubsubquestion
      \blank[big]\noindenting
      {\hskip 1cm \sl\convertedcounter[question][numberconversion=n]. #1}
      \blank[small,samepage]
    }
    {
      \subsubsubquestion
    }
}


\def\TA{\dosingleempty\doTA}
\def\TB{\dosingleempty\doTB}
\def\TC{\dosingleempty\doTC}
\def\TD{\dosingleempty\doTD}


\starttext

\TA[Big question]

\TB blabla
\TB blabla

\TB[Subquestion]

\TC
Blabla
\TC
Blabla

\TC[Subsubquestion With title]

Blabla
\TD Hello
\TD Pouet

\TC Hello

\TA Another question
\TA Another question

\stoptext

在这种情况下,转换不适用于子子问题和子子子问题。我在其中使用的任何选项是否与转换交互?

答案1

您必须以逗号结束数字转换设置中的最后一个条目,因为换行符将转换为空格,并且您会将myconversion (名称末尾带有空格)传递给numberconversionset键。

编写设置的正确方法是用命令结束最后一项

\setupenumeration
  [...]
  [
     numberconversionset=myconversion,
  ]

或者在最后一个条目后放置右括号

\setupenumeration
  [...]
  [numberconversionset=myconversion]

在大多数情况下,这两种方法没有区别,但是当您使用旧版本的 ConTeXt 时,第一种方法对某些命令不起作用(例如\definepalet)。

相关内容