这是我的问题。
我试图通过将长箭头分成两部分来让弯曲的箭头“进入”CxExF 节点下方。但是,我希望这两部分遵循与长箭头相同的“路径”。这意味着我需要移动/移动两部分的入口(和出口)点,以便看起来断箭真的从节点下方穿过。为了让您了解我的意思,我在下面列出了理想的情况(使用图像编辑器生成)。有什么建议吗?还有更好的方法吗?
以下是产生问题的代码。
\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\[
\begin{tikzcd}
X \ar[r] & A &\\
& C\times D\times F &\\
& &\\
& &\\
& &\\
& & B \ar[luuuuu, bend left, in=190, out=10]
\end{tikzcd}
\]
\[
\begin{tikzcd}
X \ar[r] & A &\\
& C\times D\times F \ar[u, bend left, in=240, out=0] &\\
& &\\
& &\\
& &\\
& & B \ar[-,luuuu, bend left, in=190, out=10]
\end{tikzcd}
\]
\end{document}
答案1
答案2
只是为了好玩:类似于reverseclip
诡计。这样您就不必手动进行调整。
\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\[
\begin{tikzcd}[execute at end picture={
\clip (C.north east) rectangle (C.south west)
(current bounding box.south west) -| (current bounding box.north east)
-| cycle;
\draw[->] (B) to[out=110,in=-90] (A);
}]
X \ar[r] & |[alias=A]|A &\\
& |[alias=C]| C\times D\times F &\\
& &\\
& &\\
& &\\
& & |[alias=B]|B
\end{tikzcd}
\]
\end{document}
答案3
尽管我认为 marmot 的解决方案更简洁,但这里还有一个可能有用的技巧:
\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\[
\begin{tikzcd}
X \ar[r] & A &\\
& \tikz[remember picture]{\node (P0) at (0,0) {$C\times D\times F$}} &\\
& &\\
& &\\
& &\\
& & B \ar[luuuuu, bend left, in=190, out=10]
\end{tikzcd}
\]
\tikz[overlay,remember picture]{\node[fill=white] at (P0) {$C\times D\times F$}};
\end{document}
上述代码P0
在矩阵单元中定义了一个 tikz 节点 ( ),并记住了它。随后,节点被填充方程式和一个白色背景,背景绘制在箭头上方。本质上,它是tikz-cd
和之间的混合解决方案tikz
。
此时,人们可能还会考虑tikz
使用matrix of nodes
和层来寻求完整的解决方案,这在必须定义穿过许多节点的许多箭头时很有用:
\documentclass{article}
\usepackage{tikz-cd}
\usetikzlibrary{matrix}
\begin{document}
\pgfdeclarelayer{background}
\pgfsetlayers{background,main}
\begin{tikzpicture}
\matrix (X) [matrix of nodes,column sep=0.8cm,row sep=0.8cm,every node/.style={fill=white}]
{
$X$ & $A$ \\
& $C\times D \times F$ \\
& &\\
& &\\
& &\\
& & $B$ \\
};
\begin{pgfonlayer}{background}
\draw[->] (X-1-1) -- (X-1-2) ;
\draw[->] (X-6-3) to[in=-55, out=125] (X-1-2);
\end{pgfonlayer}
\end{tikzpicture}
\end{document}
具有多个箭头和节点的示例:
\begin{tikzpicture}
\matrix (X) [matrix of nodes,column sep=0.8cm,row sep=0.8cm,every node/.style={fill=white}]
{
$X$ & $A$ \\
& $C\times D \times F$ \\
& $K\times L \times M \times N$ &\\
& $G\times H \times I \times J$ &\\
& & \\
& & $B$ \\
};
\begin{pgfonlayer}{background}
\draw[->] (X-1-1) -- (X-1-2) ;
\draw[->] (X-6-3) to[in=-55, out=125] (X-1-2);
\draw[->] (X-6-3) to[in=-60, out=150] (X-2-2);
\draw[->] (X-2-2) to[in=120, out=-120] (X-4-2);
\end{pgfonlayer}
\end{tikzpicture}