我正在使用以下方法绘制带有节点和箭头的图表蒂克兹,但不知道如何才能做出箭头分为两部分。
我正在使用与此非常相似的东西:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}
\matrix (m) [matrix of math nodes,row sep=3em,column sep=4em,minimum
width=2em]
{
F_t(x) & F(x) \\
A_t & A \\};
\path[-stealth]
(m-1-1) edge node [left] {$\mathcal{B}_X$} (m-2-1)
edge [double] node [below] {$\mathcal{B}_t$} (m-1-2)
(m-2-1.east|-m-2-2) edge node [below] {$\mathcal{B}_T$}
node [above] {$\exists$} (m-2-2)
(m-1-2) edge node [right] {$\mathcal{B}_T$} (m-2-2)
edge [dashed,-] (m-2-1);
\end{tikzpicture}
\end{document}
答案1
我的朋友,我强烈建议你使用tikzcd
包。它确实让生活变得更轻松。你可以找到详尽的文档这里。现在来看看代码。你会发现它比一般的痛苦tikz
源短得多:
\documentclass[a4paper]{report}
\usepackage{amsmath}
\usepackage{tikz-cd}
\begin{document}
\[
\begin{tikzcd}[column sep=large, row sep=large]
F_t(x) \arrow[d, "\mathcal{B}_X"'] \arrow[r, "\mathcal{B}_t"', rightharpoondown, shift right=0.25ex] \arrow[r, rightharpoonup, shift left=0.25ex] & F(x) \arrow[d, "\mathcal{B}_T"] \\
A_t \arrow[ru, dashrightarrow, dash] \arrow[r, "\exists", "\mathcal{B}_T"'] & A
\end{tikzcd}
\]
\end{document}
或者您可能想要两个指向同一方向的正常箭头:
\documentclass[a4paper]{report}
\usepackage{amsmath}
\usepackage{tikz-cd}
\begin{document}
\[
\begin{tikzcd}[column sep=large, row sep=large]
F_t(x) \arrow[d, "\mathcal{B}_X"'] \arrow[r, "\mathcal{B}_t"', shift right=0.65ex] \arrow[r, shift left=0.65ex] & F(x) \arrow[d, "\mathcal{B}_T"] \\
A_t \arrow[ru, dashrightarrow, dash] \arrow[r, "\exists", "\mathcal{B}_T"'] & A
\end{tikzcd}
\]
\end{document}
如果我不回答你的问题,那就太不礼貌了具体来说。也许你对 非常熟练tikz
,不想跳到另一个包。我理解。不过我必须警告你,这path
不是最好的方法。事实上(对于交换图)它非常糟糕。我重写了整个图表,因为我无法在path
环境中找到解决方案。它有点阉割了函数必须提供的很大一部分tikz
,例如xshift
我yshift
过去移动箭头。这是一个简单的解决方案tikz
:
\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[node distance=2.3cm, auto]
\node (A) {$F_t(x)$};
\node(B) [right of=A] {$F(x)$};
\node (C) [below of=A] {$A_t$};
\node (D) [right of=C] {$A$};
\draw[transform canvas={yshift=0.5ex},->] (A) -- (B);
\draw[transform canvas={yshift=-0.5ex},->](A) to node [below] {$\mathcal{B}_{t}$} (B);
\draw[->](A) to node [left] {$\mathcal{B}_{X}$}(C);
\draw[->](B) to node {$\mathcal{B}_{T}$}(D);
\draw[->](C) to node [below] {$\mathcal{B}_{T}$}(D);
\draw[](C) to node [above] {$\exists$}(D);
\draw[dashed](B) to (C);
\end{tikzpicture}
\end{document}
希望这篇文章对你有帮助。祝你有个美好的一天。