在 xymatrix 中使用 \label 和交叉引用

在 xymatrix 中使用 \label 和交叉引用

每当我尝试使用\caption\label中的交叉引用时xymatrix,它都不起作用。 MWE:

\documentclass{book}
\usepackage[a4paper,margin=.45in]{geometry}
\usepackage{xypic}

\begin{document}
$$
\xymatrix{ A \ar[r]\ar[d] & B\ar[d]\\
C\ar[r] & D
\caption{Rectangular diagram}
\label{Fig1}
}
$$
The above figure \ref{Fig1} is a commutative diagram.
\end{document}

谁能告诉我如何解决这个问题?

答案1

\caption宏仅适用于浮动环境,如或tablefigure除非您想要图形的非浮动描述,那么您可以使用\captionofcaption包或KOMA 脚本课程。

默认情况下,并不是\xymatrix水平居中,您可以使用 LaTeX 的\[ … \]宏(它会增加垂直空间,用 删除)或者(不推荐)使用宏或一对\tightdisplaymath手动居中。\centerline\hspace{\fill}

不要在文档中使用[h][h!]。它仅用于显示一页上的浮动。如果您希望在运行的文本中固定位置,请使用\captionof或(简单来说是一个编号的数学环境)。

代码

\documentclass{book}
\usepackage[a4paper,margin=.45in]{geometry}
\usepackage[all]{xy}
\makeatletter
\newcommand*{\tightdisplaymath}{\abovedisplayskip\z@\belowdisplayskip\z@}
\makeatother
\begin{document}
\hrulefill

\begin{figure}[h] 
 \[ \xymatrix{
  A \ar[r]\ar[d] & B\ar[d]\\
  C \ar[r]       & D
 } \]
\caption{Rectangular diagram}\label{Fig1a}
\end{figure}

\hrulefill

\begin{figure}[h] \tightdisplaymath
 \[ \xymatrix{
  A \ar[r]\ar[d] & B\ar[d]\\
  C \ar[r]       & D
 } \]
\caption{Rectangular diagram}\label{Fig1b}
\end{figure}

\hrulefill

\begin{figure}[h] \centerline{%
 \xymatrix{
  A \ar[r]\ar[d] & B\ar[d]\\
  C \ar[r]       & D
 }}
\caption{Rectangular diagram}\label{Fig2}
\end{figure}

\hrulefill

\begin{figure}[h!]
 \hspace{\fill}%
 \xymatrix{
  A \ar[r]\ar[d] & B\ar[d]\\
  C \ar[r]       & D
 }%
 \hspace{\fill}
 \caption{Rectangular diagram}\label{Fig3}
\end{figure}

\hrulefill

\hrulefill

Figure \ref{Fig1a} and \ref{Fig1b} are commutative diagrams.

Figure \ref{Fig2} is the same commutative diagram.

Figure \ref{Fig3} is also the same commutative diagram.
\end{document}

输出

在此处输入图片描述

答案2

标题不能这样使用。请不要$$...$$在 LaTeX 文档中使用。基本上,您是在尝试在包含的单元格内添加标题D。通常,人们不会将交换图变成图形,而是将其保留为数学构造,可以给它一个方程编号,例如使用

\documentclass{book}
\usepackage[a4paper,margin=.45in]{geometry}
\usepackage[all]{xy}
\usepackage{amsmath}
\begin{document}

\begin{gather}
\begin{aligned}
\xymatrix{ A \ar[r]\ar[d] & B\ar[d]\\
C\ar[r] & D }
\end{aligned}
\label{Fig1}
\end{gather}
The above  \eqref{Fig1} is a commutative diagram.
\end{document}

的使用aligned是为了确保方程式数字在图表上垂直居中

相关内容