同时使用 utf8 和 latin1 输入

同时使用 utf8 和 latin1 输入

问题

我正在编写文档,utf8但必须包含一些在其中编码的文件,而这些文件ISO-8859导致我的构建崩溃。事实上,我使用的[utf8]{inputenc}对我的所有文件都很好用,但无法识别那个latin1文件中的字符。

\inputencoding{latin1}我尝试在和之间来回切换\inputencoding{utf8},但是在随后包含带有特殊字符的文件时出现一些错误utf8(虽然如果文件不包含这样的字符它可以工作但无论是否将编码切换回都可以utf8)。

设置

  • utf8-basic.texutf8没有特殊字符的文本文件(\lipsum[1]);
  • utf8-special.texutf8带有特殊字符的文本文件(“é è à î ô â ê ï ç ù”);
  • latin1.texISO-8859带有特殊字符(“é è à î ô â ê ï ç ù”)。

平均能量损失

\documentclass{article}
\usepackage[french]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{mwe}
\begin{document}
\input{utf8-special}
\input{utf8-basic}
% \inputencoding{latin1}
\input{latin1}
% \inputencoding{utf8}
% \input{utf8-basic}
% \input{utf8-special}
\end{document}

答案1

问题的根源是 frenchb.ldf 的 catcode 更改:它使冒号处于活动状态。 \inputencoding{utf8} 读取 utf8.def,其中包含依赖于冒号具有 catcode“other”的定义。您可以使用 \shorthandoff 来避免此问题:

\documentclass{article}
\usepackage[french]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{mwe}
\begin{document}
\input{utf8-special}

\shorthandoff{:}
 \inputencoding{utf8}
\shorthandon{:} 

\input{utf8-special}

\end{document}

相关内容