如何修改以下代码,以便tikzpicture 具有精确的宽度和高度minipage
包含它的精确宽度和高度(当然不改变文字坐标:))?
\begin{minipage}{2cm}
\begin{tikzpicture}
\draw (0,0) -- (4,0) -- (4,4) -- (0,4) -- (0,0);
\end{tikzpicture}
\end{minipage}
答案1
虽然\resizebox
将要缩放图片时,图片中的文本也会缩放。这通常是我们不希望看到的。
下面,我定义了\MyResizeBox
测量图片宽度的方法,然后以适当的比例生成图像,这样只有图形被缩放,而文本保持相同的大小
笔记:
- 我添加了一个
\fbox
,以便我们可以看到minipage
边界。 - 这
tabluar
只是为了让我能获得一张漂亮的图像并发布在这里——这与解决方案无关。 - 将其
tikzpicture
打包成宏以消除重复代码。
代码:
\documentclass{article}
\usepackage{tikz}
\usepackage{graphicx}
\newcommand*{\MyScale}{1}%
\newcommand*{\MyPicture}{%
\begin{tikzpicture}[scale=\MyScale]
\draw [ultra thick, blue] (0,0) -- (4,0) -- (4,4) -- (0,4) -- (0,0);
\node at (2,2) {Some text};
\end{tikzpicture}%
}%
\newcommand*{\MyResizeBox}[2]{%
\sbox0{#2}%
\pgfmathsetmacro{\MyScale}{#1/\wd0}%
#2%
}%
\begin{document}
\begin{tabular}{p{5.0cm} p{4.0cm} p{4.0cm}}
Original & \verb|\resizebox| & \verb|\MyResizeBox| \\
\fbox{%
\begin{minipage}{3cm}
\MyPicture%
\end{minipage}%
}%
&
\fbox{%
\begin{minipage}{3cm}
\resizebox{3.0cm}{3.0cm}{\MyPicture}%
\end{minipage}%
}%
&
\fbox{%
\begin{minipage}{3cm}
\MyResizeBox{3.0cm}{\MyPicture}%
\end{minipage}%
} \\%
\end{tabular}
\end{document}