我正在尝试使用 TikZ 将此图中的“c”放置在由“a”、“b”、“d”组成的三角形的中心。有没有简单的方法可以做到这一点,还是我应该尝试使用 tikzpicture 来实现此目的?
$$\begin{tikzcd}[column sep=small] a \arrow[dash]{dr} \arrow[dash]{dd} \arrow[dash]{drr}& & \\
& c \arrow[dash]{r}& d \\
b \arrow[dash]{ur} \arrow[dash]{urr}&&
\end{tikzcd}$$
答案1
那么在 c 和 d 之间插入一个额外的列怎么样?
\documentclass{article}
\usepackage{tikz}
\usepackage{tikz-cd}
\begin{document}
$$\begin{tikzcd}[column sep=small]
a \arrow[dash]{dr} \arrow[dash]{dd} \arrow[dash]{drrr} & & \\
& c \arrow[dash]{rr} & & d \\
b \arrow[dash]{ur} \arrow[dash]{urrr}&&
\end{tikzcd}$$
\end{document}
但是,这不是一个等边三角形,c 也不在真正的中心。在这种情况下,我更喜欢使用 tikzpicture:
\begin{tikzpicture}
\node (c) {$c$};
\foreach \angle/\name in {0/d,120/a,240/b}
\node (\name) at (\angle:1) {$\name$};
\draw (a) -- (d) -- (b) -- (a);
\foreach \name in {a,b,d} \draw (c) -- (\name);
\end{tikzpicture}
比较三个版本:
如果 (a) 和 (b) 不需要垂直对齐,我更愿意将边缘 (b)--(d) 设为水平,这样可以更好地呈现 (c) 位于中心的视觉印象:
通过改变 tikzpicture 版本中的角度可以轻松实现这一点:
\begin{tikzpicture}
\node (c) {$c$};
\foreach \angle/\name in {-30/d,90/a,210/b}
\node (\name) at (\angle:1) {$\name$};
\draw (a) -- (d) -- (b) -- (a);
\foreach \name in {a,b,d} \draw (c) -- (\name);
\end{tikzpicture}