lstlisting 环境中的额外缩进来自哪里?

lstlisting 环境中的额外缩进来自哪里?

我想记录 OpenCV 中的一个函数。我使用了包lstlisting中的环境listings

\documentclass[12pt]{article}
\usepackage{listings}

\begin{document}

\begin{lstlisting}
double cv::calibrateCamera 
(   
    InputArrayOfArrays  objectPoints,
    InputArrayOfArrays  imagePoints,
    Size                imageSize,
    InputOutputArray    cameraMatrix,
    InputOutputArray    distCoeffs,
    OutputArrayOfArrays rvecs,
    OutputArrayOfArrays tvecs,
    int                 flags,
    TermCriteria        criteria
)   
\end{lstlisting}

\end{document}

上述代码使用制表符格式化,如下面的屏幕截图所示,它们以灰色箭头显示:

在此处输入图片描述

可以看出,参数名称(即第二个“列”:objectPoints,,imagePoints等等)都排列整齐。

然而,结果却引入了额外的空白:

结果

我该如何修复这个问题以便代码能够逐字呈现?

答案1

正如发布的代码产生

在此处输入图片描述

我猜你的原始来源有制表符而不是空格(这个网站用空格代替制表符)

答案2

嗯,PEBCAC。

如果要逐字呈现文本,则必须确保标签被平等呈现。

事实证明,listings有几个设置可以使用以下命令进行设置:

\lstset{
    tabsize=4
}

默认值为tabsize8在我的文本编辑器,大小为 4。使用上述 4 设置,代码渲染效果很好。

相关内容