XSIM 中是否有与 exsheet 的 \exerciseNumber{} 等效的函数?

XSIM 中是否有与 exsheet 的 \exerciseNumber{} 等效的函数?

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}

在此处输入图片描述

相关内容