首页 > 解决方案 > tikz:裁剪范围的相对定位

问题描述

我正在尝试将一些 tikz 图表组合成一个更大的概览图表,但是我在将子图像相对于它们的父对象和彼此对齐时遇到了困难。

scope使用and将子图像从其他一些 tikz 图形中裁剪为矩形clip

红蓝矩形

\documentclass[crop,tikz]{standalone}
\usepackage{relsize, xcolor, tikz}

\begin{document}

\begin{tikzpicture}[x=0.04cm,y=-0.04cm]

    \begin{scope}[xshift=0, yshift=0, local bounding box=scopeAouter]
        \fill [black!40, rounded corners=5] (0, 0) rectangle ++(60, 70);  % bounding rectangle
        \begin{scope}[xshift=0, yshift=0, scale=.5, local bounding box=scopeAinner]
            \clip [rounded corners=3] (-30, -5) rectangle ++(100, 50);  % cannot change this line
            % dummy pattern
            \fill [red!60] (-100,-100) rectangle (100, 100);
            \fill [blue!60] (-100, -100) -- (100, -100) -- (100, 100) -- cycle;
        \end{scope}
    \end{scope}

    \begin{scope}[xshift=80, yshift=0, local bounding box=scopeBouter]
        \fill [black!40, rounded corners=5] (0,0) rectangle ++(60, 70);  % bounding rectangle
        \begin{scope}[xshift=0, yshift=0, scale=1, local bounding box=scopeBinner]
            \clip [rounded corners=3] (4, 2) rectangle ++(50, 25);  % cannot change this line
            % dummy pattern
            \fill [red!60] (-100,-100) rectangle (100, 100);
            \fill [blue!60] (-100, -100) -- (100, -100) -- (100, 100) -- cycle;
        \end{scope}
    \end{scope}

\end{tikzpicture}

\end{document}

目标是在相邻的灰色边界框内很好地对齐红蓝色矩形(即,左、右和顶部的边距相等,底部有文本空间)。

“边界条件”:内部裁剪命令可能具有不同的 x/y 偏移和大小,并且无法更改,但它们具有已知的比率(示例中为 2:1)。我一直在尝试用内部范围的xshift,yshift和来补偿,scale但这并没有按预期工作。

裁剪需要内部范围对象,并且假设它们不能更改。外部范围是我解决问题的尝试,但它们不一定需要在那里。

在网上搜索我发现了以下相关链接,但我无法将它们中的任何一个调整到具有内部范围的用例中。


编辑

澄清:我在内部范围内使用裁剪的原因本质上是因为我想以特定方式裁剪子图像,而不是改变它们的位置。事实上,我希望图像被裁剪和缩放,但没有任何偏移。

我目前正在通过将子图像保存为 png 并在以后包含它们来实现所需的结果(也许这解释了为什么我不能更改内部剪辑的坐标,因为如果我这样做了,我将不得不更改所有子图像)

在此处输入图像描述

标签: layoutscopelatextikz

解决方案


推荐阅读