我希望有一个命令用于在图形中插入图像,其宽度由原始图像的尺寸或文本宽度(以较小者为准)决定。我希望避免图像过大,但又避免页面过满。不幸的是,手动操作不是一种选择。我在插入图形之前寻找了一种方法来获取图形的宽度,但目前还没有找到。类似于以下内容。
\usepackage{graphicx}
\newcommand{\newfigure}[1]{\begin{figure}[htbp]
\centering
\includegraphics[width=\ifnum\value{figwidth}<\textwidth {figwidth} \else {\textwidth}\fi]{#1}
\end{figure}}
答案1
adjustbox
这可以通过(加载)来完成graphicx
。该命令\maxsizebox
允许您对内容的尺寸设置上限。具体来说,
\maxsizebox{\textwidth}{!}{...}
保持宽度不变,除非它超出了\textwidth
,在这种情况下它会缩小到\textwidth
。
\documentclass{article}
\usepackage{adjustbox}
\begin{document}
\noindent
\maxsizebox{\textwidth}{!}{\includegraphics{example-image-duck}}\par
\bigskip
\noindent
\maxsizebox{\textwidth}{!}{\includegraphics[width=20cm]{example-image-duck}}\par
\end{document}
答案2
您可以使用adjustbox
该export
选项。示例使用 A5 纸,因此第一幅图像必须缩小。第三幅图像显示第二幅图像没有缩放。
如果图像非常大,您可能还需要使用max height
和keepaspectratio
。
\documentclass{article}
\usepackage[a5paper,showframe]{geometry}
\usepackage{graphicx}
\usepackage[export]{adjustbox}
\begin{document}
\begin{center}
\includegraphics[max width=\textwidth]{example-image}
\end{center}
\begin{center}
\includegraphics[max width=\textwidth]{example-image-1x1}
\end{center}
\begin{center}
\includegraphics{example-image-1x1}
\end{center}
\end{document}