![如何自动保护参数中传递的所有命令?](https://linux22.com/image/436845/%E5%A6%82%E4%BD%95%E8%87%AA%E5%8A%A8%E4%BF%9D%E6%8A%A4%E5%8F%82%E6%95%B0%E4%B8%AD%E4%BC%A0%E9%80%92%E7%9A%84%E6%89%80%E6%9C%89%E5%91%BD%E4%BB%A4%EF%BC%9F.png)
我需要将一些数学公式写入辅助文件。
以下 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$