“\caption 超出浮动范围”错误

“\caption 超出浮动范围”错误

我正在尝试使用该包在交换图中添加标题xypic。但是它不起作用。我编写了以下代码:

\documentclass[a4paper,12pt]{article}
\usepackage{xypic}
\begin{document}

\xymatrix{ A \ar[r] \ar[d]& B\ar[d] \\
C \ar[r]& D
}

\caption{commutative diagram}
\label{fig1}

From \ref{fig1} we...

\end{document}

有没有办法在图表中创建标题和交叉引用?

答案1

问题是你不能简单地\caption在文档中随意添加一个。仅举一个问题,Latex 无法知道它应该是什么的标题。你至少有两个解决方案可以解决这个问题。

从代码来看,最自然的方式是使用figure环境。它是通常用于插图的环境,带有标题和标签。

您的 MWE 将会变成:

\documentclass[a4paper,12pt]{article}
\usepackage{xypic}
\begin{document}

\begin{figure}
\xymatrix{ A \ar[r] \ar[d]& B\ar[d] \\
C \ar[r]& D
}

\caption{commutative diagram}
\label{fig1}
\end{figure}

From \ref{fig1} we...

\end{document}

请注意,此解决方案有一个大的问题。figure环境是浮动环境,这意味着您永远无法将图片准确定位在您想要的位置。

我想,人们会期望交换图的排版位置与代码中出现的位置完全一致。但人们也不会期望交换图有标题。因此,如果浮动内容无关紧要(即,如果交换图是插图而不是文本的一部分),则可以跳过下面的第二个解决方案。

否则,它就在这里。您可以跳过环境figure,但您必须告诉 latex 标题的用途。一种选择是使用包\captionof中的环境caption(这个包的作用远不止定义这个命令,但这就是我们在这里所需要的)。

因此,你的例子就变成:

\documentclass[a4paper,12pt]{article}
\usepackage{xypic}
\usepackage{caption}

\begin{document}

\xymatrix{ A \ar[r] \ar[d]& B\ar[d] \\
C \ar[r]& D
}

\captionof{figure}{commutative diagram}
\label{fig1}

From \ref{fig1} we...

\end{document}

您可以在此处找到更多详细信息TeX FAQ 条目

相关内容