向 tikzcd 图中添加一条线

向 tikzcd 图中添加一条线

我正在调整图表满足我的需要

我需要在此图的顶部添加另外两个元素和一条线 - 想象一下函数的参数及其图像,它们由一条直线连接,全部正确对齐,但完全不改变已经存在的结构(元素和箭头)。最简单的方法是什么?相关链接处的代码是

\begin{tikzcd}[row sep=2cm,column sep=2cm,inner sep=1ex]
\bar A  \arrow[thick,swap] {d}{\bar F_q}
&
\bar A_E   \arrow[thick,swap]{l}[name=U]{\pi^\star}
\arrow[thick]{d}{\bar F_{q,E}}
\\
\bar A     & \bar A_E     \arrow[thick]{l}[name=D]{\pi^\star}  
\arrow[to path={(U) node[midway,scale=3] {$\circlearrowleft$}  (D)}]{}
\end{tikzcd}

如果我简单地添加两个项目和一个箭头,就像这样

A \arrow {r}  & B \\ 

我破坏了图表的结构,因为圆形箭头会移到中间,而项目会以与下方线条相同的垂直距离添加,这太多了。我需要将这些新项目放在最上面。

这是我实际需要的图片。所有箭头都应该相同,图像中的任何差异都是由于无法绘制造成的。

在此处输入图片描述

答案1

问题是链接的答案是偶然起作用的。midway只有当它在路径中时才有意义。在链接的答案中,没有给出路径,圆圈箭头只是放在 diagram/ 的原点tikzpicture,这是偶然正确的。要纠正这个问题,需要添加一条路径并使辅助箭头不可见(通过phantom):

\arrow[phantom,to path={(U) -- node[midway,scale=3] {$\circlearrowleft$}  (D)}]{}

与链接答案相比,这--之后才真正得到了一条有意义的(U)路径,并且。midwayphantom

\documentclass{article}
\usepackage{amssymb}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}[row sep=2cm,column sep=2cm,inner sep=1ex]
    A \arrow {r}  & B \\ 
    \bar A  \arrow[thick,swap] {d}{\bar F_q}
    &
    \bar A_E   \arrow[thick,swap]{l}[name=U]{\pi^\star}
    \arrow[thick]{d}{\bar F_{q,E}}
    \\
    \bar A     & \bar A_E     \arrow[thick]{l}[name=D]{\pi^\star}  
    \arrow[phantom,to path={(U) -- node[midway,scale=3] {$\circlearrowleft$}  (D)}]{}
    \end{tikzcd}
\end{document}

在此处输入图片描述

值得一提的是,我们不需要依赖重新缩放的 AMS 符号,而是可以使用 tikz 绘制圆形箭头。这样,我们就不必将其他箭头加粗以使其与圆形箭头相似。

\documentclass{article}
\usepackage{tikz-cd}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzcd}[row sep=2cm,column sep=2cm,inner sep=1ex,
    execute at end picture={\draw[->] ($($(U)!0.5!(D)$)+(100:0.8)$) arc[start angle=100,end angle=440,radius=0.8];}]
    A \arrow {r}  & B \\[-5em] 
    \bar A  \arrow[swap] {d}{\bar F_q}
    &
    \bar A_E   \arrow[swap]{l}[name=U]{\pi^\star}
    \arrow{d}{\bar F_{q,E}}
    \\
    \bar A     & \bar A_E     \arrow{l}[name=D]{\pi^\star}  
    \end{tikzcd}
\end{document}

在此处输入图片描述

相关内容