我正在尝试学习如何使用枚举。我尝试按照 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
)。