xy-pic 中的 2 个单元格令人烦恼的问题

xy-pic 中的 2 个单元格令人烦恼的问题

我的代码的以下部分无法编译

\usepackage[all,2cell]{xy}
\begin{document}
\UseTwocells
\xymatrix
{     B &        {}   & {} &    C\llltwocell}
\end{document}

有趣的是:

\usepackage[all,2cell]{xy}
\begin{document}
\UseTwocells
\xymatrix
{     B &        {}   & {} &    C\lltwocell}
\end{document}

编译得很好。如您所见,差异在于“twocell”命令前面的 l 字母的数量。您能告诉我如何修复它吗?

答案1

您的问题本来可以更清楚一些,但通过比较\ltwocell\lltwocell我假设您想要:

在此处输入图片描述

\documentclass{article}
\usepackage[all,2cell]{xy}
\begin{document}
\UseTwocells
\typeout{\meaning\ltwocell}
\typeout{\meaning\lltwocell}
\typeout{\meaning\llltwocell}

\makeatletter
\def\llltwocell{\supermorphism {\xy@ {start of 2-cell}{\begingroup }\twocell@ }[0,-3]{}}
\makeatother
\xymatrix
{     B &        {}   & {} &    C\llltwocell}
\end{document}

三种输出结果:

macro:->\supermorphism {\xy@ {start of 2-cell}{\begingroup }\twocell@ }[0,-1]{}

macro:->\supermorphism {\xy@ {start of 2-cell}{\begingroup }\twocell@ }[0,-2]{}

undefined

答案2

解决方案是tikz-cd。您只需column sep根据需要调整 即可。如果您愿意,您可以像我一样指定弯曲半径,以使两个弧具有相同的高度。

% arara: pdflatex

\documentclass{article}
\usepackage{tikz-cd}

\begin{document}
    \[
    \begin{tikzcd}
       B & C \ar[bend right, ""name=U]{l} \ar[bend left, ""{name=L, above}]{l}
       \ar[Rightarrow, from=L, to=U]
    \end{tikzcd}\vee
    \begin{tikzcd}[column sep=20ex]
    B & C \ar[bend right=14, ""name=U]{l} \ar[bend left=14, ""{name=L, above}]{l}
    \ar[Rightarrow, from=L, to=U]
    \end{tikzcd}
    \]  
\end{document}

在此处输入图片描述

答案3

这是一个老问题,但我有一个答案,它保留在 xypic 包中,不需要定义任何新命令。

我不知道为什么\llltwocell不允许。你必须使用命令\xtwocell

虽然我不知道为什么语法是这样的,因为我很久以前就发现了它,并且可能是通过反复试验,你可以写:

\documentclass{article}
\usepackage[all,2cell]{xy}
\UseTwocells
\begin{document}
\[
\xymatrix{
B&&&C\xtwocell[lll]{}{\alpha}
}
\]
\end{document}

因此,如果您只想要单元格而不是箭头,您可以写入\xtwocell[lll]{}<>{\alpha},或者\xtwocell[lll]{}<\omit>{\alpha}这些对我来说同样有效,没有任何问题。

相关内容