将 tikzpicture 缩放到封闭的迷你页面

将 tikzpicture 缩放到封闭的迷你页面

如何修改以下代码,以便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}

相关内容