如何在 ConTeXt 中格式化寄存器内的项目?

如何在 ConTeXt 中格式化寄存器内的项目?

我有一些文件使用寄存器来跟踪项目,然后将其显示在列表中:

\defineregister[animals][pagenumber=no, indicator=no, before=, n=1]
\def\definegetanimal{\animals}
\define[1]\defineanimal{#1}
\starttext

    \defineanimal{cat}
    \defineanimal{pig}
    \defineanimal{sheep}
    
    \placeregister[animals]

\stoptext

我需要对寄存器进行一些非常简单的格式化,但无论我尝试什么似乎都没有效果。

在一个文档中,我需要在列表中显示寄存器:

\defineregister[animals][pagenumber=no, indicator=no, before=\item, n=1]
\def\definegetanimal{\animals}
\define[1]\defineanimal{#1}
\starttext

    \defineanimal{cat}
    \defineanimal{pig}
    \defineanimal{sheep}
    
    \startitemize[n]
        \placeregister[animals]
    \stopitemize

\stoptext

在另一个文档中,我需要列表中的每个项目都单独显示在页面上(即在之后放置分页符):

\defineregister[animals][pagenumber=no, indicator=no, before=, n=1, after=\pagebreak]
\def\definegetanimal{\animals}
\define[1]\defineanimal{#1}
\starttext

    \defineanimal{cat}
    \defineanimal{pig}
    \defineanimal{sheep}
    
    \placeregister[animals]

\stoptext

这些都不起作用,而且我找不到任何其他\setup命令来帮助配置寄存器列表中出现的项目的外观。

如何在 ConTeXt 中格式化寄存器内的项目?

答案1

如果我理解正确的话,你需要设置\textcommand

%\setuppapersize[A6]
\defineregister[animalsi]
    [pagenumber=no, 
     indicator=no, 
     n=1,
     before=,
     textcommand=\groupedcommand{\startitem}{\stopitem}]
\defineregister[animalsii][animalsi]
    [textcommand=\groupedcommand{}\page]
\animalsi{Ne}
\animalsi{ultra}
\animalsi{crepidam}
\animalsii{Feliz}
\animalsii{bicentenario}
\animalsii{Perú}
\starttext   
\startitemize[n]
\placeregister[animalsi]
\page
\placeregister[animalsii]
\stopitemize
\stoptext

对于别名等,在我看来\let<whatever macro name I choose>\animalsi比解决方案更短更直接\define在此处输入图片描述

相关内容