我正在使用 listings 包中的 \lstinputlisting 将 xml 文件作为列表插入到我的 latex 文件中。在 XML 文件中,引号是正常的双引号,当我查看 PDF 时,它们在开头和结尾都显示为双引号。我知道 latex 要求使用 `` 和 '' 作为引号,但由于我是从 XML 文件导入的,我该如何修复这个问题以使它们显示正常(这样我就可以得到正确的开头引号)?
答案1
在 OT1 编码中,只有一组有限的引号可用。尝试 T1 编码:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{listings}
\begin{document}
\begin{lstlisting}[language=XML,basicstyle=\fontencoding{OT1}\selectfont]
<root attr1="OT1" attr2='foobar'/>
\end{lstlisting}
\begin{lstlisting}[language=XML]
<root attr1="T1" attr2='foobar'/>
\end{lstlisting}
\end{document}
或者使用打字机字体:
\documentclass{article}
\usepackage{listings}
\begin{document}
\begin{lstlisting}[language=XML,basicstyle=\ttfamily]
<root attr1="foo" attr2='bar'/>
\end{lstlisting}
\end{document}
我更喜欢
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[variablett]{lmodern}
\usepackage{listings}
\lstset{
basicstyle=\ttfamily,
columns=flexible,
}
\begin{document}
\begin{lstlisting}[language=XML]
<root attr1="foo" attr2='bar'/>
\end{lstlisting}
\end{document}
TS1
编码(包textcomp
)中可以使用直单引号。在包中listings
,可以通过选项启用此功能upquote
(感谢 alexis 和 Paul Gaborit):
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage[variablett]{lmodern}
\usepackage{listings}
\lstset{
basicstyle=\ttfamily,
columns=flexible,
upquote,
}
\begin{document}
\begin{lstlisting}[language=XML]
<root attr1="foo" attr2='bar'/>
\end{lstlisting}
\end{document}
答案2
使用listings
包选项upquote=true
获取直立的单引号(需要包textcomp
),以及tt
字体样式或T1
编码,以使双引号显示为垂直楔形。使用默认字体和输入编码,您的双引号看起来都会像双右引号。
\documentclass{article}
\usepackage{textcomp}
\lstset{language=XML,upquote=true,basicstyle=\ttfamily}
\begin{document}
\begin{lstlisting}
<root double="attribute" single='attribute'/>
\end{lstlisting}
\end{document}
信用:我从@HeikoOberdiek 的回答中了解到T1
获取无向引号的选项,为了完整起见,我将其包括在内。它的工作原理如下:(basicstyle=\fontencoding{T1}\selectfont
作为使用 的替代方法basicstyle=\ttfamily
)。