使用 floatrow 来包装图形和 fbox

使用 floatrow 来包装图形和 fbox

我是 Latex 的新手,仍在修改示例代码的阶段,所以也许有更好的方法可以做到这一点,或者我只是错过了一些东西。我有 3 个子图,我想让它们堆叠在一个漂亮的小列中,文本环绕在它们周围。我还想在整个东西周围放一个框。我对所有其他图形都使用 floatrow(到目前为止)。

在我的单行图像中,wrapfigure 和 floatrow 工作正常,但当我尝试使用 subfloatrow 堆叠图像时,出现了奇怪的行为。这取决于我在 wrapfigure 之前和/或之后是否有文本,但这里有一个例子:

在此处输入图片描述

我不需要它正好位于该段落之后,我只是希望它位于附近的某个地方。因此,在这种情况下,除了正确地将它向左移动到它所形成的洞中之外,理想情况下我还希望 wrapfigure 将它向上推。

另外,我一直使用 fbox 在我的图形组周围放置一个框,但如果我在这里尝试这样做,它会将它们放回到水平行中。

我该如何做这两件事?将文本环绕在堆叠的子图周围,并在其周围放置一个框。

\documentclass[11pt]{amsart}

\usepackage{graphicx}
\usepackage{caption}
\usepackage{floatrow}
\DeclareFloatVCode{largevskip} 
{\vskip 20pt}
\floatsetup[figure]{style=plain,capbesideposition={inside,center},floatrowsep=qquad,capbesidesep=quad,subfloatrowsep=qquad,rowpostcode =largevskip}
\captionsetup[figure]{font=small}
\usepackage{subfig}
\usepackage{wrapfig}

\usepackage{lipsum}

\begin{document}

\lipsum[1-2]

\begin{wrapfigure}{r}{0.4\textwidth}
%\begin{figure}
\ffigbox[\FBwidth]
%    {\setlength\fboxsep{4pt} \fbox
        {\begin{subfloatrow}
            \ffigbox[\FBwidth]
                {\includegraphics[width=\textwidth]{example-image-a}}
                {\caption{Subcaption 1}\label{sfig:ex1}}
        \end{subfloatrow}

        \begin{subfloatrow}
            \ffigbox[\FBwidth]
                {\includegraphics[width=\textwidth]{example-image-a}}
                {\caption{Subcaption 2}\label{sfig:ex2}}
        \end{subfloatrow}

        \begin{subfloatrow}
            \ffigbox[\FBwidth]
                {\includegraphics[width=\textwidth]{example-image-a}}
                {\caption{Subcaption 3}\label{sfig:ex3}}
        \end{subfloatrow}}
%    }
    {\caption{asdf!} \label{fig:ex}}
\end{wrapfigure}
%\end{figure}

\lipsum[3-4]

\end{document}  

答案1

我建议先看一下这个:LaTeX 中 wrapfig 图片的处理

您会注意到,有时您需要手动放置wrapfigure环境,尤其是在有分页符的情况下。这实际上意味着您必须找到“正确”的位置来放置您的图形。

接下来,我将为您的文档提供一个示例。我将序言中的三行灰显,但您可以根据需要进行修改。首先请注意,我已将其更改\lipsum[1-2]\lipsum[1-1]使图形保持在同一页上并在页边距内(~我所说的手动放置)。或者,先放置图形,然后再放置文本。例如\begin{wrapfigure}...\end{wrapfigure}.. text...

您还可以尝试在环境中使用R而不是来使图形浮动。第二个可选参数指定图形可以在边距中伸出多少。通过设置它,它将保持在边距内。最后,我将图形的宽度设置为,并在 内更改了宽度。rwrapfigure0pt0pt\includegraphics

为了使所有子浮点数在一个盒子内垂直,我只使用了一个tabular环境和\fbox

可能还有其他方法可以做到这一点,例如使用cutwin包,但我从未使用过它。

\documentclass[11pt]{amsart}

\usepackage{graphicx}
\usepackage{caption}
\usepackage{floatrow}
%\DeclareFloatVCode{largevskip} 
%{\vskip 20pt}
%\floatsetup[figure]{style=plain,capbesideposition={inside,center},floatrowsep=qquad,capbesidesep=quad,subfloatrowsep=qquad,rowpostcode =largevskip}
\captionsetup[figure]{font=small}
\usepackage{subfig}
\usepackage{wrapfig}

\usepackage{lipsum}

\begin{document}

\lipsum[1-1]

\begin{wrapfigure}{r}[0pt]{0pt}
\ffigbox[\FBwidth]
\fbox{
   {\begin{tabular}{c}
     \begin{subfloatrow}
        \ffigbox[\FBwidth]
            {\includegraphics[width=.4\textwidth]{example-image-a}}
            {\caption{Subcaption 1}\label{sfig:ex1}}
    \end{subfloatrow}\\

    \begin{subfloatrow}
        \ffigbox[\FBwidth]
            {\includegraphics[width=.4\textwidth]{example-image-a}}
            {\caption{Subcaption 2}\label{sfig:ex2}}
    \end{subfloatrow}\\

    \begin{subfloatrow}
        \ffigbox[\FBwidth]
            {\includegraphics[width=.4\textwidth]{example-image-a}}
            {\caption{Subcaption 3}\label{sfig:ex3}}
    \end{subfloatrow}      
   {\caption{asdf!} \label{fig:ex}}%
     \end{tabular}}
 }
\end{wrapfigure}

\lipsum[3-4]

在此处输入图片描述

答案2

只是为了好玩。这是将包装图拆分成跨页的一种方法。您也可以使用两个包装图来实现这一点,但很可能每个图都必须放在段落的中间。

\documentclass[11pt]{amsart}

\usepackage{graphicx}
\usepackage{subcaption}
\usepackage{floatrow}
\DeclareFloatVCode{largevskip} 
{\vskip 20pt}
\floatsetup[figure]{style=plain,capbesideposition={inside,center},floatrowsep=qquad,capbesidesep=quad,subfloatrowsep=qquad,rowpostcode =largevskip}
\captionsetup[figure]{font=small}
\usepackage{paracol}
\usepackage{lipsum}

\newcommand{\nopar}{\bgroup\parfillskip=0pt\par\egroup}
\makeatletter
\newcommand{\setcaptype}[1]{\def\@captype{#1}}
\makeatother

\begin{document}

\lipsum[1-2]

Nam dui ligula, fringilla a, euismod sodales, 
sollicitudin vel, wisi. Morbi auctor
lorem non justo. Nam lacus libero, pretium
at, lobortis vitae, ultricies et, tellus. Donec
aliquet, tortor sed accumsan bibendum, erat
ligula aliquet magna, vitae ornare odio metus
a mi. Morbi ac orci et nisl hendrerit mollis. 
Suspendisse ut massa. Cras nec ante.
Pellentesque a nulla. \nopar

\columnratio{0.6,0.4}%
\begin{paracol}{2}
\switchcolumn
  \bgroup
  \parindent=0pt
  \setcaptype{figure}%
  \vfill
  \begin{subfigure}{\columnwidth}
    \includegraphics[width=\textwidth]{example-image-a}
    \caption{Subcaption 1}\label{sfig:ex1}
  \end{subfigure}

  \begin{subfigure}{\columnwidth}
    \includegraphics[width=\textwidth]{example-image-a}
    \caption{Subcaption 2}\label{sfig:ex2}
  \end{subfigure}

  \begin{subfigure}{\columnwidth}
    \includegraphics[width=\textwidth]{example-image-a}
    \caption{Subcaption 3}\label{sfig:ex3}
  \end{subfigure}
  \caption{asdf!} \label{fig:ex}
  \vfill
  \egroup
\switchcolumn
\sloppy
\noindent 
Cum sociis natoque
penatibus et magnis dis parturient montes,
nascetur ridiculus mus. Aliquam tincidunt
urna. Nulla ullamcorper vestibulum turpis.
Pellentesque cursus luctus mauris.

\lipsum[3]

Nulla malesuada porttitor diam. Donec
felis erat, congue non, volutpat at, 
tincidunt tristique, libero. Vivamus viverra
fermentum felis. Donec nonummy pellentesque 
ante. Phasellus adipiscing semper
elit. Proin fermentum massa ac quam. Sed
diam turpis, molestie vitae, placerat a, 
molestie nec, leo. Maecenas lacinia. Nam 
ipsum ligula, eleifend at, accumsan nec, 
suscipit a, ipsum. Morbi blandit ligula feugiat\nopar
\end{paracol}
\noindent
magna. Nunc eleifend consequat lorem. Sed
lacinia nulla vitae enim. Pellentesque 
tincidunt purus vel magna. Integer non enim.
Praesent euismod nunc eu purus. Donec
bibendum quam in tellus. Nullam cursus
pulvinar lectus. Donec et mi. Nam vulputate 
metus eu enim. Vestibulum pellen-
tesque felis eu massa.

\lipsum[4]

\end{document} 

相关内容