我想问您,在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
您能给我提示一下如何处理这个问题吗?第二个问题涉及 和 的对齐i
。 i^{-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}