在外部文件中写入 \section 时出错

在外部文件中写入 \section 时出错

以下 MWE 抛出错误

未定义的控制序列。\GenericError...

#4 \errhelp @err@ ... l.9 \immediate\write\fich@sol {\section{测试}} ?

有什么问题?

\documentclass{article}

\makeatletter

\newwrite \fich@sol
\def\nameFile{example.sol}
\AtBeginDocument{ \immediate\openout \fich@sol \nameFile}
\AtEndDocument{ \immediate\closeout \fich@sol}
\immediate\write\fich@sol {\section{Test}}

\makeatother


\begin{document}

Test

\end{document}

答案1

您必须在写入文件时防止扩展,您可以通过在前面加上或来实现\section\string差别\noexpand很小,但使用 时输出\string后不会有空格,而使用 时会得到):\section\noexpand\section {Test}

\documentclass{article}

\makeatletter

\newwrite \fich@sol
\def\nameFile{example.sol}
\AtBeginDocument{ \immediate\openout \fich@sol \nameFile}
\AtEndDocument{ \immediate\closeout \fich@sol}


\begin{document}

Test
\immediate\write\fich@sol {\string\section{Test}}

\makeatother

\end{document}

相关内容