我有以下文件(摘录):
\documentclass[a4paper]{article}
% Paketimporte
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{eurosym}
\usepackage{titlesec}
\usepackage[pdftex]{graphicx}
\usepackage{float}
\usepackage{url}
\usepackage{wrapfig}
\usepackage{csquotes}
\usepackage{glossaries}
\usepackage[markup=nocolor,deletedmarkup=xout]{changes}
\usepackage{listings}
\usepackage{color}
\usepackage{amssymb}
\DeclareUnicodeCharacter{00A0}{ }
\DeclareUnicodeCharacter{207C6}{\dash}
\DeclareUnicodeCharacter{2192}{\dash}
\begin{document}
% Titelblatt
\maketitle
\pagebreak
% Inhaltsverzeichnis
\tableofcontents
\pagebreak
\begin{lstlisting}
foo → bar
\end{lstlisting}
\printglossaries
\end{document}
调用时会产生以下错误pdflatex
:
Package inputenc Error: Unicode char �\lst@FillFixed@\lst@EC� (U+207C6)(inputenc) not set up for use with LaTeX. foo →
我已经在 Google 上搜索过此错误,并发现了一些类似但不相同的问题,这些问题鼓励使用\ DeclareUnicodeCharacter
或\newunicodechar
,但不起作用。有问题的文件也被UTF-8
编码:
$ file -i test.tex
test.tex.tex: text/x-tex; charset=utf-8
我怎样才能让乳胶显示→
字符?
答案1
listings
实际上并不支持 UTF-8,因此发现时发生的情况→
基本上是随机的。
如果您加载,则不需要声明字符textcomp
,因为 LaTeX 知道如何将其转换为\textrightarrow
,但您需要明确地教它listings
。
\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{textcomp}
\usepackage{listings}
\lstset{
literate={→}{\textrightarrow}1
}
\begin{document}
foo → bar
\begin{lstlisting}
foo → bar
\end{lstlisting}
\end{document}
答案2
您可以使用文学定义输出:
\documentclass[a4paper]{article}
% Paketimporte
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{listings}
\lstset{literate={→}{$\rightarrow$}1}
\DeclareUnicodeCharacter{00A0}{ }
\DeclareUnicodeCharacter{2192}{\dash}
\begin{document}
\begin{lstlisting}
foo → bar
\end{lstlisting}
\end{document}