我在演讲中使用了很多图片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
或与当前上下文相关的其他长度。)