在我的报告中,我使用了很多使用包 wrapfig 环绕文本的图形。
\begin{wrapfigure}{L}{0.30\textwidth}
\centering
\includegraphics{Image.pdf}
\end{wrapfigure}
为了全部我想要制作的图形,预期的图片已经具有完美的尺寸(我可能需要为它们设置一个缩放因子,但可以在 \includegraphics 行中使用 [scale=0.X] 来包含它)。为了便于理解,这些图像描绘了我使用 ChemDraw 绘制并保存为 PDF 的化学结构。我想按原样使用它们的尺寸,因为如果我使用“width=0.8\linewidth”,结构将不再“统一”(一个结构中的氮可能看起来比另一个结构中的氮大 20%,这我不想)。
因此,图像宽度会根据化学结构不断变化(这是好事)。但是,wrapfigure-width 非常僵硬,需要手动调整才能最好地适应每幅图像(这是坏事)。由于我有很多图,我想知道是否有办法让它更具动态性?我需要用什么来替换这行
\begin{wrapfigure}{L}{0.30\textwidth}
如何使用让 wrapfigure 自动调整到每张图片的宽度?非常感谢您的帮助!
答案1
您可以使用保存框并将所需内容(在您的情况下为图像)放入其中。随后,您可以测量框的宽度并将其用于环境的宽度参数wrapfigure
。最后,在wrapfigure
环境中,您可以显示框的实际内容 - 即:您的图像。
在这里,我将所有这些包装到一个新命令中,\wrapimage
该命令采用与相同类型的参数\includegraphics
,但将图像显示为wrapfigure
:
\documentclass{scrartcl}
\usepackage{wrapfig}
\usepackage{duckuments}
\usepackage{xparse}
\usepackage{graphicx}
% Before usage, the savebox has to be declared/created
\newsavebox{\imageHolder}
% Use as \wrapimage{image} or e.g. \wrapimage[scale=2]{image}
\NewDocumentCommand{\wrapimage}{ O{} m }{
% Typeset the image into the savebox
\sbox{\imageHolder}{\includegraphics[#1]{#2}}
% Pass the box's width to wrapfigure
\begin{wrapfigure}{L}{\wd\imageHolder}
% Dump the contents of the box into the document as
% if the box's content had been added here all along
\usebox{\imageHolder}
\end{wrapfigure}
}
\begin{document}
\wrapimage{example-image-duck}
\blindduck[full=true]
\end{document}