编号环境中的交叉引用

编号环境中的交叉引用

不久前我选了一个模板来写考试。每个问题都写在\begin{problem}和之间\end{problem}。在序言中我有

\documentclass[12pt]{article}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{multirow}
\usepackage{marvosym}
\usepackage{enumerate}
\usepackage{subfigure}
\usepackage{placeins}
%\pagestyle{empty} %<== DELETE IF YOUR TEST HAS MORE THAN ONE PAGE
%    (this page style suppresses page numbers.)


%Adjust the margins:
\addtolength{\textwidth}{1.75in}
\addtolength{\textheight}{1.75in}
\addtolength{\topmargin}{-0.95in}
\addtolength{\hoffset}{-.95in}


%puts in a horizontal  rule the width of the text with space
%before and after.
\newcommand{\sep}{\ifhmode\par\fi\vskip6pt\hrule\vskip6pt}

%A new environment for a test problem.
\newcounter{problem}
\newenvironment{problem}
{
%\stepcounter{problem}%
\refstepcounter{problem}
\filbreak%
\sep
\noindent\arabic{problem}. 
}
{
\filbreak
}

\begin{document}

我将其替换\stepcounter{problem}\refstepcounter{problem}。当我尝试交叉引用时,我执行以下操作:

\begin{document}
\begin{problem}
\label{labelname}
Answer this question
\end{problem}
\begin{problem}
Refer to problem~\ref{labelname}. Now answer this question.
\end{problem}
\end{document}

但是,当我编译该.tex文件时,PDF 文件显示“参考问题??。现在回答这个问题。”

我该如何解决这个问题?非常感谢您的帮助。

答案1

第一次运行后,我得到了您描述的行为:

在此处输入图片描述

但是当再次运行时(不删除.aux第一次运行中生成的文件),您会获得所需的结果:

在此处输入图片描述

由于可以在放置图形之前对其进行引用,因此需要运行两次。第一次确定图形编号,放置临时文件??作为引用的占位符,第二次解析引用。

相关内容