使用 xy-pic,如何用花括号标记一个跨越箭头长度的箭头,并且可以偏移任意距离?

使用 xy-pic,如何用花括号标记一个跨越箭头长度的箭头,并且可以偏移任意距离?

我正在尝试弄清楚如何用横跨箭头长度的花括号标记箭头,并使其非常漂亮。更具体地说,我正在尝试制作

\documentclass[10pt]{article}
\usepackage{amssymb} %needed for \mathbb{Q}
\usepackage[all]{xy}
\begin{document}

\xy
\xymatrix{
 \ar@{-}[ddddd]_G & & F \ar@{-}[dd]^{p^\infty} &
  \ar@{-}[dd]^{\Gamma^{p^m}} & \ar@{-}[dddd]^\Gamma\\
  \\
  & \ar@{-}[ddd]_{G_m} & F_m \ar@{-}[dd]^{p^m} &
  \ar@{-}[dd]^{\Gamma_m} & \\
  \\
 & & F_0 \ar@{-}[d]^{p-1} & \ar@{-}[d]^\Delta & \\
 & & \mathbb{Q} &
}
\endxy

\end{document}

用花括号表示外箭头,最好间隔得更开一些。通过复制别人的图表,我成功地创建了一个与之非常接近的图表,但侧面

\documentclass[10pt]{article}
\usepackage{amssymb} %needed for \mathbb{Q}
\usepackage[all]{xy}
\begin{document}

\xy
\xymatrix "M"@C=0pt@R=10pt{
 &&&&&&&&&& &&&&&&&&&& &&&&& \\
 &&&&&&&&&& &&&&&&&&&& &&&&& \\
 F \ar@{-}[rrrrrrrrrr]^{p^\infty} &&&&&&&&&&
  F_m \ar@{-}[rrrrrrrrrr]^{p^m} &&&&&&&&&&
  F_0 \ar@{-}[rrrrr]^{p-1} &&&&& \mathbb{Q}\\
 &&&&&&&&&& &&&&&&&&&& &&&&& \\
 &&&&&&&&&& &&&&&&&&&& &&&&&
}%
 \POS
 "M1,2"."M1,20"!C*\frm{^\}},+U*++!D{\Gamma}
 ,"M2,2"."M2,10"!C*\frm{^\}},+U*++!D{\Gamma^{p^m}}
 ,"M2,12"."M2,20"!C*\frm{^\}},+U*++!D{\Gamma_m}
 ,"M2,22"."M2,25"!C*\frm{^\}},+U*++!D{\Delta}
 ,"M4,12"."M4,25"!C*\frm{_\}},+D*++!U{G_m}
 ,"M5,2"."M5,25"!C*\frm{_\}},+D*++!U{G_m}
\endxy

\end{document}

但我对整个 POS 命令一无所知,坦率地说,我觉得它相当神秘。我对 已经很满意了xy-pic,但我愿意接受其他软件包。如果有人知道一种不需要将括号附加到矩阵条目的解决方案,那就太好了,这样我就可以做一些事情,比如标记箭头

\documentclass[10pt]{article}
\usepackage{amssymb} %needed for \mathbb{Q}
\usepackage[all]{xy}
\begin{document}

\xymatrix{
 &&&& R\\
 \\
 && H \ar@{-}[rruu] && R_m \ar@{-}[uu]\\
 & \\
 F \ar@{-}[rruu] & & H_m \ar@{-}[rruu] \ar@{-}[uu] && R_0 \ar@{-}[uu]\\
 &\\
 F_m \ar@{-}[rruu] \ar@{-}[uu] & & H_0 \ar@{-}[rruu] \ar@{-}[uu]\\
 \\
 F_0 \ar@{-}[rruu] \ar@{-}[uu]\\
 \mathbb{Q} \ar@{-}[u]
}

\end{document}

无需为了标签而重新排列图表。此外,还有一个问题,即外括号未连接到箭头。也许箭头本身就是花括号,但可以偏移到侧面?

任何帮助将不胜感激。

答案1

它可以得到改进和简化,甚至可以实现自动化,但使用 scalerel 包,它的骨架就在这里。首先,我粗略地定义了一些重复使用的堆叠命令,并设置了图表中心核心的垂直规则大小。

然后我将中心线元素定义为 \a 到 \g。接下来是一系列复合定义。小写字母,以 x 结尾,表示定义将空白空间定义为与名称所暗示的相同的垂直大小。因此,\abcx 是一个空白框,其大小为 \a、\b 和 \c 堆叠而成。大写字母定义暗示带有相关文本的括号。因此,\BCDEF 是与第 1 列关联的垂直括号,跨越元素 b 到 f。

当我意识到括号作为宽度限制缩放而不是长宽限制拉伸看起来更好时,我编辑了我的原始帖子。即便如此,您可能会发现括号不可接受,因为它们都是原始 ASCII 字符的缩放/拉伸,而不是自动扩展的漂亮数学括号。

最后,我设置了方程模式,并创建了列。虽然不太美观,但它可能可以帮你完成工作。

\documentclass[10pt]{article}
\usepackage{amssymb} %needed for \mathbb{Q}
\usepackage{scalerel}
\begin{document}

\newcommand\stacktwo[2]{\begin{array}{l}#1 \\#2\end{array}}
\newcommand\stackthree[3]{\begin{array}{l}#1 \\#2 \\#3\end{array}}
\newcommand\stackfive[5]{\begin{array}{l}#1 \\#2 \\#3 \\#4 \\#5\end{array}}

\def\rb{\rule[-2em]{1em}{5em}}
\def\rs{\rule[-1em]{1em}{3em}}

\def\nulbox{$\makebox{~\rule{0pt}{1pt}}$}

\def\a{F}
\def\b{\,\stretchrel*{|}{\rb} p^\infty }
\def\c{F_m}
\def\d{\,\stretchrel*{|}{\rb} p^m}
\def\e{F_0}
\def\f{\,\stretchrel*{|}{\rs} p-1}
\def\g{\mathbb{Q}}

\def\abcx{\stretchrel*{\nulbox}{\stackthree{\a}{\b}{\c}}}
\def\efgx{\stretchrel*{\nulbox}{\stackthree{\e}{\f}{\g}}}
\def\ax{\stretchrel*{\nulbox}{\a}}
\def\cx{\stretchrel*{\nulbox}{\c}}
\def\ex{\stretchrel*{\nulbox}{\e}}
\def\gx{\stretchrel*{\nulbox}{\g}}
\def\BCD{\scalerel*[1em]{\}}{\stackthree{\b}{\c}{\d}} \Gamma}
\def\DEF{G_m \scalerel*[1em]{\{}{\stackthree{\d}{\e}{\f}}}
\def\BCDEF{G \scalerel*[1em]{\{}{\stackfive{\b}{\c}{\d}{\e}{\f}}}
\def\B{\,\scalerel*[1em]{\}}{\rb} \Gamma^{p^m}}
\def\D{\,\scalerel*[1em]{\}}{\rb} \Gamma_m}
\def\F{\,\scalerel*[1em]{\}}{\rs} \Delta}

\[
\stackthree{\ax}{\BCDEF}{\gx}
\stackthree{\abcx}{\DEF}{\gx}
\begin{array}{l}
\a \\ \b \\ \c \\ \d \\ \e \\ \f \\ \g
\end{array}
\begin{array}{l}
\ax \\ \B  \\ \cx \\ \D \\ \ex \\ \F \\ \gx
\end{array}
\stackthree{\ax}{\BCD}{\efgx}
\]

\end{document}

在此处输入图片描述

相关内容