如何使 wrapfigure-width 适应图像?

如何使 wrapfigure-width 适应图像?

在我的报告中,我使用了很多使用包 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}

生成的文档的图像

相关内容