使用 tikzcd 置换箭头标签

使用 tikzcd 置换箭头标签

在 tikzcd 中输出的图表中,箭头标签发生了位移。我猜问题出在下标 C_T,但我不知道如何修复它。

答案1

每当单元格的尺寸不同时,弯曲的箭头可能不是水平的,因此,边缘标签可能会出现错位。有很多方法可以解决这个问题,下面的代码描述了其中两种。

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz-cd}
\begin{document}
\[
 \begin{tikzcd}
  \mathcal{C} \arrow[r,bend left,"F_T"] & 
    \mathcal{C}_T \arrow[l,bend left,"G_T"]
 \end{tikzcd}
 \quad\text{vs.}\quad
 \begin{tikzcd}% make the box sizes equal
  {}_{\phantom{T}}\mathcal{C} \arrow[r,bend left,"F_T"] & 
    \mathcal{C}_T \arrow[l,bend left,"G_T"]
 \end{tikzcd}
 \quad\text{vs.}\quad
 \begin{tikzcd}% shift the edge label positions
  \mathcal{C} \arrow[r,bend left,"F_T" {pos=0.6}] & 
    \mathcal{C}_T \arrow[l,bend left,"G_T" {pos=0.4}]
 \end{tikzcd}
\]
\end{document}

在此处输入图片描述

左图为原始图。中间图使用幻影使单元格大小相等。右图边缘标签发生偏移。

如果你想一劳永逸地解决这个问题,你可以引入自己的风格来解决这个问题。然后你需要做的就是使用hbend left而不是bend left

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz-cd}
\usetikzlibrary{calc}
\tikzset{hbend left/.style={
    to path={let \p1=($(\tikztotarget)-(\tikztostart)$),
        \p2=($(\tikztostart.north)-(\tikztostart.south)$),
        \p3=($(\tikztotarget.north)-(\tikztotarget.south)$),
        \n1={max(\y2,\y3)/2} in
    \ifdim\x1>0pt
     ([yshift=\n1]\tikztostart.east) to[bend left] ([yshift=\n1]\tikztotarget.west)
    \else
     ([yshift=-0.7*\n1]\tikztostart.west) to[bend left] ([yshift=-0.7*\n1]\tikztotarget.east)
    \fi
    }}}
\begin{document}
\[
 \begin{tikzcd}
  \mathcal{C} \arrow[r,hbend left,"F_T"] & 
    \mathcal{C}_T \arrow[l,hbend left,"G_T"]
 \end{tikzcd}
\]
\end{document}

在此处输入图片描述

相关内容