如何自动保护参数中传递的所有命令?

如何自动保护参数中传递的所有命令?

我需要将一些数学公式写入辅助文件。

以下 MWE 不起作用:

\documentclass{article}
\usepackage{amsmath}
\newwrite\filehandle
\newcommand{\addToFile}[1]{\immediate\write\filehandle{#1}}

\begin{document}

\immediate\openout\filehandle=\jobname.test
\addToFile{$\sum_{k=1}^n k$}
\immediate\closeout\filehandle

\input{\jobname.test}

\end{document}

#1有没有办法自动保护在参数中使用的所有命令\addToFile

我不会成为该文件的用户:这就是我寻找自动解决方案的原因。

PS:这里的问题来自于包amsmath

答案1

你可以用以下方式来论证\unexpanded{....}

答案2

除非expl3明确请求,否则不会进行任何扩展\iow_now:Nx;使用\iow_now:Nn不会对输入产生任何影响。

\documentclass{article}

\ExplSyntaxOn

\iow_new:N \g_colas_filehandle_iow

\NewDocumentCommand{\openFile}{m}
 {
  \iow_open:Nn \g_colas_filehandle_iow { #1 }
 }
\NewDocumentCommand{\closeFile}{}
 {
  \iow_close:N \g_colas_filehandle_iow
 }

\NewDocumentCommand{\addToFile}{m}
 {
  \iow_now:Nn \g_colas_filehandle_iow { #1 }
 }

\ExplSyntaxOff

\begin{document}

\openFile{\jobname.test}
\addToFile{$\sum_{k=1}^n k$}
\closeFile

\input{\jobname.test}

\end{document}

该文件的内容\jobname.test将是

$\sum _{k=1}^n k$

相关内容