右对齐 TikZ 节点 - 错误?

右对齐 TikZ 节点 - 错误?

我刚刚浪费了一个多小时试图弄清楚为什么垂直堆叠的节点没有像我预期的那样右对齐。事实证明,只需更改anchorbelow属性的顺序就足以触发该问题。

MWE 是:

% !TEX program = xelatex

\documentclass{book}

\usepackage{hyperref}

\usepackage{tikz}
\usepackage{tikzpagenodes}
\usetikzlibrary{positioning}

\begin{document}
    \begin{tikzpicture}[box/.style={draw=black}]
        \node (first)  [box] {first};
        \node (second) [box,below=0mm of first.south east,anchor=north east] {second};
    \end{tikzpicture}

    \begin{tikzpicture}[box/.style={draw=black}]
        \node (first)  [box] {first};
        \node (second) [box,anchor=north east,below=0mm of first.south east] {second};
    \end{tikzpicture}
\end{document}

得出的结果为:

在此处输入图片描述

如您所见,对齐在第一种情况下有效,但在第二种情况下无效。唯一的区别是属性的顺序。

有人能确认这是一个错误吗,或者我误解了这里的一些预期行为?

答案1

如上所述保罗·加博利 任何定位键都隐式定义一个锚点。如果它遵循明确写入的锚点,它也会覆盖明确写入的锚点。

要获得您想要的内容,只需使用定位键即可:

\documentclass{book}
\usepackage{hyperref}
\usepackage{tikz}
%\usepackage{tikzpagenodes}
\usetikzlibrary{positioning}

\usepackage[active,tightpage]{preview}% not use in real document! it show only both images
%\PreviewEnvironment{tikzpicture}
\setlength\PreviewBorder{1em}


\begin{document}
\begin{preview}
    \begin{tikzpicture}[
    node distance = 1pt and 0pt,
       box/.style = {draw=black}
                        ]
        \node (first)  [box] {first};
        \node (second) [box,below right=of first.south west] {second};
    \end{tikzpicture}

     \begin{tikzpicture}[
    node distance = 0pt,
       box/.style = {draw=black}
                        ]
        \node (first)  [box] {first};
        \node (second) [box,below left=of first.south east] {second};
    \end{tikzpicture}
\end{preview}
\end{document}

这使:

在此处输入图片描述

相关内容