Tikz \子节点定位

Tikz \子节点定位

当坐标为负数时,定位会出现问题\subnode。如果注释掉第三个子节点,下面的示例代码就可以正常工作。否则,所有位置都会被破坏。我该如何防止这种情况发生?

\documentclass[tikz,margin=2pt]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{positioning, tikzmark}

\begin{document}
\begin{tikzpicture} 
    % Draw grid
    \def\nlines{5}
    \foreach \x in {0,...,\nlines} \draw[thick](\x, 0) -- (\x, \nlines);
    \foreach \y in {0,...,\nlines} \draw[thick](0, \y) -- (\nlines, \y);

    \node at(2.5, 0.5) {\subnode{a0}{} A};
    \node at (a0.base) {A0};

    \node at(2.5, 1.5) {\subnode{b0}{} B};
    \node at (b0.base) {B0};

    \node at(2.5, -0.5) {\subnode{c0}{} C};%comment this line
    \node at (c0.base) {C0};% comment this line
\end{tikzpicture}
\end{document}

答案1

这不是标记节点的方法。你应该贴上类似这样的标签

\node (a0) at(2.5, 0.5)  {A};  %% (a0) is the label

进而

\node at (a0.base) {A0};

作品。

\documentclass[tikz,margin=2pt]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{positioning, tikzmark}

\begin{document}
\begin{tikzpicture}
    % Draw grid
    \def\nlines{5}
    \foreach \x in {0,...,\nlines} \draw[thick](\x, 0) -- (\x, \nlines);
    \foreach \y in {0,...,\nlines} \draw[thick](0, \y) -- (\nlines, \y);

    \node (a0) at(2.5, 0.5)  {A};
    \node at (a0.base) {A0};

    \node (b0) at(2.5, 1.5) {B};
    \node at (b0.base) {B0};

    \node (c0) at(2.5, -0.5) {C};%comment this line
    \node at (c0.base) {C0};% comment this line
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

使用的时候\subnode,需要remember picture对周围的图片进行设置。

A\subnode实际上是一张新图片,TikZ 通过比较其在页面上的绝对位置来确定它的位置。为了使其正常工作,TikZ 还需要知道外部图片的位置,否则它无法确定相对位置。它会返回一些默认值,在这种情况下,这意味着相对位置会随着每次编译而不断增长。

另外,修复此问题时,您需要删除文件aux以删除旧的错误位置。

(文档目前没有说明这一点 - 我将在下一个版本中修复它。)

相关内容