tikz-cd:锚定和移动箭头

tikz-cd:锚定和移动箭头

我想问您,在tikz-cd包中移动和锚定箭头的最佳方法是什么。更具体地说,通过以下代码:

\documentclass{article}

\usepackage{amsfonts}

\usepackage{tikz}
\usepackage{tikz-cd}
\usetikzlibrary{cd}
\usetikzlibrary{snakes}

\begin{document}
\begin{tikzcd}[row sep=large,column sep=large]

\mathbf{DV}\ni \mathfrak{M}_1 \arrow[d, "i" left, ->,shift right, start anchor={-40}, end anchor={40}] \arrow[d, "i^{-1}", <-,shift left,start anchor={-40}, end anchor={40}] \\
\mathbf{DV}\ni \mathfrak{M}_2

\end{tikzcd}
\end{document} 

我得到了下图:

在此处输入图片描述

如您所见,左侧的箭头略微倾斜。我希望箭头位于 和 的下方和上方居中\mathfrak{M}_1\mathfrak{M}_2您能给我提示一下如何处理这个问题吗?第二个问题涉及 和 的对齐ii^{-1}是否有任何内部tikz-cd工具可以让我将它们相对于底部对齐?

答案1

我建议您只使用shift不带锚点的选项:

示例输出

\documentclass{article}

\usepackage{amsfonts}

\usepackage{tikz}
\usepackage{tikz-cd}
\usetikzlibrary{cd}
\usetikzlibrary{snakes}

\begin{document}

\begin{tikzcd}[row sep=large,column sep=large]
  \mathbf{DV}\ni \mathfrak{M}_1
  \arrow[d, "i" left, ->,shift left=5]
  \arrow[d, "i^{-1}", <-,shift left=7] \\
  \mathbf{DV}\ni \mathfrak{M}_2
\end{tikzcd}

\end{document}

i为了使和的定位i^{-1}统一,您可以使用\mathstrut\vphantom(或者更适当地\vphantom1在第一个上使用i

第二个示例

\documentclass{article}

\usepackage{amsfonts}

\usepackage{tikz}
\usepackage{tikz-cd}
\usetikzlibrary{cd}
\usetikzlibrary{snakes}

\begin{document}

\begin{tikzcd}[row sep=large,column sep=large]
  \mathbf{DV}\ni \mathfrak{M}_1
  \arrow[d, "i^{\vphantom1}" left, ->,shift left=5]
  \arrow[d, "i^{-1}", <-,shift left=7] \\
  \mathbf{DV}\ni \mathfrak{M}_2
\end{tikzcd}

\end{document} 

答案2

你有两个盒子,大小相同。因此,我想再问一个问题,为什么 40° 锚定不起作用。(见我上面的评论)

无论如何,您似乎将 视为\mathbf{DV}不属于主要部分 的东西\mathfrak{M}_1。如果您想将其分开,箭头应位于主要符号下方的中心以保持一致。我认为将这两个术语拆分为两个节点在句法上是有意义的。请参阅下面的示例。但不需要锚点。

为了安全打字,我稍微改变了箭头。我还为\smash角色引入了可能性。我更喜欢\vphantom斯旺先生展示的,但你可以选择。

% arara: pdflatex

\documentclass{article}
\usepackage{tikz-cd}
\tikzset{%
    symbol/.style={%
        draw=none,
        every to/.append style={%
            edge node={node [sloped, allow upside down, auto=false]{$#1$}}
            }
        }
    }
\usepackage{amsfonts}

\begin{document}    
\begin{tikzcd}[row sep=large,column sep=large]
    \mathbf{DV}\arrow[symbol=\ni]{r} &[-3em] \mathfrak{M}_1 \arrow[shift left]{d}{i} \\
    \mathbf{DV}\arrow[symbol=\ni]{r} & \mathfrak{M}_2 \arrow[shift left]{u}{i^{\smash{-1}}}
\end{tikzcd}    
\end{document}

在此处输入图片描述


如果您想坚持使用度值给出的锚点,则必须告诉tikz-cd将每个节点视为矩形。这将解决您在此处看到的问题。

% arara: pdflatex

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

\begin{document}    
    \begin{tikzcd}[%
        ,row sep=large
        ,column sep=large
        ,cells={shape=rectangle}
        ]
        \mathbf{DV}\ni \mathfrak{M}_1 \arrow[shift left, start anchor=-40, end anchor=40]{d}{i} \\
        \mathbf{DV}\ni \mathfrak{M}_2 \arrow[shift left, start anchor=40, end anchor=-40]{u}{i^{\smash{-1}}}
    \end{tikzcd}    
\end{document}

在此处输入图片描述

相关内容