XML 列表显示不正确的引号

XML 列表显示不正确的引号

我正在使用 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}

引文的 OT1 与 T1 编码比较

或者使用打字机字体:

\documentclass{article}
\usepackage{listings}
\begin{document}

\begin{lstlisting}[language=XML,basicstyle=\ttfamily]
<root attr1="foo" attr2='bar'/>
\end{lstlisting}

\end{document}

\ttfamily

我更喜欢

\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)。

相关内容