我如何include
使用不同的输入编码来处理“~.tex”文件?我在主文件中使用 UTF-8 编码,但必须包含一个使用 ISO-8859-1 编码的文件(RStudio 的接收器输出,另请参阅相关问题:https://stackoverflow.com/questions/38955337/use-sink-with-utf-8-encoding)
\documentclass[12pt]{article}
\usepackage{lmodern}
\usepackage[ngerman]{babel}
\begin{document}
\include{Umlaute} % ISO-8859-1 encoding
\end{document}
(由 luatex 处理)
答案1
8 位 TeX 引擎(pdfTeX、TeX)
\inputencoding
from 包inputenc
也可以在文档内部使用:
\documentclass[12pt]{article}
\usepackage{lmodern}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\begin{document}
\inputencoding{latin1}
\include{Umlaute} % ISO-8859-1 encoding
\inputencoding{utf8} % back to UTF-8
\end{document}
特克斯
\XeTeXinputencoding
可以在正确的文件中指定输入编码。因此,Umlaute.tex
以以下内容开始:
% Umlaute.tex
\XeTeXinputencoding ISO-8859-1
的语法\XeTeXinputencoding
相当晦涩(缺少文档)。从源代码来看:
- 该参数的扫描方式与文件名类似。
- 它可以被单引号或双引号括起来。
auto
然后以不区分大小写的方式对照字符串,utf8
,utf16
,utf16be
,utf16le
,来检查名称(不带引号)bytes
。(来源:XeTeX_ext.c
,方法getencodingmodeandinfo
)。如果名称不是这样的预定义名称,则将名称传递给ucnv_open
(ICU 转换器)。从其文档:实际名称将通过别名文件使用不区分大小写的字符串比较来解析,该比较会忽略前导零和所有非字母数字字符。例如,名称
UTF8
、utf-8
和u*T@f08
都是Utf 8
等效的。
之前使用花括号的版本可以正常工作,因为名称不是预定义名称,而是传递给ucnv_open
,从而过滤掉花括号。有趣的也\XeTeXinputencoding}ISO-88;591{
可以正常工作。
Unicode 引擎 (LuaTeX、XeTeX)
我将重新编码非UTF-8文件,例如(bash / linux):
recode latin1..utf8 Umlaute.tex
答案2
我从来没有得到过“输入编码“-method 适用于我的外部文本文件。如果您查看下面的链接,您可以看到我用于添加对瑞典语和德语字符 (åäö üß) 以及从外部文本文件读取的葡萄牙语字符的支持的代码。