交换图中的附加符号

交换图中的附加符号

我正在写关于范畴论的文章,​​它使用tikz-cd并有一对伴随函子,通常表示为

$F\dashv G$

我希望\dashv在这样的交换图中出现这个符号(因此它应该替换双箭头)。

\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\[\begin{tikzcd}[ampersand replacement=\&] C\ar[r,bend left,"F",""{name=A, below}] \& D\ar[l,bend left,"G",""{name=B,below}] \ar[from=A, to=B, Rightarrow]\end{tikzcd}\]
\end{document}

但我不知道该怎么做。有人能帮帮我吗?

答案1

您可以定义自己的箭头样式,使用符号代替实际箭头。其余操作与刚才相同。

% 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$}}}
    }
}

\begin{document}
$F\dashv G$ or:     
\[
\begin{tikzcd}
C\ar[r,bend left,"F",""{name=A, below}] & D\ar[l,bend left,"G",""{name=B,above}] \ar[from=A, to=B, symbol=\dashv]
\end{tikzcd}
\]
\end{document}

在此处输入图片描述


为了进一步解释这一点,我又举了一个例子:

\documentclass{article}
\usepackage{tikz-cd}
\tikzset{%
    symbol/.style={%
        ,draw=none
        ,every to/.append style={%
            ,edge node={%
                node [%
                    ,sloped
                    ,allow upside down
                    ,auto=false
                    ]{$#1$}
                }
            }
        }
    }

\begin{document}    
\begin{tikzcd}
    \bullet\arrow[symbol={y}]{r}\arrow[symbol={y}]{d}\arrow[symbol={y}]{dr} & \bullet \\
    \bullet & \bullet\arrow[symbol={y}]{l}\arrow[symbol={y}]{u}
\end{tikzcd}
\end{document}

在此代码中,您可以逐行注释掉(中的单行选项\tikzset),然后轻松查看会发生什么。draw=noneslopedallow upside down应该清楚。auto=false是默认值,但我将其包括在内,以防您在auto设置为 true 的图表中使用该样式。如果您删除此行,在这种情况下不会发生任何事情,但如果您只是删除=false,您将得到错误的结果。请参阅手册tikz-cd以获得有关所有这些选项的更多参考。

最后让我们看一下语法:我定义了一个新的 Ti您可以使用 Z 样式,在任何地方使用它。由于我们在箭头节点内使用此样式,因此我们必须告诉它不要绘制此节点。然后我们说,对于任何to指令(箭头确实使用这个),我们想要附加一个(将两个元素从到组合起来的节点)tikz-cd的样式(请参阅 Tiedge nodefromtoZ) 手册)。这样的edge node也有一个node,在 中称为标签tikz-cd。它位于 的中心上方edge node。我们为该节点定义任何所需的样式(您也可以插入颜色或其他内容),但保留 之间的实际节点文本,{<some text>}或者更好的是,将其替换为{$#1$}。当然,您已经看到了其他命令的此类虚拟对象。它只是说,这个宏的第一个参数应插入到 的位置#1恰好位于数学模式中并位于此处的节点文本中。Ti 的参数Z 样式用作键值指令,因此现在您可以使用symbol={=}symbol={\infty}任何您喜欢的样式。

相关内容