lstinputlisting 在参考中显示错误的数字

lstinputlisting 在参考中显示错误的数字

我对 LaTeX 还很陌生,所以请大家稍微耐心一点。

所以我的问题如下:

我得到了一些文本,我想引用下一行显示的一点代码。

我迄今为止尝试过的:

变体 1:

当看到结尾时~\ref{lst:product_xml},这三个属性被定义。

\lstinputlisting
    [caption={Übergeordneter Knoten Product}
      \label{lst:product_xml},
      firstline=2, lastline=2,
      language=XML]
  {code/product_xml.xml}

输出看起来不错,但有一个例外,Quellcodausschnitt 后面的数字是错误的

晚会第 2 部分

但标题说

代码 4.1:Übergeordneter Knoten 产品

变体 2

\lstinputlisting
    [caption={Übergeordneter Knoten Product}
      label={lst:product_xml},
      firstline=2, lastline=2,
      language=XML]{code/product_xml.xml}

我找到这里

结果是:

什么时候发生?

我不想用

\begin{lstlisting}
Put your code here.
\end{lstlisting}

因为我想从该文件加载更多行。所以解决方案这里对我来说不是一个选择

完整文件:

\documentclass{article}

\usepackage[ngerman]{babel}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{color}

\usepackage[savemem]{listings}
\lstloadlanguages{TeX}

\renewcommand{\lstlistingname}{Code}

\definecolor{lbcolor}{rgb}{0.85,0.85,0.85}
\lstset{language=[LaTeX]TeX,
    numbers=left,
    stepnumber=1,
    numbersep=5pt,
    numberstyle=\tiny,
    breaklines=true,
    captionpos=b,
    breakautoindent=true,
    postbreak=\space,
    tabsize=2,
    basicstyle=\ttfamily\footnotesize,
    showspaces=false,
    showstringspaces=false,
    extendedchars=true,
    backgroundcolor=\color{lbcolor}}

\definecolor{maroon}{rgb}{0.5,0,0}
\definecolor{darkgreen}{rgb}{0,0.5,0}
\lstdefinelanguage{XML}
{
  basicstyle=\ttfamily,
  morestring=[s]{"}{"},
  morecomment=[s]{?}{?},
  morecomment=[s]{!--}{--},
  commentstyle=\color{darkgreen},
  moredelim=[s][\color{black}]{>}{<},
  moredelim=[s][\color{red}]{\ }{=},
  stringstyle=\color{blue},
  identifierstyle=\color{maroon}
}

\begin{document}

%  \lstlistoflistings 

  Im Quellcodausschnitt~\ref{lst:product_xml} ist zu sehen, dass drei Attribute definiert wurden

\lstinputlisting
    [caption={Übergeordneter Knoten Product} %!!!! i did a great mistakte here i forgot to set a comma at the end of the line
      label={lst:product_xml},
      firstline=2, lastline=2,
      language=XML]{product_xml.xml}


\end{document}

有什么办法可以解决这个问题,或者我做错了什么?

答案1

这是有效的:编译两次并且引用正确显示。

使用命令label=的键\lstinputlisting来提供标签名称,而不是类似的东西\caption...\label

\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}


\usepackage{listings}


\begin{document}


Im Quellcodausschnitt~\ref{lst:product_xml} ist zu sehen, dass drei Attribute definiert wurden

\lstinputlisting[caption={Übergeordneter Knoten Product},
label={lst:product_xml},
%firstline=2, lastline=2,
language=C]
{helloworld.c}
%  {code/product_xml.xml}

\end{document}

以及helloworld.c文件:

#include<stdio.h>

int main(int argc,char **argv)
{
  printf("Hello World!\n");
  return(0);
}

在此处输入图片描述

相关内容