lstlisting 仅在顶部显示单行号

lstlisting 仅在顶部显示单行号

我正在使用 lstlisting 作为大型文档的一部分,并且希望显示行号。我正在使用以下代码:

\begin{lstlisting}[language=C++, numbers=left, frame=single, escapechar=@]
int a = 1; // first line @\label{demo:first_line}@
int b = 2; // second line @\label{demo:second_line}@
int c = 3; // third line @\label{demo:third_line}@
\end{lstlisting}
a appears in line \ref{demo:first_line}.
b appears in line \ref{demo:second_line}.
c appears in line \ref{demo:third_line}.

但是,左上角只显示一个数字(将“数字”标志更改为“右”会将其移动到右上角)。此外,框架似乎已损坏,对行号的引用全部为 0。参见图片:

在此处输入图片描述

我将相同的代码复制到一个干净的文档中,一切正常:

在此处输入图片描述

编辑: 以下代码重现了该问题:

自定义.cls:

\def\filename{custom}
\LoadClass{article}
\RequirePackage[hebrew,english]{babel}
\endinput

主要.tex:

\documentclass{custom}
\usepackage{listings}
\begin{document}

\begin{lstlisting}[language=C++, numbers=left, frame=single, escapechar=@]
int a = 1; // first line @\label{demo:first_line}@
int b = 2; // second line @\label{demo:second_line}@
int c = 3; // third line @\label{demo:third_line}@
\end{lstlisting}
a appears in line \ref{demo:first_line}.
b appears in line \ref{demo:second_line}.
c appears in line \ref{demo:third_line}.
\end{document}

答案1

cls 文件中的“\RequirePackage[hebrew,english]{babel}”命令是问题的根源。删除它可以解决问题。

更具体地说,问题出在“hebrew”上。用“\RequirePackage[english]{babel}”替换命令也可以解决问题。

相关内容