我正在编写一个宏,将一些命令写入文本文件。稍后将读取此文本文件以执行一些宏。
宏:
\documentclass{article}
\begin{document}%
\newwrite\tmpfile%
\immediate\openout\tmpfile=output.tex%
\immediate\write\tmpfile{some text and a percent sign}%
\immediate\closeout\tmpfile%
\end{document}%
导出的文本
some text and a percent sign
为了避免无聊的空白,我需要用百分号来结束我的行:%
我试过这条线
\immediate\write\tmpfile{some text and a percent sign\%}%
结果如下:
some text and a percent sign\%
这不是我想要的。我想要的是:
some text and a percent sign%
是否可以将单个百分号(%)写入文件以及如何操作?
答案1
由于%
是注释字符,因此您必须将其含义从 catcode 14 更改为12
,即字母。这是在latex.ltx
的定义中完成的\@percentchar
,但是,这又引入了另一种“尴尬”的\makeatletter...\makeatother
用法,这就是为什么我展示了像 那样的方法latex.ltx
,\writepercent
但省略了\makeatletter...\makeatother
对。
\documentclass{article}
\catcode`\%=12
\def\writepercent{%}
\catcode`\%=14
%Also possible
\makeatletter
\def\writepercentother{\@percentchar}%
\makeatother
\begin{document}%
\newwrite\tmpfile%
\immediate\openout\tmpfile=output.tex%
\makeatletter
\immediate\write\tmpfile{some text and a percent sign\@percentchar}
\makeatother
\immediate\write\tmpfile{Another important text and a percent sign\writepercent}
\immediate\closeout\tmpfile%
\end{document}