17

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

\includegraphics[width=\textwidth]{img}

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

\ifthenelse{\imagewidth > \textwidth}{%
    \includegraphics[width=\textwidth]{img}}{%
    \includegraphics{img}}
4

5 回答 5

22

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

\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}

我希望这有帮助!

于 2008-09-23T19:20:58.213 回答
1

我喜欢一个附加参数,可以选择缩小或放大图像,所以我的 \scalegraphics 版本如下所示:

\newcommand\scalegraphics[2][]{%
    \settowidth{\imgwidth}{\includegraphics{#2}}%
    \setlength{\imgwidth}{\minof{#1\imgwidth}{\textwidth}}%
    \includegraphics[width=\imgwidth]{#2}%
}
于 2011-04-20T15:33:26.207 回答
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}

如果您使用exportpackage 选项,它的大部分密钥都可以直接与\includegraphics. 例如与您相关的密钥,max width.

于 2013-07-28T14:54:12.703 回答
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正如 ted 所建议的那样:

\usepackage{adjustbox}
...
\adjustbox{max width=\linewidth}{\input{standalone}}
于 2019-02-05T10:31:51.073 回答
-4

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

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

编辑:我错了,见上文。

于 2008-09-23T18:02:21.677 回答