在清单中使用 minted 会导致问题

在清单中使用 minted 会导致问题

我对 LateX 还很陌生,所以请多多包涵 ;-)。我使用 minted 来展示我编写的一些代码。我希望代码有标题和标签,这样我就可以从文本中引用它,并让它出现在文档底部的“列表列表”中。这就是我将 minted 放在这个列表内容中的原因。

这是我对 minted 的定义 - 所以我不需要多次指定所有内容:

\usepackage[chapter]{minted}
\newminted{glsl}{
   mathescape,
   linenos,
   numbersep=5pt,
   gobble=2,
   frame=lines,
   framesep=2mm}

这是我的文本里面的代码。

\begin{listing}[H]
 \caption{Berechnung der Runlength für einen bestimmten Pixel}
 \begin{glslcode}
    void getRlHor() {
        for(int j=1; j < maxSize; j++) {
            int xRunlength = px + j;
            if(xRunlength > imgWidth)
                break;
            nextGreyV = getGreyValue(xRunlength, py);
            if(currentGreyV == nextGreyV) {
                rlHor++;
            }else{
                break;
            }
        }
    }
 \end{glslcode}
 \label{lis:getRlHor}
\end{listing}

我使用 \begin{listing} 是因为我在 minted 的多个示例中都看到过它。但这给我带来了麻烦。

这是我收到的错误报告:总是弹出这 8 行。

Something's wrong--perhaps a missing \item. \addvspace {10\p@ }
Something's wrong--perhaps a missing \item. \addvspace {10\p@ }
Something's wrong--perhaps a missing \item. \addvspace {10\p@ }
Something's wrong--perhaps a missing \item. \addvspace {10\p@ }
Something's wrong--perhaps a missing \item. \addvspace {10\p@ }
Something's wrong--perhaps a missing \item. \addvspace {10\p@ }
Something's wrong--perhaps a missing \item. \addvspace {10\p@ }
Something's wrong--perhaps a missing \item. \addvspace {10\p@ }

似乎当我删除 main.lol 文件时。我可以编译一次而不会出现错误。如果我再写一个句子然后再次编译,我就会得到上面提到的这些错误。但这是一个有缺陷的解决方法。

非常感谢您的帮助!!

编辑:我因为没有意识到这一点而感到有点沮丧。当我打开 main.lol 文件时,它显示的内容如下

\addvspace {10\p@ }
\addvspace {10\p@ }
\addvspace {10\p@ }
\addvspace {10\p@ }
\addvspace {10\p@ }
\addvspace {10\p@ }
\contentsline {listing}{\numberline {3.1}{\ignorespaces Spezialf\"alle     abfangen und Randbedingungen setzen}}{8}{listing.3.1}% 
\contentsline {listing}{\numberline {3.2}{\ignorespaces Berechnung der              Runlength f\"ur einen bestimmten Pixel}}{8}{listing.3.2}% 
\addvspace {10\p@ }
\addvspace {10\p@ }
\addvspace {10\p@ }
\addvspace {10\p@ }
\addvspace {10\p@ }
\addvspace {10\p@ }
\addvspace {10\p@ }
\addvspace {10\p@ }

在我编译后,其中底部的 8 个 (\addvspace {10\p@ }) 显示为红色。我认为这是来自我输入的代码,因为错误是在我输入代码后开始出现的。我真的不能发布整个文档,因为我必须在这里发布 8 个完整的文件。

答案1

该文档运行时没有错误,因此您显示的错误一定是由您未显示的代码生成的。请编辑问题以获得如下所示的完整文档,该文档会生成所示的错误。

\documentclass{report}


\usepackage{float}
\usepackage[chapter]{minted}
\newminted{glsl}{
   mathescape,
   linenos,
   numbersep=5pt,
   gobble=2,
   frame=lines,
   framesep=2mm}

\begin{document}

\listoflistings

\begin{listing}[H]
 \caption{Berechnung der Runlength für einen bestimmten Pixel}
 \begin{glslcode}
    void getRlHor() {
        for(int j=1; j < maxSize; j++) {
            int xRunlength = px + j;
            if(xRunlength > imgWidth)
                break;
            nextGreyV = getGreyValue(xRunlength, py);
            if(currentGreyV == nextGreyV) {
                rlHor++;
            }else{
                break;
            }
        }
    }
 \end{glslcode}
 \label{lis:getRlHor}
\end{listing}
\end{document}

在此处输入图片描述


编辑后,本文档出现第 15 行所示的错误

\documentclass{article}

\begin{document}

\makeatletter

\addvspace {10\p@ }
\addvspace {10\p@ }
\addvspace {10\p@ }
\addvspace {10\p@ }
\addvspace {10\p@ }
\addvspace {10\p@ }
\contentsline {listing}{\numberline {3.1}{\ignorespaces Spezialf\"alle     abfangen und Randbedingungen setzen}}{8}{listing.3.1}% 
\contentsline {listing}{\numberline {3.2}{\ignorespaces Berechnung der              Runlength f\"ur einen bestimmten Pixel}}{8}{listing.3.2}% 
\addvspace {10\p@ }
\addvspace {10\p@ }
\addvspace {10\p@ }
\addvspace {10\p@ }
\addvspace {10\p@ }
\addvspace {10\p@ }
\addvspace {10\p@ }
\addvspace {10\p@ }
\end{document}

可以通过添加空白行来修复,如下所示:

\documentclass{article}

\begin{document}

\makeatletter

\addvspace {10\p@ }
\addvspace {10\p@ }
\addvspace {10\p@ }
\addvspace {10\p@ }
\addvspace {10\p@ }
\addvspace {10\p@ }
\contentsline {listing}{\numberline {3.1}{\ignorespaces Spezialf\"alle     abfangen und Randbedingungen setzen}}{8}{listing.3.1}% 
\contentsline {listing}{\numberline {3.2}{\ignorespaces Berechnung der              Runlength f\"ur einen bestimmten Pixel}}{8}{listing.3.2}%

\addvspace {10\p@ }
\addvspace {10\p@ }
\addvspace {10\p@ }
\addvspace {10\p@ }
\addvspace {10\p@ }
\addvspace {10\p@ }
\addvspace {10\p@ }
\addvspace {10\p@ }
\end{document}

因此,错误出在你未显示的代码中

 \addvspace {10\p@ }

lol文件中。要么根本不应该写入(这是默认行为),要么应该写入一个空白,例如 或 ,\par以确保在添加垂直空间之前处于垂直模式。

相关内容