我遇到了一些问题,listings
包括German
Umlaute。以下示例代码生成了一个完全混乱的 PDF。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[]{listings}
\begin{document}
\begin{lstlisting}[language={[LaTeX]TeX},inputencoding={utf8},extendedchars=false]
Staatsangehörigkeit
\end{lstlisting}
\end{document}
有人知道如何解决这个问题吗?
答案1
普通的 listings 包不提供 unicode 支持。我使用以下代码来解决这个问题
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[]{listings}
\lstset{literate=%
{Ö}{{\"O}}1
{Ä}{{\"A}}1
{Ü}{{\"U}}1
{ß}{{\ss}}1
{ü}{{\"u}}1
{ä}{{\"a}}1
{ö}{{\"o}}1
{~}{{\textasciitilde}}1
}
\begin{document}
\begin{lstlisting}[language={[LaTeX]TeX}]
Staatsangehörigkeit
\end{lstlisting}
\end{document}
我也试过listingsutf8和列表2这是测试版,但对我来说,文学解决方案非常完美;)
编辑:抱歉,marco 之前有同样的解决方案......
答案2
我在我的代码中使用以下方法:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[]{listings}
\lstset{literate={ö}{{\"o}}1}
\begin{document}
\begin{lstlisting}[language={[LaTeX]TeX},inputencoding={utf8},extendedchars=false]
Staatsangehörigkeit
\end{lstlisting}
\end{document}
Ulrike Fischer 在德国社区mrunix:
由于列表逐字逐句地描述,因此如果发生这种情况,
\section
并且\bfseries
也\"a
无法解决,则只需简单打印即可。
英语尝试:因为listings
是一个逐字环境,所以像\section
、\bfseries
和这样的命令\"a
不会被执行,而只是打印出来。
答案3
marco 提供的另一种解决方案是使用以下命令减少输入量escapeinside
:
\documentclass{article}
\usepackage[ngerman,english]{babel}
\usepackage[utf8]{inputenc}
\usepackage[]{listings}
\begin{document}
\begin{lstlisting}[language={[LaTeX]TeX},
inputencoding={utf8}, extendedchars=false,
escapeinside=``]
Staatsangeh`ö`rigkeit
\end{lstlisting}
\end{document}
一般来说utf8
,和列表播放效果不佳,特别是当您导入由不同程序生成的文件时。backticks
,只需启用它们之间包含的任何内容即可转义为 LaTeX。