在 LaTeX 中使用 Unicode 字符 U+2192

在 LaTeX 中使用 Unicode 字符 U+2192

我有以下文件(摘录):

\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}

在此处输入图片描述

相关内容