我需要将一些数学公式写入辅助文件。
以下 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$