我刚刚读过这个帖子链接在xsim_手册在第 71 页示例 35 中,我遇到了一些困难才能使其适应我的目标。
我想resolution
为我的数据库的每个练习添加一个环境。这个环境将包含练习的完整解决方案。使用方程式、图片、tikz 方案……在链接的帖子中,目标是编写一个shortsolution
环境并使用常规命令进行解析。但我更喜欢保留常规环境solution
以获得简短的解决方案,因为它允许我在文档中定义一些选项,而且我会更频繁地使用这个环境。
不幸的是,当我在分辨率环境中添加一些长东西时,我遇到了一个问题。特别是,|
围绕矢量的双垂直线(对于范数)会产生以下错误:
! File ended while scanning use of \__tl_rescan:NNw.
你能帮我解决这个问题吗?我的尝试是:
|
在我的矢量周围使用双垂直线;- 让练习没有解决方案是没有问题的。我现在无法为我计算过的每个练习写出完整的计算机解决方案。
- 保持常规
solution
环境不变。
下面的代码是MWE:
\documentclass{article}
\usepackage{amsmath}
\usepackage{xsim}
\usepackage{environ}
%%Adapted from https://texwelt.de/fragen/23968/xsim-ubung-losung-zusatzlich-kurzlosung
\DeclareExerciseProperty{resolution}
% we'll use a description list for the resolutions:
\newcommand\printresolutions{%
\begin{description}
\ForEachUsedExerciseByType{%
\def\ExerciseType{##1}%
\def\ExerciseID{##2}%
\GetExercisePropertyT{resolution}
{%
\item[Résolution ##3]
####1%
}%
}%
\end{description}
}
\NewEnviron{resolution}{\SetExpandedExerciseProperty{resolution}{\expandonce{\BODY}}}
\begin{document}
\section{My section}
\begin{exercise}
Foo exercise with no resolution
\end{exercise}
\begin{solution}
Foo solution with no resolution.
\end{solution}
\begin{exercise}
Bar exercise with a resolution
\end{exercise}
\begin{resolution}
This is the resolution of my \textbf{bar} exercise.
\begin{equation*}
||\vec{F}|| %%here is the trouble
\end{equation*}
\end{resolution}
\begin{solution}
This is a solution for bar
\end{solution}
\printsolutions
\section{Resolutions}
\printresolutions
\end{document}
答案1
正如您所发现的,||
这会产生问题。原因是在其属性列表中xsim
使用||
作为分隔符。如果您打开文件,.xsim
您将看到类似以下行
\XSIM{id}{exercise-1=={1}||exercise-2=={2}}
在您的情况下,这会产生问题,因为您的决议被用作此类列表中的条目:
\XSIM{resolution}{exercise-2=={This is the resolution of my \textbf {bar} exercise. \par \begin {equation*} ||\vec {F}|| \end {equation*}}}
(您可能会注意到,例如,这也会阻止在您的决议中使用逐字材料)。
有两种可能的解决方案:
使用不同的分隔符,一些在普通文本中不太可能使用的分隔符,也许是这样的:
\xsimsetup{split-aux-lists = |&|}
手册
xsim
确实记录了这一点,但已经过时了。它记录了一个|
作为列表分隔符的单一字符(在早期版本中是这样的)。我更倾向于采用不同的解决方案并完全避免该问题:使用
\lVert\vec{F}\rVert
。或者 – 更好的是 – 加载mathtools
包并执行如下操作:\usepackage{mathtools} \DeclarePairedDelimiter\norm{\lVert}{\rVert}
你可以使用更具语义的
\norm{\vec{F}}
。