为了改进 reledmac,我想在一个辅助文件中写入,但在此文件中写入时更改大小写。
我努力了
\documentclass{article}
\begin{document}
s
\newwrite\sncf
\openout\sncf=sncf.tex
\makeatletter
\expandafter\write\expandafter\sncf\expandafter{\lowercase{TOTO}}
\write\sncf{\lowercase{TOTO}}
\protected@write{\sncf}{}{\lowercase{SNCF}}
\closeout\sncf
\end{document}
但是,sncf.tex
我得到了
\lowercase {TOTO}
\lowercase {TOTO}
\lowercase {SNCF}
答案1
在 David Carlisles 的帮助下回答这个问题。
将参数 #2更改\lowercase
为小写字母,之前\@tmp
已定义。
\documentclass{article}
\makeatletter
% #1: stream
% #2: text
\newcommand{\WriteAsLowerCase}[2]{%
\lowercase{\def\@tmp{#2}}%
\expandafter\write\expandafter#1\expandafter{\@tmp}%
}
\makeatother
\begin{document}
s
\newwrite\sncf
\openout\sncf=sncf.tex
\WriteAsLowerCase{\sncf}{TOTO}
\WriteAsLowerCase{\sncf}{TATA}
\WriteAsLowerCase{\sncf}{SNCF}
\closeout\sncf
\end{document}
看起来sncf.tex
像这样:
toto
tata
sncf
备注:如果没有所有的\expandafter
s,文本也会转换为小写。但由于\write
被延迟到下一页发货,因此\@tmp
将使用 的最后一个含义。因此您将得到三行,均包含sncf
。