如何理解 LaTeX 警告“存在未定义的引用”?

如何理解 LaTeX 警告“存在未定义的引用”?

我正在运行这个 LaTeX 文件pdflatex并收到以下警告:

latex 警告:存在未定义的引用。latex
警告:标签可能已更改。重新运行以获取正确的交叉引用。

还有一些类似这样的警告:

latex 警告:第 76 页上的引用“lastpage”在输入行 3200 上未定义。

在每一页的末尾。

我的 LaTeX 文件是这样的

\documentclass[a4paper,leqno,twoside]{article}

\usepackage[latin1]{inputenc}
\usepackage[english]{babel}
\usepackage{multirow}

\renewcommand{\familydefault}{\sfdefault}

\usepackage{color}
\usepackage[colorlinks=true]{hyperref}
\usepackage{draftwatermark}
\SetWatermarkText{EXPERIMENTAL}
 \SetWatermarkScale{0.6}
 \usepackage{parskip}

 \graphicspath{{Figure/}}

  \let\oldsection\section
 \renewcommand{\section}{\clearpage\oldsection} 
 \begin{document}



  % Issued by {Name, acronym, department, phone}
 \issuedby{vrebwr}
 % Checked by
  \checkedby{-}
  % Approved by
 \approvedby{-}
  % Document title. Use \doctitleShort{} to insert a shorter title in the header.
  \doctitle{test numbers with id}
  \doctitleShort{document for tests}
  % Publish date
 \publishdate{\today}


  % Titlepage
 \frontmatter % Should be on first page
 \maketitle



 \vspace*{08eX}
  \begin{center}
   \subsection*{Abstract}
   \end{center}

  \noindent
     it contains information about tests.
   \newpage
    \mainmatter
    % Main pages. This command should be on page 2 or later.
    \phantom{phantom}
   \cleardoublepage

   \subsection*{Change Record}

  \begin{itemize}
  \item R.1: Initial version.
   \begin{itemize}
  \item  generation of documentation using the vrebwr
    \end{itemize}
   \end{itemize}

    \cleardoublepage

  \setcounter{tocdepth}{2}
    \tableofcontents 

   \cleardoublepage

   \section{ How to read the tset information}

   \begin{enumerate}
     \item information how to read
    \item information of tests
    \end{enumerate}

    \section{test numbers}

   \subsection*{1, temperature sensor. }
   \addcontentsline{toc}{subsection}{ 1, temperature sensor.}
   \subsubsection*{data}
   some data regarding test where we performed
   \subsubsection*{values}
   temperature sensor value here three or more.
    \subsubsection*{reason}   
    why we get like this.
     \newpage

    \subsection*{2, humidity sensor. }
    \addcontentsline{toc}{subsection}{ 2, humidity sensor.}
   \subsubsection*{data}
   some data regarding test where we performed
   \subsubsection*{values}
   humidity sensor value here three or more.
    \subsubsection*{reason}   
     why we get like this.

  \subsection*{3, pressure sensor. }
   \addcontentsline{toc}{subsection}{ 3, pressure sensor.}
   \subsubsection*{data}
   some data regarding test where we performed
   \subsubsection*{values}
   pressure sensor value here three or more.
   \subsubsection*{reason}   
  why we get like this.
   \newpage
  \end{document}

在上面的 LaTeX 文件中,我有大约 100 个测试。我使用符号*来消除小节中的编号,因为我使用的是带编号的测试名称,所以不需要添加编号。它在 PDF 中看起来很糟糕,所以我尝试使用以下命令在目录中添加该测试名称和编号:

\addcontentsline{toc}{subsection}{1,temperature sensor.}

当我使用此命令时,我得到了如上所述的错误。我搜索了一下,找到了导致此错误发生的一些原因,因为\label{}\ref{}不是这样使用的。但我不知道如何在我的文件中使用它。有人能帮我吗?

答案1

获得警告关于未定义的引用第一的LaTeX 运行无需担心。只需重新运行 LaTeX 一两次,所有交叉引用都应得到解决(包括 的交叉引用lastpage)。

另一方面,如果您的标签和/或交叉引用命令中有拼写错误,则在重新编译代码一两次后,警告不会消失。在这种情况下,它们变得有用,因为它们会告诉您有些地方不对劲,需要纠正。

答案2

标签的放置也可能是一个问题。例如,在我的例子中,我有以下结构,但我无法正确引用fig:2F43它:

\begin{figure*}
\label{fig:2F43} %This is bad, labels should always appear after captions.
\centering
\includegraphics[clip=true,trim=0cm 0cm 0cm 0cm, width=12cm]{2F43}
\caption{Illustration of the $F_1$ part of the ATP Synthase complex
  (PDB ID 1E79; \citealt{Gibbons2000,Bernstein1978,Gezelter}).
  TEXT TEXT  TEXT TEXT  TEXT TEXT  TEXT TEXT  TEXT TEXT
}
%\label{fig:2F43} <-- Should actually be here
\end{figure*}

之所以如此,是因为\label需要一个参数,而该参数通常由其他命令生成(例如\caption\section)。更多讨论请参见为什么环境的标签必须出现在标题之后?

答案3

我会尽全力定义您自己的命令来排版每个测试。源代码中的文档更好,为以后的更改提供了灵活性(重新定义所涉及的命令以更改格式等)。

答案4

我遇到了问题,因为label在里面section

\section{\label{sec:Intro}Introduction}

虽然它在一个文档类中有效,但在另一个文档类中失败了。无论如何,移动labelsection解决了问题

\section{Introduction}
\label{sec:Intro}

相关内容