我 (大部分) 喜欢 listings 包,我已经开始从 verbatim 迁移到该包来查看代码列表。我更喜欢继续使用 teletype 来查看代码,因此我将默认列表配置更改为:
\lstset{
keywordstyle=\color{blue}
, basicstyle=\ttfamily
, commentstyle={}
, columns=flexible
, numbers=left
, showstringspaces=false
}
但是,有一个小麻烦/折衷,我似乎无法按照自己的意愿表达。当 columns=flexible 时,行与行之间的对齐不再很好,因此您期望和想要垂直对齐的内容不再对齐,而逐字对齐的所有内容在 latex 源中都会在输出中对齐。
另一方面,将列更改为非灵活选项可以解决对齐问题,但代价是字符之间的间距很奇怪(在我看来,也很丑陋)(比逐字间距更大)。有没有办法既能获得逐字间距,又能保持垂直对齐?
下面是一个完整的示例,展示了我在编译时出现的问题(Arch 上的 texlive-core 2010.22154-1)。我希望 f 和 f' 的“::”对齐。
\documentclass{article}
\usepackage{color}
\usepackage{listings}
\lstset{
keywordstyle=\color{blue}
, basicstyle=\ttfamily
, commentstyle={}
, columns=flexible
, numbers=left
, showstringspaces=false
}
\begin{document}
\begin{lstlisting}[language=Haskell,numbers=none]
f :: Int -> Int -> Int
f' :: Int -> Int
\end{lstlisting}
\begin{verbatim}
f :: Int -> Int -> Int
f' :: Int -> Int
\end{verbatim}
\end{document}
任何帮助将非常感激。
答案1
说
keepspaces=true,
在您的\lstset
命令中。您也可以考虑使用fullflexible
而不是flexible
for columns
。