我正在调整图表这满足我的需要
我需要在此图的顶部添加另外两个元素和一条线 - 想象一下函数的参数及其图像,它们由一条直线连接,全部正确对齐,但完全不改变已经存在的结构(元素和箭头)。最简单的方法是什么?相关链接处的代码是
\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)
路径,并且。midway
phantom
\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}