我可以让 LuaLaTeX 使用 ANSI 编码的 \input 文件吗?

我可以让 LuaLaTeX 使用 ANSI 编码的 \input 文件吗?

我将\input自动生成的文件(由 Stata 生成的表格)包含到主文档中。我想使用 LuaLaTeX 编译该文档。不幸的是,生成的文件是 ANSI 编码的(Stata 不支持 unicode)。因此 LuaLaTeX"String contains an invalid utf-8 sequence"向我抛出了一个错误。目前,问题只有一个字符,即 ¤(根据 Windows 字符映射为 U00A4)。无论是否使用 XeLaTeX,文档都可以正常编译。

我宁愿不搜索和替换字符(例如使用 \textcurrency,尽管在数学模式下也能正常工作),因为它涉及许多经常更改的包含文件。出于同样的原因,我宁愿不手动转换包含文件的编码。我还希望有一个更强大的解决方案,即不仅适用于单个字符。

那么有没有办法让 LuaLaTeX 使用包含 ANSI 编码的文件,类似于使用 \inputencoding 与 pdflatex

或者,是否可以在编译时自动搜索和替换?

以下是 MWE:

\documentclass{article}
\usepackage{luatextra, luaotfload}
\usepackage[vargreek-shape=unicode]{unicode-math} % 
\defaultfontfeatures{Renderer=Basic,Scale=MatchLowercase, Ligatures={TeX}} 
\setmainfont{Cambria}  
\setmathfont{Cambria Math} 

\begin{document}

A currency symbol in the main document: ¤ 

 \input{input.tex}

\end{document}

input.tex 只有一行,但是是 ANSI 编码的。

A currency symbol in the included document: ¤ 

答案1

要告诉 LuaTeX 接受 UTF8 以外的其他编码,您需要一个附加包。类似于inputencLaTeX 的 为luainputencLuaTeX 提供了必要的命令。基本语法就是\usepackage[<encoding>]{luainputenc}。其中最常用的编码是 latin1 和 cp1252。稍作修改的示例编译时没有错误:

\documentclass{article}

\usepackage[latin1]{luainputenc}

\usepackage{luatextra, luaotfload}
\usepackage[vargreek-shape=unicode]{unicode-math} % 
\defaultfontfeatures{Renderer=Basic,Scale=MatchLowercase, Ligatures={TeX}} 
\setmainfont{Cambria}  
\setmathfont{Cambria Math} 

\begin{document}

A currency symbol in the main document: ¤ 

\input{input.tex}

\end{document}

或者你也可以使用以下工具图标自动转换文件。

相关内容