
我正在編寫一個巨集來將一些命令寫入文字檔案。該文字檔案應該稍後讀取以執行一些巨集。
宏:
\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}