我有以下代码。当只绘制一个中间节点时,它的行为符合预期;但是,当两个节点都存在时,结果却令人惊讶。这是为什么?我该如何修复它?
\documentclass[border=2mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{ calc }
\usetikzlibrary{ graphs, graphs.standard }
\begin{document}
\begin{tikzpicture}
\graph[ nodes = { fill = blue }, empty nodes ]{
subgraph C_n [n = 8, clockwise, radius = 2cm];
1 -- 9 [at = { ($(1) ! 0.5 ! (6)$) }] -- 6;
2 -- A [at = { ($(2) ! 0.5 ! (5)$) }] -- 5;
};
\end{tikzpicture}
\end{document}
答案1
如果您想要“手动”定位节点,则必须使用“关闭”整个放置机制no placement
。您可以在本地执行此操作。
\documentclass[tikz,border=7pt]{standalone}
\usetikzlibrary{calc, graphs, graphs.standard}
\begin{document}
\begin{tikzpicture}
\graph[nodes={fill=blue}, empty nodes]{
subgraph C_n [n=8, clockwise, radius=2cm];
{[no placement] % <----- switch off auto placement
1 -- 9 [at={($(1)!0.5!(6)$)}] -- 6;
2 -- A [at={($(2)!0.5!(5)$)}] -- 5;
}
};
\end{tikzpicture}
\end{document}
答案2
虽然我无法弄清楚为什么这个库会如此表现,但我会给出一个颠覆该问题的解决方案,并且不需要任何额外的库。
\documentclass[tikz,border=3.14mm]{standalone}
\begin{document}
\begin{tikzpicture}[every node/.style={draw,fill=blue,inner sep=1.5mm}]
\foreach \i in {1,...,8} \node (\i) at (135-\i*45:2) {};
\foreach \j [count =\i from 1] in {2,3,...,8,1} \draw (\i) -- (\j);
\draw (1) -- (6) node[midway] (A) {};
\draw (2) -- (5) node[midway] (B) {};
\end{tikzpicture}
\end{document}