使用 inputenc 重新定义编码以输入自定义字符

使用 inputenc 重新定义编码以输入自定义字符

我想为字符重新分配不同的值,例如,当我输入“¤”时,“l”会输出到 pdf 文件中。

为了实现这一点,我使用该inputenc包并修改其中的一个*.def文件,其中用户从键盘输入的字符被映射到将在输出中打印的字符。

这是我编译的MWE pdfLaTeX

\documentclass{article}
\usepackage[latin1]{inputenc}
\begin{document}
¤¦
\end{document}

可以看到,我使用了latin1编码,我修改了对应的latin1.def文件如下:

...
...
\DeclareInputText{164}{l}
\DeclareInputText{166}{i}
...
...

这意味着 164 和 166 号槽对应于 Latin-1 表中的字符“¤”和“¦”(参见ASCII / ISO 8859-1 表规范) 分别将替换为简单的“l”和“i”。

但结果是这样的:

艾艾

为什么这些令人讨厌的“”会出现在我的文档中以及如何删除它们?

答案1

打印输出中出现的 Â 表明您的文件实际上是 UTF-8 编码的。

如果我保存此示例文件

% -*- coding: latin-1 -*-
\documentclass{article}
\usepackage[latin1]{inputenc}
\DeclareInputText{164}{l}
\DeclareInputText{166}{i}

\begin{document}
¤¦
\end{document}

(第一行是告诉 Emacs 我真的希望文件采用 Latin-1/ISO8859-1 编码,你的编辑器可能有类似的技巧)并编译它,我得到

在此处输入图片描述

相关内容