layout - 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 并在以后包含它们来实现所需的结果(也许这解释了为什么我不能更改内部剪辑的坐标,因为如果我这样做了,我将不得不更改所有子图像)
解决方案
推荐阅读
- docker - 无法登录到 docker 私有注册表
- c# - 巡逻时敌人正在消失
- c# - 如何在逗号分隔的字符串中附加管道字符?
- c++ - 检查 gdb 中的静态 const 类成员
- javascript - 使用新值重新执行 await/async/promise.all 函数
- python - ModuleNotFoundError:没有名为“global_state”的模块
- django - Django - 测试功能视图的 URL 时是否需要所有相关模型?
- java - 尝试安装 java2python 并不断收到以下错误消息:
- haxm - 英特尔 x86 仿真器加速器(HAXM 安装程序)无法安装:java.nio.file.FileSystemException: F:\sdk\.temp: 设备未准备好
- android - 外部驱动器上的 React-Native 应用程序仅适用于防火墙关闭