缩小图像,但不能用胶乳

时间:2008-09-23 17:07:32

标签: latex

我有一个包含includegraphics命令的命令 - 我可以将图像传递给我的命令,它会在实际包含图像之前为我做一些标准格式化。我通过此命令包含的一些图像小于\ textwidth,而有些则更大。我想将较大的图像缩小到\ textwidth,而不是缩小较小的图像 - 这意味着我不能只做

\includegraphics[width=\textwidth]{img}

有没有办法指定最大宽度?或者,我可以以某种方式获得图像的宽度,以便我可以执行类似

的操作
\ifthenelse{\imagewidth > \textwidth}{%
    \includegraphics[width=\textwidth]{img}}{%
    \includegraphics{img}}

5 个答案:

答案 0 :(得分:18)

要获得图像的宽度,您可以使用以下代码:

\newlength{\imgwidth}
\settowidth{\imgwidth}{\includegraphics{img}}

您可以在文档前言中使用它来创建一个自动设置宽度的新命令:

\usepackage{graphicx}
\usepackage{calc}

\newlength{\imgwidth}

\newcommand\scalegraphics[1]{%   
    \settowidth{\imgwidth}{\includegraphics{#1}}%
    \setlength{\imgwidth}{\minof{\imgwidth}{\textwidth}}%
    \includegraphics[width=\imgwidth]{#1}%
}

然后,在您的文档中:

\scalegraphics{img}

我希望这有帮助!

答案 1 :(得分:1)

我喜欢另外一个参数,可选择向下或向上缩放图像,所以我的\ scalegraphics版本如下所示:

\newcommand\scalegraphics[2][]{%
    \settowidth{\imgwidth}{\includegraphics{#2}}%
    \setlength{\imgwidth}{\minof{#1\imgwidth}{\textwidth}}%
    \includegraphics[width=\imgwidth]{#2}%
}

答案 2 :(得分:0)

adjustbox包对此非常有用。下面你会看到一个简短的例子。它允许以下(除了修剪,剪裁,添加边距和相对缩放:

\documentclass[a4paper]{article}


\usepackage[demo]{graphicx}
\usepackage[export]{adjustbox}

\begin{document}

\adjustbox{max width=\linewidth}{\includegraphics[width=.5\linewidth,height=3cm]{}}

\adjustbox{max width=\linewidth}{\includegraphics[width=2\linewidth,height=3cm]{}}

\includegraphics[width=2\linewidth,height=3cm,max width=\linewidth]{}
\end{document}

如果您使用export套餐选项,则其大多数密钥都可以直接与\includegraphics一起使用。在实例中,与您相关的密钥max width

答案 3 :(得分:0)

如果您要约束的不是图像而是独立的.tex文件,则可以将ChrisN的\scalegraphics稍微修改为

\newlength{\inputwidth}
\newcommand\maxwidthinput[2][\linewidth]{%   
    \settowidth{\inputwidth}{#2}%
    \setlength{\inputwidth}{\minof{\inputwidth}{#1}}%
    \resizebox{\inputwidth}{!}{#2}
}

然后像这样使用它

\maxwidthinput{\input{standalone}}
\maxwidthinput[0.5\textwidth]{\input{standalone}}

当然,泰德建议的adjustbox也可以使用:

\usepackage{adjustbox}
...
\adjustbox{max width=\linewidth}{\input{standalone}}

答案 4 :(得分:-3)

在搜索CTAN手册和谷歌搜索结果几分钟后,我想我可以肯定地说,你想要做的事情要么是不可能的,要么是非常困难的。我唯一的建议是你有两个命令,一个用于小图像,一个用于大图,或一个带有选项的命令。

可能有办法,但我把它留给其他S.O. LaTeX向导提供了更好的答案。

编辑:我错了,见上文。