如何将带有反斜杠的内容写入文件?

如何将带有反斜杠的内容写入文件?

以下 MWE 按我预期的方式工作,但是当我进行某些更改时出现错误:

  1. 如果我\textbf{something}\solution{}say中引入 say \solution{\textbf{xx}}
  2. 如果我\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}}}

相关内容