如何将 listings 包生成的源代码与主段落文本对齐

如何将 listings 包生成的源代码与主段落文本对齐

listings我第一次使用 latex包来格式化一些 HTML。我注意到默认情况下,html 代码被推到文档主段落文本的左侧。是否有任何简单的选项或方法可以指定listings所有源代码的左侧边距宽度应与我的一般段落文本相同?

作为参考,到目前为止我的乳胶代码如下:

\begin{lstlisting}[language=html]
<html lang=``en">
<head>...</head>
<body>
...
   <img src=``http://cnn.com/af/pic.gif"></img>
...
</body>
</html>
\end{lstlisting}

编辑:我已经将此问题隔离到仅当我添加时才会发生行号使用以下方式列出:

\lstset{
numbers=left
}

最小工作示例:

\documentclass{article}
\usepackage{lipsum,listings}
\begin{document}
\lstset{
numbers=left
}
\lipsum[1]
\begin{lstlisting}[language=html]
<html lang=``en">
<head>...</head>
<body>
...
<img src=``http://cnn.com/af/pic.gif"></img>
...
</body>
</html>
\end{lstlisting}
\end{document}

那么有没有办法行号与一般段落文本对齐?

答案1

对我来说也很好用!我猜你应该检查一下你的lstset命令,你可能需要调整边距 ( xleftmargin)。listings几乎所有东西都有一个选项:

  \lstset{
%frame=tblr,
    framesep=5pt,
basicstyle=\normalsize\ttfamily,
showstringspaces=false,
keywordstyle=\itshape\color{blue},
%identifierstyle=\ttfamily,
stringstyle=\color{Maroon},
commentstyle=\color{black},
rulecolor=\color{Gray},
xleftmargin=5pt,
xrightmargin=5pt,
aboveskip=\bigskipamount,
belowskip=\bigskipamount,
   %backgroundcolor=\color{LightGray!.50}
  }

答案2

您可以组合使用xleftmarginnumbersep选项来排列数字。例如,如果您有 2 位数字的行号,您可以执行以下操作:

\usepackage{calc}
\newlength\listingnumberwidth
\setlength\listingnumberwidth{\widthof{00} + 1em}
\lstset{
numbers=left,
xleftmargin=\listingnumberwidth,
numbersep=1em
}

当然,如果您使用该numberstyle选项,则需要考虑到这一点\widthof

相关内容