我正在尝试使用转义序列中的 \textcolor 为列表列表中的 HTML 代码中的某些部分着色。我在另一个代码片段中使用了这种技术,一切都运行良好。出于某种原因,编译时唯一没有出现错误的情况是当我使用德语引号时,但它们无法正确显示。代码作为简明示例基本上是这样的:
\documentclass[11pt,a4paper,xcolor=dvipsnames]{report}
\usepackage[latin9]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{listings}
\usepackage[dvipsnames]{xcolor}
\lstset{basicstyle=\footnotesize\ttfamily,frame=leftline,escapechar=@}
\begin{document}
\begin{lstlisting}[language=HTML]
...
<input type="text" @\textcolor{Green}{id="`hex"'}@ />
...
<input type="text" @\textcolor{Green}{id="`string"'}@ />
\end{lstlisting}
\end{document}
结果是这样的:
所以我需要知道为什么会发生这种情况,我该怎么办,以及我是否可以让它与英文引号一起使用?
答案1
您可以通过新命令\entextcolor
(使用\foreignlanguage
from babel
)更改当前语言:
\documentclass[11pt,a4paper,xcolor=dvipsnames]{report}
\usepackage[latin9]{inputenc}
\usepackage[english,ngerman]{babel}
\usepackage{listings}
\usepackage[dvipsnames]{xcolor}
\lstset{basicstyle=\footnotesize\ttfamily,frame=leftline,escapechar=@}
\newcommand\entextcolor[2]{\foreignlanguage{english}{\textcolor{#1}{#2}}}
\begin{document}
\begin{lstlisting}[language=HTML]
...
<input type="text" @\entextcolor{Green}{id="`hex"'}@ />
...
<input type="text" @\entextcolor{Green}{id="`string"'}@ />
\end{lstlisting}
\end{document}