exsheets 包允许通过其 ID 标签引用上一个练习\exerciseNumber{<id>}
。现在换成 XSIM 后,我找不到等效的。\GetExerciseProperty{ID}
提供了当前练习的 ID(手册 v0.11,第 31 页),但我找不到使用其 ID(或 id;手册第 10 页)在 XSIM 中访问上一个问题编号的方法。
我可以\label{}
在一个问题中提供一个单独的标签,并在以后参考它\ref{}
。但我更喜欢直接访问 ID 标签。
背景:我收集了约 300 份使用 exsheets 和大量交叉引用构建的练习。现在我想将其转换为 xsim,而无需手动添加标签和引用。
答案1
目前没有这样的命令,但可以定义一个:
\documentclass{article}
\usepackage{xsim,lipsum}
\ExplSyntaxOn
\NewDocumentCommand \exercisenumber {m}
{
\xsim_get_property:nxn
{exercise}
{ \xsim_get_id_for_property:nn {ID} {#1} }
{counter}
}
\cs_generate_variant:Nn \xsim_get_property:nnn {nx}
\ExplSyntaxOff
\begin{document}
\begin{exercise}
\lipsum[1]
\end{exercise}
\begin{exercise}[ID=foo]
\lipsum[1]
\end{exercise}
\begin{exercise}
See exercise \exercisenumber{foo}. \lipsum[1]
\end{exercise}
\end{document}