LuaTeX 必须\readline
使用 latin-1 编码吗?
在下面的例子中,我首先将其存储é
在一个文件中(嗯,和^^J
),效果很好。然后我将其读回,使用\readline
和获得两个字符é
(和^^M
)。然后将其写回到文件中会产生这两个字符(或者更确切地说,是它们的 utf-8 编码中的字节)。我希望能够进行往返“读取 utf-8 文件并将其写回”,而无需进行修改(除了可能进行一些行末空格修剪)。
% Write some Unicode char to a file tmp.aux
\immediate\openout5=tmp.aux
\immediate\write5{é}
\immediate\closeout5
%
% Read it back in, _using \readline_
\openin6=tmp.aux
\readline6 to \foo
\closein6
%
\message{\foo} % => Ā© and a carriage return
%
% Write again: the file is different from tmp.aux.
\immediate\openout5=out.aux
\immediate\write5{\foo}
\immediate\closeout5
%
\csname bye\endcsname
\csname @@end\endcsname
使用\read
而不是\readline
避免了编码问题但标记了行,这是我不想做的。
答案1
正如评论中所述,这个问题似乎可以通过使用最新版本的 LuaTeX 来解决,它似乎以相同的方式处理\read
和的编码\readline
。