只在必要时缩小身材?

只在必要时缩小身材?

我正在写一份报告,其中我生成并包含了几张 TikZ 图片,我也想在我的 Beamer 演示文稿中使用这些图片。但是,报告中适合的部分图片(但不是全部)对于幻灯片来说太大了。因此,我想知道是否有任何包或宏可以在图片太大时将其缩小,但如果图片已经适合,则保留它。

如果答案仅适用于 TikZ,那也没关系。我不介意将文本和线条与整个图形一起缩小。

答案1

adjustbox包可用于缩放(或以其他方式调整)图像或任何其他内容,例如tikzpicture以多种方式缩放。您需要选项max size={<width>}{<height>},它可以完全满足您的要求,即仅当内容大于给定的宽度和/或高度时才缩小内容。它始终保持纵横比。

\usepackage{adjustbox}

% ..

\begin{adjustbox}{max size={.95\textwidth}{.8\textheight}}
  \begin{tikzpicture}
    % ..
  \end{tikzpicture}
\end{adjustbox}

这也适用于图像。此处可以使用相同的键\adjustimage

\adjustimage{max size={..}{..}}{<imagefilename>}

\includegraphics在内部使用,但将其包装在\adjustbox宏中。

答案2

也适用于错误地设置为宽度大于文本宽度的图像:

\documentclass{minimal} 
\usepackage{graphicx}
\newsavebox\IBox
\let\Includegrfx\includegraphics
\renewcommand\includegraphics[2][]{%
  \sbox\IBox{\Includegrfx[#1]{#2}}%
  \ifdim\wd\IBox>\textwidth\resizebox{\textwidth}{!}{\usebox\IBox}\else
                           \usebox\IBox\fi}
\parindent=0pt % for demo
\begin{document} 
\rule{\textwidth}{1pt}

\includegraphics[width=3\textwidth]{tiger}

\end{document}

相关内容