扩展 #1 以用于 addtostream

扩展 #1 以用于 addtostream

我正在尝试使用该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)。

相关内容