8 位 TeX 引擎(pdfTeX、TeX)

8 位 TeX 引擎(pdfTeX、TeX)

我如何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)

\inputencodingfrom 包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 转换器)。从其文档

    实际名称将通过别名文件使用不区分大小写的字符串比较来解析,该比较会忽略前导零和所有非字母数字字符。例如,名称UTF8utf-8u*T@f08都是Utf 8等效的。

之前使用花括号的版本可以正常工作,因为名称不是预定义名称,而是传递给ucnv_open,从而过滤掉花括号。有趣的也\XeTeXinputencoding}ISO-88;591{可以正常工作。

Unicode 引擎 (LuaTeX、XeTeX)

我将重新编码非UTF-8文件,例如(bash / linux):

recode latin1..utf8 Umlaute.tex

答案2

我从来没有得到过“输入编码“-method 适用于我的外部文本文件。如果您查看下面的链接,您可以看到我用于添加对瑞典语和德语字符 (åäö üß) 以及从外部文本文件读取的葡萄牙语字符的支持的代码。

关联:列表和 UTF-8 存在问题。可以修复吗?

相关内容