在 XYPic、XYMatrix 中设置括号

在 XYPic、XYMatrix 中设置括号

我想在 xypic 环境中向 xymatrix 添加三个括号。以下是我目前的做法。

\documentclass[11pt]{article} % use larger type; default would be 10pt
\usepackage[all]{xy}
\begin{document}

\xy
\xymatrix@C=10pt@R=20pt{
&\\
 & A_1\POS*\frm{^\}},+U*++!D\txt{A to B} & B_2 & C_3 \POS*\frm{^\}},+U*++!D\txt{C to D} & D_4\\
 & E_5 & F_6 \POS*\frm{_\}},+U*++!D\txt{F to G} & G_7 & H_8
}
\endxy

\end{document}

电流输出

现在有两个问题:

  1. 我希望括号从 A 到 B、从 C 到 D,底部的括号从 F 到 G。目前,它们只包含一个元素。如何使用 xymatrix [rr] 语法来实现这一点?

  2. 我想从下方添加底部支架的标签。目前,它仍显示在顶部。

我感谢对这个问题的任何评论!

答案1

如果可以使用其他包,我建议您使用PGF/TikZ,或许结合使用tikz-cd(基于并专门用于交换图);这里有一个使用和库中的装饰的TikZ小例子:matrix of math nodesbracedecorations.pathreplacing

\documentclass[11pt]{article}
\usepackage{tikz-cd}
\usetikzlibrary{decorations.pathreplacing}

\begin{document}

\begin{tikzpicture}[commutative diagrams/every diagram]
\matrix[matrix of math nodes, name=m,inner xsep=0pt] 
{
A_1 & B_2 & C_3 & D_4 \\
E_5 & F_6 & G_7 & H_8 \\
};
\draw[decorate,decoration={brace}]
  (m-1-1.north west) -- (m-1-2.north east) node[midway,auto] {$A$ to $B$};
\draw[decorate,decoration={brace}]
  (m-1-3.north west) -- (m-1-4.north east) node[midway,auto] {$C$ to $D$};
\draw[decorate,decoration={brace,mirror}]
  (m-2-2.south west) -- (m-2-3.south east) node[midway,auto,swap] {$F$ to $G$};
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案2

罗斯·摩尔在 \xypic 邮件列表中,他热心地回复了我的问题。以下是他的解决方案:

您可以随后使用矩阵单元的隐式名称添加这些装饰。例如

\xy
\xymatrix "M"@C=10pt@R=20pt{
&\\
 & A_1 & B_2 & C_3 & D_4\\
 & E_5 & F_6 & G_7 & H_8
}%
 \POS"M2,2"."M2,3"!C*\frm{^\}},+U*++!D\txt{A to B} 
 ,"M2,4"."M2,5"!C*\frm{^\}},+U*++!D\txt{C to D} 
 ,"M3,3"."M3,4"!C*\frm{_\}},+D*++!U\txt{F to G} 
\endxy

上述代码的输出

这样,您可能不需要将行间距设置得像您设置的那么大(@R=20pt)。

在上面的代码中,我为矩阵添加了一个名称“M”。这里不需要这样做,但如果您想要在 2 个或更多矩阵的单元之间绘制连接,则需要这样做,因此这是一种有用的技巧。

相关内容