我正在写关于范畴论的文章,它使用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=none
、sloped
和allow upside down
应该清楚。auto=false
是默认值,但我将其包括在内,以防您在auto
设置为 true 的图表中使用该样式。如果您删除此行,在这种情况下不会发生任何事情,但如果您只是删除=false
,您将得到错误的结果。请参阅手册tikz-cd
以获得有关所有这些选项的更多参考。
最后让我们看一下语法:我定义了一个新的 Ti钾您可以使用 Z 样式,在任何地方使用它。由于我们在箭头节点内使用此样式,因此我们必须告诉它不要绘制此节点。然后我们说,对于任何to
指令(箭头确实使用这个),我们想要附加一个(将两个元素从到组合起来的节点)tikz-cd
的样式(请参阅 Tiedge node
from
to
钾Z) 手册)。这样的edge node
也有一个node
,在 中称为标签tikz-cd
。它位于 的中心上方edge node
。我们为该节点定义任何所需的样式(您也可以插入颜色或其他内容),但保留 之间的实际节点文本,{<some text>}
或者更好的是,将其替换为{$#1$}
。当然,您已经看到了其他命令的此类虚拟对象。它只是说,这个宏的第一个参数应插入到 的位置#1
恰好位于数学模式中并位于此处的节点文本中。Ti 的参数钾Z 样式用作键值指令,因此现在您可以使用symbol={=}
或symbol={\infty}
任何您喜欢的样式。