如何在 xsim 中打印带有 ID 的练习?

如何在 xsim 中打印带有 ID 的练习?

我有一些与ID有关的练习。

\documentclass{report}
\usepackage[paperwidth=17cm, paperheight=24cm, left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}
\usepackage{fouriernc}
\usepackage{xsim,pgffor}
\usepackage{needspace}
\DeclareExerciseEnvironmentTemplate{runin}
{%
\par\vspace{\baselineskip}
\Needspace * {2\baselineskip}
\noindent
\textbf{\XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{counter}}%
\GetExercisePropertyT{subtitle}{ \textit{#1}} %
\GetExercisePropertyT{points}{%
\marginpar{%
\PropertyValue
\GetExercisePropertyT{bonus-points}{+\PropertyValue}%
\,\IfExerciseGoalSingularTF{points}
 {\XSIMtranslate{point}}
{\XSIMtranslate{points}}%
 }%
 }%
 }
 {}
\xsimsetup{
exercise/within=section ,
exercise/template=runin,
solution/template=runin,
solution/print = true,
exercise/the-counter = \thesection.\arabic{exercise}.}
\DeclareExerciseCollection{exam}

\begin{document}
\chapter{AAA}
\section{BBB}
\collectexercises{exam}
\begin{exercise}[ID=q1]
  1
\end{exercise}
\begin{solution}
  1
\end{solution}
\begin{exercise}[ID=q2]
  2
\end{exercise}
\begin{solution}
  2
\end{solution}
\begin{exercise}[ID=q3]
  3
\end{exercise}
\begin{solution}
  3
\end{solution}
\begin{exercise}[ID=q4]
  4
\end{exercise}
\begin{exercise}[ID=q5]
  5
\end{exercise}
\begin{exercise}[ID=q6]
  6
\end{exercise}
\begin{exercise}[ID=q7]
  7
\end{exercise}
\begin{exercise}[ID=q8]
  8
\end{exercise}
\begin{exercise}[ID=q9]
  9
\end{exercise}

\begin{exercise}[ID=q10]
  10
\end{exercise}
\printcollection{all exercises}
\section{Print with ID}
\printexercise{exercise}{q3}

\section{Answers}
\printsolutions
\end{document} 

现在我想打印一个(或一些)练习。我试过了

\printexercise{exercise}{q3}

或者

\printexercise{exercise}{q1,q3,q5}

但我无法得到结果。我该如何得到它?

答案1

我试过 [...]

\printexercise{exercise}{q1,q3,q5}

这实际上没有多大意义,因为它不遵循\printexercise(当前手册第 19 页)的命令描述:

  • \printexercise{<type>}{<id>}
    <type>用 插入 类型的练习id <id>

重要的是要注意,id在您尝试使用的问题中期望ID(当前手册的第 10 页):

  • id = {<integer>}
    保存练习的内部 ID。用户无法设置。
  • ID = {<text>}
    如果已定义,则保存练习的用户 ID。否则等于id

这是一种可行的方法:

\documentclass{article}
\usepackage{xsim}
\begin{document}

\begin{exercise}[ID=foo]
  bla bla
\end{exercise}

\XSIMexpandcode{\printexercise{exercise}{\GetExerciseIdForProperty{ID}{foo}}}

\end{document}

或者可能更好

\documentclass{article}
\usepackage{xsim}

\newcommand*\insertexercise[1]{%
  \XSIMexpandcode{\printexercise{exercise}{\GetExerciseIdForProperty{ID}{#1}}}%
}

\begin{document}

\begin{exercise}[ID=foo]
  bla bla
\end{exercise}

\insertexercise{foo}

\end{document}

在此处输入图片描述

相关内容