在辅助文件中写入时更改大小写

在辅助文件中写入时更改大小写

为了改进 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

备注:如果没有所有的\expandafters,文本也会转换为小写。但由于\write被延迟到下一页发货,因此\@tmp将使用 的最后一个含义。因此您将得到三行,均包含sncf

相关内容