lstlisting、tt 字体和对齐。

lstlisting、tt 字体和对齐。

我 (大部分) 喜欢 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而不是flexiblefor columns

相关内容