我正在尝试使用该newfile
包并\input
自动生成一些文档,特别是从操作列表和每个操作的预期结果中生成测试规范的结果日志。MWE:
\documentclass{article}
\usepackage{newfile}
\newoutputstream{output}
\openoutputfile{generated.output}{output}
\newcommand{\problematic}[1]{
\expandafter\item Original: #1
% This is the problem:
\addtostream{output}{\arabic{enumi} \alph{enumii}) #1 \\}
% Clue? This results in @par in the output, rather than paragraph break
%\addtostream{output}{\arabic{enumi} \alph{enumii}) #1\par}
}
\begin{document}
\section{Original list}
\begin{enumerate}
\item An action.
\begin{enumerate}
\problematic{Simple result is fine.}
\problematic{This one is troublesome, because:
% Uncomment to break:
%\begin{enumerate}
% \item I'm having trouble
% \item writing this list.
%\end{enumerate}
}
\problematic{This result is also fine, but how to I correctly expand \#1 in addtostream?}
\end{enumerate}
\end{enumerate}
\closeoutputstream{output}
\section{Included content}
\input{generated.output}
\end{document}
\problematic
应该输出并将\item
#1 写入流以供\input
稍后使用。\expandafter
适用于\item
,但我遇到了 的问题。\addtostream
我尝试使用\expandafter
各种组合,但无济于事。就 MWE 而言,当% Uncomment to break
取消注释以下行时,编译会失败,并显示:
! Argument of \@mklab has an extra }.
<inserted text>
\par
l.28 }
最终,\problematic
宏将以适合输入到 longtable 中的形式写入行。要将 的第一个参数\problematic
写入输出流,需要什么神奇的咒语?
答案1
正如@clemens指出的那样,我所需要的不是扩展#1
,而是完全相反,\unexpanded
正如这个问题所述:如何向文件写入命令(尽管没有newfile
)。