
Я пишу макрос для записи некоторых команд в текстовый файл. Этот текстовый файл должен быть прочитан позже для выполнения некоторых макросов.
Макрос:
\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
это делает like, с \writepercent
but опуская \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}