以下 MWE 按我预期的方式工作,但是当我进行某些更改时出现错误:
- 如果我
\textbf{something}
在\solution{}
say中引入 say\solution{\textbf{xx}}
。 - 如果我
\theenumi
改为\textbf{\theenumi}
可能这两个问题是同一个问题。
下面的 MWE 基于将枚举的值写入输出文件。
\documentclass{article}
\makeatletter
\newwrite\solutions@file
\newcommand{\collectSolutions}{\immediate\openout\solutions@file=\jobname.sol}
\newcommand{\solution}[1]{\immediate\write\solutions@file{\theenumi #1}}
\newcommand\printSolutions{\immediate\closeout\solutions@file{\input{\jobname.sol}}}
\makeatother
\begin{document}
\collectSolutions
\begin{enumerate}
\item hello \solution{xx}
\item hello \solution{xx}
\item hello \solution{xx}
\end{enumerate}
\printSolutions
\end{document}
答案1
当通过命令打印时,解决方案必须扩展\printSolutions
。
因此,尝试一下:
\newcommand{\solution}[1]{\immediate\write\solutions@file{\theenumi \unexpanded{#1}}}
这样,文件的内容将在通过命令“输入”时展开\printSolutions
。
编辑:正如您所发现的,\noexpand
还需要保留\theenumi
如下值:
\newcommand{\solution}[1]{\immediate\write\solutions@file{\noexpand\textbf{\theenumi} \unexpanded{#1}}}