奇怪的 Tikz 定位行为;calc、\graph、subgraph

奇怪的 Tikz 定位行为;calc、\graph、subgraph

我有以下代码。当只绘制一个中间节点时,它的行为符合预期;但是,当两个节点都存在时,结果却令人惊讶。这是为什么?我该如何修复它?

\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}

相关内容