我正在运行这个 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}
虽然它在一个文档类中有效,但在另一个文档类中失败了。无论如何,移动label
后section
解决了问题
\section{Introduction}
\label{sec:Intro}