具体来说,当我包含一个图形时,width=\linewidth
如果它的宽度大于,我希望它具有,但如果它的宽度小于线宽,\linewidth
我希望它具有。\scale=1
换句话说,如果我的图像不适合,我只想缩小它们。
我知道生成文档通常需要反复排版,但在创建不会发布的内部共享文档时,我并不太关心布局是否完美。我只希望第一次就做得不错,而不必担心反复排版。nally-share
答案1
\newcommand{\lwincludegraphics}[2][]{%
\sbox{0}{\includegraphics[#1]{#2}}%
\ifdim\wd0>\linewidth
\resizebox{\linewidth}{!}{\box0 }%
\else
\leavevmode\box0
\fi}
\lwincludegraphics
随意使用\includegraphics
。
(与 Werner 的答案的相似性是显而易见的,但有一个允许在可选参数中设置的适当命令更好。)
答案2
您可以在图形中使用以下条件:
\documentclass{article}
\usepackage[showframe]{geometry}% http://ctan.org/pkg/geometry
\usepackage{graphicx}% http://ctan.org/pkg/graphicx
\usepackage{xifthen}% http://ctan.org/pkg/xifthen
\begin{document}
\begin{figure}
\setbox0=\hbox{\includegraphics{tiger}}% Store image in box0
\ifthenelse{\dimtest{\wd0}>{\linewidth}}%
{\includegraphics[width=\linewidth]{tiger}}% Scale image to fit within \linewidth
{\usebox0}% Use original (unaltered in width) image
\caption{This is a tiger, rawr.}
\end{figure}
\end{document}
这geometry
包裹添加此设置只是为了通过showframe
包选项突出显示页面尺寸。老虎的实际图像宽度550.68999pt
> 430.004462pt
= \linewidth
。
您还可以将上述代码组合成一个宏。例如,考虑以下宏\maxwidth[<max hlen>]{<stuff>}
:
\newcommand{\maxwidth}[2][\linewidth]{% \maxwidth[<max hlen>]{<stuff>}
\setbox0=\hbox{#2}% Store image in box0
\ifthenelse{\dimtest{\wd0}>{#1}}%
{\resizebox{#1}{!}{#2}}% Scale object to fit within \linewidth
{\usebox0}% Use original (unaltered in width) object
}
第一个(可选)参数<max hlen>
指定对象的最大水平长度<stuff>
(第二个强制参数)。如果没有<max hlen>
指定,则默认值为\linewidth
。您可以按以下方式使用它:
\maxwidth{\includegraphics{tiger}}
这将产生与上面相同的输出