如何从 width=\textwidth 开始增加图像的高度?

如何从 width=\textwidth 开始增加图像的高度?

我想知道是否可以将图像的宽度设置为\textwidth并增加最终高度而不影响宽度。

换句话说,width=\textwidth也将高度修改为保留图像的原始比例,我希望做的是从获得的高度开始增加图像的高度width=\textwidth

像这样:

\includegraphics[width=\textwidth, height=\obtainedHeight+10em]{image}

答案1

欢迎来到 TeX.SE!

人们通常喜欢保留图像的尺寸比例 :-),但是,如果喜欢扭曲它,那么你可以相应地定义图像高度:

  • 定义新的\savebox,例如\imagebox
  • 店内\imagebox图像宽度为\textwidth
  • 测量已保存图像的高度和深度
  • 使用\dimexpr宏按您的意愿改变图像的自然高度,参见下面的 MWE(最小工作示例):

在此处输入图片描述

\documentclass{article}
\usepackage{graphicx}
%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
\newsavebox\imagebox

\begin{document}
    \begin{figure}
\sbox\imagebox{\includegraphics[width=\linewidth]{example-image-duck}}
        \includegraphics[width=\linewidth,
                         height=\dimexpr\ht\imagebox+\dp\imagebox+10em\relax]{example-image-duck}
        \caption{My distorted duck}
        \label{fig:duck}
    \end{figure}
\end{document}

答案2

实现此目的的最简单方法是通过\resizebox,也由graphicx

\resizebox{\textwidth}{\dimexpr\height+10em}{%
  \includegraphics[width=\textwidth]{<image>}%
}

这是一个完整的例子:

在此处输入图片描述

\documentclass{article}

\usepackage{graphicx}

\begin{document}

\includegraphics[width=3em]{example-image} \quad
\includegraphics[width=3em,height=3em]{example-image} \quad
\includegraphics[width=3em,height=5em]{example-image} \quad
\resizebox{3em}{\dimexpr\height+2em}{%
  \includegraphics[width=3em]{example-image}%
}

\end{document}

答案3

我完全同意 Werner (+1) 的观点,但我想补充一些评论,这些评论太长了:

首先,在两列文档中,multicols环境、小页面等 width=\textwidth可能不是您想要的,因此改用 width=\linewidth其他方式更安全。

但是这个评论的重点是,你可能想要增加相对长度( \height即相对于图形宽度的长度),其长度是相对于字体大小的,这似乎很奇怪10em,因为这样变形的程度可能会因图像的宽度而不同(图形越窄,垂直拉伸越多),并且还可能通过之前某处的字体设置意外更改。

在下面的例子中,所有图像“A”,“B”,“C”和“图像”具有相同的尺寸和相同的代码...

\resizebox{\linewidth}{\dimexpr\height+10em}{%
\includegraphics[width=\linewidth]{example-image-a}}

... 第一个“A”的高度并没有增加一倍,但第二个“A”的高度几乎增加了三倍。

因此,只有在不是您想要的是,图像“B”和“C”的代码显示,的\dimexpr\height+10em可以\resizebox通过更简单的方式更改, x.x\height其中x.x是您想要增加的次数\height,或者更简单的是,使用\scalebox{1}[x.x]{...}而不是\resizebox。与“A”的代码不同,图像“B”和“C”将始终以相同的程度拉伸。

姆韦

\documentclass{article}
\usepackage{graphicx,multicol}
\parindent0pt
\begin{document}
\begin{multicols}{2}
\includegraphics[width=\linewidth]{example-image}
\includegraphics[width=\linewidth]{example-image}
\resizebox{\linewidth}{\dimexpr\height+10em}{\includegraphics[width=\linewidth]{example-image-a}}
\end{multicols}

\begin{multicols}{4}
\includegraphics[width=\linewidth]{example-image}
\includegraphics[width=\linewidth]{example-image}
\resizebox{\linewidth}{\dimexpr\height+10em}{\includegraphics[width=\linewidth]{example-image-a}}
\resizebox{\linewidth}{2.7\height}{\includegraphics[width=\linewidth]{example-image-b}}
\scalebox{1}[2.7]{\includegraphics[width=\linewidth]{example-image-c}}
\end{multicols}

\begin{multicols}{6}\tiny
\includegraphics[width=\linewidth]{example-image}
\includegraphics[width=\linewidth]{example-image}
\resizebox{\linewidth}{\dimexpr\height+10em}{\includegraphics[width=\linewidth]{example-image-a}}
\resizebox{\linewidth}{2.7\height}{\includegraphics[width=\linewidth]{example-image-b}}
\scalebox{1}[2.7]{\includegraphics[width=\linewidth]{example-image-c}}
\end{multicols}
\end{document}

\end{document}

相关内容