使用 C++ 进行 lstlisting:范围解析运算符周围的空格

使用 C++ 进行 lstlisting:范围解析运算符周围的空格

我很难做出输出列表对于 c++ 源代码看起来不错。目前,我被一个问题困扰着,即减少范围解析运算符周围的空间量::。请参见以下示例:

\documentclass{article}
\usepackage{listings}

\lstset{ %
language=C++,
basicstyle=\footnotesize,
captionpos=b,
}

\begin{document}

\begin{lstlisting}
  hello::world
\end{lstlisting}

The amount of space \lstinline{is::too} damn high.

\end{document}

其输出如下图所示,我在其中标记了令我不满的空间范围解析运算符周围的空格

你们知道如何配置此行为吗?我在 lstlistings 文档中找不到任何内容。

答案1

添加columns=fullflexible,消除间距:

在此处输入图片描述

\documentclass{article}
\usepackage{listings}

\lstset{%
    language=C++,
    basicstyle=\footnotesize,
    captionpos=b,
    otherkeywords={::},
%columns=fullflexible
}

\begin{document}

\begin{lstlisting}
  hello::world 
\end{lstlisting}
\begin{lstlisting}[columns=fullflexible]
  hello::world    // columns=fullflexible
\end{lstlisting}

Without \verb|columns=fullflexible| \lstinline{is::too} 

With \verb|columns=fullflexible| \lstinline[columns=fullflexible]{is::too} 
\end{document}

答案2

使用literate={<search>}{<replace>}<size>你已经替换<search><replace>宽度<size>

在此处输入图片描述

\documentclass{article}
\usepackage{listings}% http://ctan.org/pkg/listings
\lstset{
  language=C++,
  basicstyle=\footnotesize,
  captionpos=b
}
\begin{document}
\begin{lstlisting}
  hello::world
\end{lstlisting}

\begin{lstlisting}[literate={::}{::}1]
  hello::world
\end{lstlisting}
\end{document}

文学编程将在以下章节中进行讨论5.4 文学编程(第 48 页)listings文档

答案3

我不太同意其他答案,它们有点解决方法而不是解决方案。您的编辑器/IDE 显示的方式是否::不符合您的喜好?要获得相同的外观,您只需使用等宽字体 ( \ttfamily),该字体应始终用于显示代码。

\documentclass{article}

\usepackage{listings}

\lstset{
  language=C++,
  basicstyle=\footnotesize\ttfamily
}

\begin{document}

\begin{lstlisting}
#include <iostream>

int main()
{
  std::cout << "Hello World" << std::endl;
}
\end{lstlisting}

\end{document}

在此处输入图片描述

相关内容