我很难做出输出列表对于 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}