我正在尝试使用以下方法写入辅助文件
\newwrite\tempfile
[...]
\immediate\openout\tempfile=list.tex
\immediate\write\tempfile{Text to write to file}
\immediate\closeout\tempfile
它对纯文本很有效,但我需要它与
\input{ans\thesection-\arabic{enumi}}
我如何将其写入文件而不进行扩展,从而允许我将整个文件插入到文档的末尾(在我的答案部分)。
答案1
最简单的方法是使用\unexpanded
需要 e-TeX(即不太旧的 TeX 版本):
\immediate\write\tempfile{\unexpanded{Text to write to file}}
答案2
要么放在\noexpand
不应扩展的命令之前,要么\unexpanded{...}
放在较长的文本周围。
答案3
您想要的是etex
的\unexpanded
宏。但是,如果您将它与 一起使用\thesection
,您确定这确实是您想要的吗?例如,请看以下内容:
\documentclass{article}
\newwrite\tempfile
\begin{document}
\section{First}
\immediate\openout\tempfile=\jobname.tmp
\immediate\write\tempfile{\unexpanded{Section \thesection}}
\immediate\closeout\tempfile
\section{Second}
Something:
\input{\jobname.tmp}
\end{document}
它会将内容写入\thesection
临时文件,然后稍后再将其输入。运行它时,您会看到它输出“Something: Section 2”
这真的是你想要的行为吗?如果你正在写“答案”,那么你大概希望它返回到相应问题所在的正确部分,在这种情况下,你将想\thesection
在撰写本文时它会扩大。
可能仍有一些内容是你不想要扩展的,但请考虑一下哪些是你想要扩展的,哪些是不想扩展的......
在这个问题中,有更多关于写入文件的信息:将内容写入 aux 文件的基本机制是什么?
答案4
听起来您可能有兴趣使用该answers
包,下面是 MWE。
它为您完成所有繁重的工作,并允许您将任何您喜欢的内容放入解决方案文件中,而无需转义任何字符。它有一个不错的切换功能,允许您预览问题旁边的答案(参见我的 MWE)。
\documentclass{article}
\usepackage{answers} % solutions to problems done *beautifully*
%\usepackage[nosolutionfiles]{answers} % use this line if you want to see the answers
% in the document
\newcounter{problem}
\newenvironment{problem}{\refstepcounter{problem} {\bfseries\theproblem}.\ }{}
% solution files
\Opensolutionfile{shortsolutions}
\Newassociation{shortsolution}{shortSoln}{shortsolutions}
\begin{document}
\begin{problem}
Here's a question
\begin{shortsolution}
Here's the answer- can put anything in here: e.g $\frac{1}{3}$
\end{shortsolution}
\end{problem}
\begin{problem}
Here's another question
\begin{shortsolution}
Here's another answer- can put figures, tables- anything you like!
\end{shortsolution}
\end{problem}
\newpage
% close the solutions files
\Closesolutionfile{shortsolutions}
% input the SHORT solutions file
\IfFileExists{shortsolutions.tex}{\input{shortsolutions.tex}}{}
\end{document}