使用UTF-8(或至少包含德语umlauts)的Latex清单

70

我试图使用listings宏包将源文件包含到我的latex文档中,但在代码注释中遇到了德语umlauts的问题。

使用:

\lstset{
extendedchars=\true,
inputencoding=utf8x
}

源文件中的umlauts(使用UTF-8编码且没有BOM)会被处理,但它们会被移动到所在单词的开头。

// die Größe muss berücksichtigt werden
在输入源文件中,变成
// die ößGre muss übercksichtigt werden

在输出文件中。

注意:由于我发现了初始设置中的错误,我对这个问题进行了大量编辑。


1
你在文档中声明了什么输入编码,以及你在编辑器中使用的编码是什么? - Gumbo
1
我在使用法语时也遇到了同样的问题。我认为你应该尝试使用非多字节编码,例如Latin-1。 - Bastien Léonard
1
使用单字节编码可以解决使用 Cyrillic 字符时出现的类似问题。 - Vanuan
一个非常完整的使用lstlistings的文学语句可以在以下链接中找到:https://tex.stackexchange.com/a/574950/6865 - Stephen
25个回答

0

0

使用texcl选项的建议包的作者。有时候它有帮助,有时候则没有。


0
@Janosch的解决方案中,用于listings.sty的挪威字母:
\lst@ProcessLetter{"C5}{\AA}
\lst@ProcessLetter{"C6}{\AE}
\lst@ProcessLetter{"D8}{\O}
\lst@ProcessLetter{"E5}{\aa}
\lst@ProcessLetter{"E6}{\ae}
\lst@ProcessLetter{"F8}{\o}

-1

要为 listings 添加版权支持,请添加以下内容:

\lstset{
    %you may add line below to existed config
    literate={©}{{\copyright}}{4}
}

-2

你可能需要将文档的输入编码设置为UTF-8。有一个comp.text.tex thread讨论如何做到这一点。以下是在GNU/Linux上的TeXLive中实现此目的的方法:

\usepackage[utf8]{inputenc}

我的主要文档是以utf8编码的。(而且它可以正常工作,我甚至可以在主要文档中写入äöü) - Janosch
1
列表(listings)在字符处理方面与主文档不同。因此,inputenc 在这里无法起作用;列表包需要显式支持 utf8 输入(因此是 listingsutf8)。 - Will Robertson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接