我正在使用 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}”替换命令也可以解决问题。