TikZ:带有符号的弯曲箭头,居中和倾斜的问题

TikZ:带有符号的弯曲箭头,居中和倾斜的问题

我正在尝试绘制一个数学概念,但由于某种原因,符号倾斜,标签不居中。我尝试调整 pos 等参数,但总体来说一定有更好的方法:

\[
\begin{tikzcd}
\Gph\arrow[r,bend left,"F_C",""{name=A, below}] & \Cat\arrow[l,bend left,"U_G",""{name=B,above}] \arrow[from=A, to=B, symbol=\dashv] \arrow[r,bend left,"F_P",""{name=C, below}] & \Pos \arrow[l,bend left,"U_C",""{name=D,above}] \arrow[r,bend left,"U_S",""{name=E, below}] \arrow[from=C, to=D, symbol=\dashv] & \Set \arrow[l,bend left,"F_P",""{name=F,above}] \arrow[from=F, to=E, symbol=\dashv]
\end{tikzcd}
\]

结果

请告诉我一种更系统的制作这些图表的方法;谢谢!

答案1

我刚刚对您的条目进行了如下修改。

\documentclass{article}
\usepackage{tikz-cd}
\usetikzlibrary{arrows}

\def\ac{\rotatebox[origin=c]{90}{$\dashv$}} %rotate dash anti-cw
\def\cw{\rotatebox[origin=c]{-90}{$\dashv$}} %rotate dash cw
%\tikzset{adj/.style={pos=0.545,outer sep=3pt}} %adjust label position along path

\begin{document}
\begin{tikzcd}[column sep=small]
    Gph \arrow[bend left,below]{rr}{F_C}
    & \cw &
    \arrow[bend left,above]{ll}{U_G} Cat \arrow[bend left,below]{rr}{F_P}
    %\arrow[bend left,above, adj]{ll}{U_G} Cat \arrow[bend left,below]{rr}{F_P}
    & \dashv &
    \arrow[bend left,above]{ll}{U_C} Pos \arrow[bend left,below]{rr}{U_S}
    & \ac &
    Set \arrow[bend left,above]{ll}{F_P}
\end{tikzcd}
\end{document} 

在此处输入图片描述

我还添加了代码来旋转 \dashv 符号。显示正常的 \dashv 以及顺时针和逆时针旋转。

添加了一条命令(注释掉),用于调整标签沿箭头的位置及其与线的距离。您可以尝试各种值,直到得到您喜欢的结果。下面,第一张图片显示了使用“column sep = tiny”导致的错位标签。

在此处输入图片描述

后续图片使用注释掉的命令调整标签位置,使其与另一个标签垂直对齐,并显示可以将标签从线推远 3pt。

在此处输入图片描述

答案2

与原始代码不同的方法。

在此处输入图片描述

\documentclass{article}
\usepackage{tikz-cd}
\newcommand{\pdashv}{\rotatebox[origin=c]{-90}{$\dashv$}}
\newcommand{\vdashv}{\rotatebox[origin=c]{0}{$\dashv$}}
\newcommand{\sdashv}{\rotatebox[origin=c]{90}{$\dashv$}}
\begin{document}
\begin{tikzcd}
Gph \arrow[rr, "F_C", bend left] & \pdashv & Cat 
\arrow[ll, "U_G", bend left] 
\arrow[rr, "F_P", bend left] & \vdashv & Pos \arrow[ll, "U_C", bend left] 
\arrow[rr, "U_S", bend left] & \sdashv & Set \arrow[ll, "F_P", bend left]
\end{tikzcd}
\end{document} 

相关内容