我有一些与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}