我想要一份包含一些练习和解决方案的文档。我知道有很多软件包可以做到这一点,我之所以选择它是xsim
因为它符合我的许多标准。
现在,我希望每次练习后都能有一个简短的解决方案。我在软件包的文档中找到了一个例子,其中有这样的shortsolution
环境。但我不知道如何让它们在每次练习后出现。
我尝试(但没有成功)使用一种接近环境的语法solution
,该语法可以在每次练习后使用注释出现\xsimsetup{solution/print = true}
。
以下是我的 MWE:
% http://texwelt.de/wissen/fragen/23968/
\documentclass{article}
\usepackage{xsim}
% new property:
\DeclareExerciseProperty{shortsolution}
% new environment:
\NewDocumentEnvironment{shortsolution}{+b}
{%
\edef\ExerciseType{\csname g_xsim_exercise_type_tl\endcsname}%
\edef\ExerciseID{\csname g_xsim_exercise_id_tl\endcsname}%
\SetExerciseProperty{shortsolution}{#1}%
}
{}
% we'll use a description list for the list of short solutions:
\newcommand\printshortsolutions{%
\begin{description}
\ForEachUsedExerciseByType{%
\GetExercisePropertyT{shortsolution}
{\item[Short Solution ##3]####1}%
}%
\end{description}
}
\xsimsetup{ % This something I added and not working !
shortsolution/print = true,
}
\begin{document}
\section{Problems}
% set shortsolution through option:
\begin{exercise}[subtitle=Pythagoras]
This is the first problem.
\end{exercise}
\begin{shortsolution}
This is a shortsolution to the first problem.
\end{shortsolution}
\begin{solution}
This is the solution to the first problem.
\end{solution}
\begin{exercise}[subtitle=Another Problem]
This is the second problem.
\end{exercise}
\begin{solution}
This is the solution to the second problem.
\end{solution}
% set shortsolution with custom command:
\begin{exercise}[subtitle=Yet Another Problem]
This is the third problem.
\end{exercise}
\begin{shortsolution}
This is a shortsolution to the third problem.
\end{shortsolution}
\begin{solution}
This is the solution to the third problem.
\end{solution}
\section{Shortsolutions}
\printshortsolutions
\section{Solutions}
\printsolutions[headings=false]
\end{document}
还有一个附加问题,如何改变显示环境的布局shortsolution
?
答案1
如果要
shortsolution
在文档中排版环境所在的简短解决方案,只需#1
在定义中放置另一个,请参阅标有<<<<
\NewDocumentEnvironment{shortsolution}{+b} {% \edef\ExerciseType{\csname g_xsim_exercise_type_tl\endcsname}% \edef\ExerciseID{\csname g_xsim_exercise_id_tl\endcsname}% \SetExerciseProperty{shortsolution}{#1}% before% <<<< #1% <<<< after% <<<< } {}
此处更改布局的方式与其他地方相同:
\textbf{#1}
将其以粗体打印、\textcolor{red}{#1}
将其设为红色(假设您xcolor
在序言中加载了包)等等。下一个示例将其放置在tcolorbox
:\usepackage{tcolorbox} \NewDocumentEnvironment{shortsolution}{+b} {% \edef\ExerciseType{\csname g_xsim_exercise_type_tl\endcsname}% \edef\ExerciseID{\csname g_xsim_exercise_id_tl\endcsname}% \SetExerciseProperty{shortsolution}{#1}% \begin{tcolorbox} #1 \end{tcolorbox} } {}
只需一个简单的开关即可实现此功能可选
\newif\ifshortsolprint
和
\ifshortsolprint \begin{tcolorbox} #1 \end{tcolorbox} \fi
可以通过
\shortsolprinttrue
和\newif\shortsolprintfalse
之后的任何地方进行控制\newif\ifshortsolprint
。当然
\xsimsetup
也可以定义一个键,但需要 expl3:\ExplSyntaxOn \bool_new:N \l_xsim_shortsolution_bool \keys_define:nn {xsim} { shortsolution/print .bool_set:N = \l_xsim_shortsolution_bool } % new environment: \NewDocumentEnvironment{shortsolution}{+b} { \tl_set:NV \ExerciseType \g_xsim_exercise_type_tl \tl_set:NV \ExerciseID \g_xsim_exercise_id_tl \SetExerciseProperty {shortsolution} {#1} \bool_if:NT \l_xsim_shortsolution_bool { \begin{tcolorbox} #1 \end{tcolorbox} } } {} \ExplSyntaxOff
现在可以通过以下方式控制
\xsimsetup{ shortsolution/print = true }