Tikz:具有局部坐标系的范围

Tikz:具有局部坐标系的范围

我制作了一个带有坐标系的页面(以红色显示),其中 (0,0) 位于页面的左上角,坐标向页面的右下角增加。

现在我想为页面的右半部分设置一个旋转的范围(以绿色显示),如下所示:

布局

\documentclass{article}
\pagestyle{empty}
\usepackage[paperheight=17cm,paperwidth=23cm]{geometry}
\usepackage{tikz}

\begin{document}
    \begin{tikzpicture}[
        every node/.style={draw, rectangle},
        remember picture, overlay,
        shift={(current page.north west)},yscale=-1 % (0,0) at the top left corner
    ]

        \begin{scope}[shift={(current page.south)},rotate=90,transform shape]
        \begin{scope}[xscale=-1,yscale=-1]
        \node at (0,0){B};
        \node at (1,1){F};
        \end{scope}
        \end{scope}
    \end{tikzpicture}
\end{document}

但只要我得到正确的坐标方向,内容就会镜像:

截屏

就像内部范围继承了外部范围的“变换形状”或类似的东西。

答案1

tikzpicture是的,内部作用域从环境作用域继承了键。这是嵌套s 存在问题的主要原因。您可以transform shape=false在内部作用域中使用。

\documentclass{article}
\pagestyle{empty}
\usepackage[paperheight=17cm,paperwidth=23cm]{geometry}
\usepackage{tikz}

\begin{document}
    \begin{tikzpicture}[
        every node/.style={draw, rectangle},
        remember picture, overlay,
        shift={(current page.north west)},yscale=-1 % (0,0) at the top left corner
    ]

        \begin{scope}[shift={(current page.south)},rotate=90,transform shape]
        \begin{scope}[xscale=-1,yscale=-1,transform shape=false]
        \node at (0,0){B};
        \node at (1,1){F};
        \end{scope}
        \end{scope}
    \end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

好的,我找到了问题:

transform shape是节点的属性,而不是范围的属性,因此无法说“将应用于rotate节点,但不应用于xscale”。

但是,xscaleyscale对于建立局部坐标系来说不是必需的。我不确定我为什么一开始就使用它们,但是xy同样有效,因为它们不是转型它们不会扭曲内容:

\documentclass{article}
\pagestyle{empty}
\usepackage[paperheight=17cm,paperwidth=23cm]{geometry}
\usepackage{tikz}

\begin{document}
    \begin{tikzpicture}[
        every node/.style={draw, rectangle},
        remember picture, overlay,
        shift={(current page.north west)},y=-1cm % (0,0) at the top left corner
    ]

        \begin{scope}[shift={(current page.south)},rotate=90,transform shape]
        \node at (0,0){B};
        \node at (1,1){F};
        \end{scope}
    \end{tikzpicture}
\end{document}

截屏

相关内容