tikzcd 矩阵中不同大小的循环

tikzcd 矩阵中不同大小的循环

我有一个带箭头和循环的数字矩阵。我遇到的问题是,有些循环的大小取决于循环的方向。循环定义为入点和出点之间相差 60 度(循环的中点对应 0、90、180、270)。

在所附图片中,从中间一列可以看出环路大小的差异,矩阵元素上方的环路大于矩阵元素下方的环路。此外,角元素的环路小于边元素的环路。

有人能指出我做错了什么,或者如何使循环看起来大小相同但“旋转”吗? MWE 及其输出如下所示。

\documentclass[tikz]{standalone}
\usepackage{tikz-cd}
\usetikzlibrary{fit,backgrounds}

\begin{document}

\newcommand{\aU}{\arrow[bend left]{u}{}}
\newcommand{\aD}{\arrow[bend left]{d}{}}
\newcommand{\aL}{\arrow{l}{}}
\newcommand{\aR}{\arrow{r}{}}
\newcommand{\aS}[2]{\arrow[loop, out=#1, in=#2,looseness=4]{}{}}
\newcommand{\aSc}[1]{\arrow[loop, out=#1+30, in=#1-30,looseness=4]{}{}}%Self, clockwise
\newcommand{\aSa}[1]{\arrow[loop, out=#1-30, in=#1+30,looseness=4]{}{}}%Self, anti-clockwise

\begin{tikzcd}[nodes={inner sep=1pt,minimum size=3ex},cramped,column sep=scriptsize, row sep=scriptsize,
every matrix/.append style={name=m},execute at end picture={
    \begin{scope}[on background layer]
        \node[rounded corners,fill=black!10,minimum width=1cm, fit=(m-1-2) (m-4-2)](c1) {};
    \end{scope};
}]
2\aD\aSc{135}      &  1\aL\aSc{90}    &  0\aL\aD\aSc{45}    \\
6\aU\aD\aSa{180}   &  5\aL\aSc{90}   &  4\aL\aU\aD\aSc{0} \\
10\aU\aD\aSc{180}  &  9\aL\aSa{270}   &  8\aL\aU\aD\aSc{0} \\
14\aU\aSc{225}     &  13\aL\aSa{270}  &  12\aL\aU\aSc{315}
\end{tikzcd}
\end{document}

在此处输入图片描述

答案1

看起来节点的中心并不位于数字本身的中心。并且循环是围绕节点中心构建的。此外,矩形节点形状无助于使循环相等。作为一种解决方法,您可以使用节点形状circle(请注意,我必须将最小节点大小也增加到 3.5ex 才能使所有圆相等):

\usepackage{tikz-cd}
\usetikzlibrary{fit,backgrounds}

\begin{document}

\newcommand{\aU}{\arrow[bend left]{u}{}}
\newcommand{\aD}{\arrow[bend left]{d}{}}
\newcommand{\aL}{\arrow{l}{}}
\newcommand{\aR}{\arrow{r}{}}
\newcommand{\aS}[2]{\arrow[loop, out=#1, in=#2,looseness=4]{}{}}
\newcommand{\aSc}[1]{\arrow[loop, out=#1+30, in=#1-30,looseness=4]{}{}}%Self, clockwise
\newcommand{\aSa}[1]{\arrow[loop, out=#1-30, in=#1+30,looseness=4]{}{}}%Self, anti-clockwise

\begin{tikzcd}[nodes={inner sep=1pt,minimum size=3.5ex,circle},cramped,column sep=scriptsize, row sep=scriptsize,
every matrix/.append style={name=m},execute at end picture={
    \begin{scope}[on background layer]
        \node[rectangle,rounded corners,fill=black!10,minimum width=1cm, fit=(m-1-2) (m-4-2)](c1) {};
    \end{scope};
}]
2\aD\aSc{135}      &  1\aL\aSc{90}    &  0\aL\aD\aSc{45}    \\
6\aU\aD\aSa{180}   &  5\aL\aSc{90}   &  4\aL\aU\aD\aSc{0} \\
10\aU\aD\aSc{180}  &  9\aL\aSa{270}   &  8\aL\aU\aD\aSc{0} \\
14\aU\aSc{225}     &  13\aL\aSa{270}  &  12\aL\aU\aSc{315}
\end{tikzcd}
\end{document}

结果:

在此处输入图片描述

相关内容