enumitem
我在使用和包时遇到一个奇怪的问题answers
。以下代码编译时没有错误。
\documentclass{article}
\usepackage{enumitem}
\usepackage{answers}
\Newassociation{sol}{Solution}{ans}
\newlist{question}{enumerate}{1}
\setlist[question,1]{label=\arabic*}
\begin{document}
\Opensolutionfile{ans}
\section{Problems}
\begin{question}
\item Question 1 \begin{sol}Solution 1\end{sol}
\end{question}
\Closesolutionfile{ans}
\section{Solutions}
\input{ans}
\end{document}
但是,每当我尝试设置列表中的标签样式时,answers
都会引发TeX capacity exceeded, sorry
错误。
\documentclass{article}
\usepackage{enumitem}
\usepackage{answers}
\Newassociation{sol}{Solution}{ans}
\newlist{question}{enumerate}{1}
\setlist[question,1]{label=\textbf{\arabic*}}
\begin{document}
\Opensolutionfile{ans}
\section{Problems}
\begin{question}
\item Question 1 \begin{sol}Solution 1\end{sol}
\end{question}
\Closesolutionfile{ans}
\section{Solutions}
\input{ans}
\end{document}
肯定有办法将这些包一起使用吧?
答案1
该answers
包自动定义解决方案环境编号/标题,定义\Solutionlabel
,基本上是\emph{Solution #1}
,#1
被输入\textbf
---这是错误的,由于另一个原因(由于label=\arabic*
enumitem的方式,这不能以这种方式工作。label={\bfseries \arabic*}
而是使用。
诀窍是重新定义\Solutionlabel
使用相同的标签样式,但这实际上很乏味,因为它需要定义列表标签和解决方案标签。
我建议问题环境采用定理形式,而不是枚举列表形式。
\documentclass{article}
\usepackage{answers}
\usepackage{enumitem}
\Newassociation{sol}{Solution}{ans}
\newlist{question}{enumerate}{1}
\setlist[question,1]{label={\bfseries \arabic*}} % defines questioni counter
\renewcommand{\Solutionlabel}[1]{\bfseries Solution \arabic{questioni}}
\begin{document}
\Opensolutionfile{ans}
\section{Problems}
\begin{question}
\item Question 1 \begin{sol}Solution 1 -- finally\end{sol}
\end{question}
\Closesolutionfile{ans}
\section{Solutions}
\input{ans}
\end{document}