\textwidth、\textheight 和 keepaspectratio 的宏

\textwidth、\textheight 和 keepaspectratio 的宏

我在演讲中使用了很多图片beamer。不知为何,我厌倦了这样写:

\begin{figure}
    \includegraphics[width=0.8\textwidth,height=0.8\textheight,keepaspectratio]{source}
\end{figure}

它运行良好,可以完成我想要的工作,但我想少写一些代码:-))例如:

\begin{figure}
    \includegraphics[shrink=0.8]{source}
\end{figure}

是的,我知道,scale但它是相对于图像大小起作用的,但不是(我想要的)相对于页面大小...有没有一种轻量级且真正的方法来实现这一点?

答案1

您可以定义自己的包含命令,如下所示:

\documentclass{beamer}
\newcommand{\mycommand}[1]{\includegraphics[width=0.8\textwidth,height=0.8\textheight,keepaspectratio]{#1}}

\begin{document}

\begin{frame}
\begin{figure}
    \mycommand{source}
\end{figure}
\end{frame}

\end{document}

编辑:Claudio Fiandrino

为了能够使用自定义值缩小图像,可以进行如下微小的更改\mycommand

\documentclass{beamer}
\usepackage{lmodern}
\usepackage{mwe}% for dummy images
% mycommand:
% #1: optional -> "shrink" value (default value to 0.8)
% #2: mandatory -> image
\newcommand{\mycommand}[2][0.8]{\includegraphics[width=#1\textwidth,height=#1\textheight,keepaspectratio]{#2}}

\begin{document}

\begin{frame}
\begin{figure}% notice that in Beamer having floating figures is not necessary
  \mycommand[0.1]{example-image}~\mycommand[0.2]{example-image}~\mycommand[0.4]{example-image}
\end{figure}
\end{frame}

\end{document}

结果:

在此处输入图片描述

答案2

您可以使用

 \setkeys{Gin}{width=0.8\textwidth,height=0.8\textheight,keepaspectratio}

并将适用于以下所有\includegraphics


如果你想让它通过参数进行参数化,那么最简单的方法就是观察你使用的键是如何定义的

\define@key{Gin}{width}{\def\Gin@ewidth{#1}}
\define@key{Gin}{height}{\def\Gin@eheight{#1}}
\define@key{Gin}{keepaspectratio}[true]{%
  \lowercase{\Gin@boolkey{#1}}{iso}}

所以你需要的是

\makeatletter
 \define@key{Gin}{myscale}{%
       \def\Gin@ewidth{#1\linewidth}%
       \def\Gin@eheight{#1\textheight}%
       \Gin@isotrue}
\makeatother

然后myscale=0.8 执行您所要求的操作(\linewidth将是\textwidth\columnwidth或与当前上下文相关的其他长度。)

相关内容