将章节标题环绕在图片周围

将章节标题环绕在图片周围

我有一份双面文档,想添加一些环绕图。具体做法是我想在左页上环绕章节标题。

这个例子展示了第二部分的问题。第一和第三部分一切正常。

梅威瑟:

    \documentclass[12pt,a4paper,twoside,openright]{scrbook}

    \usepackage{wrapfig}
    \usepackage{graphicx}
    \usepackage{caption}
    \usepackage[english]{babel}
    \usepackage{blindtext}

    \begin{document}
        \chapter{First Chapter}
        \section{First Section}
        \begin{wrapfigure}[14]{o}{0.4\linewidth}
            \begin{center}
                \includegraphics[width=0.75\linewidth]{picture}
            \end{center}
            \vspace*{-1em}
            \captionsetup{width=0.75\linewidth}
            \caption[short]{long.}
        \end{wrapfigure}

        \blindtext[5]


        \section{Second Section}
        \begin{wrapfigure}[14]{o}{0.4\linewidth}
            \begin{center}
                \includegraphics[width=0.75\linewidth]{picture}
            \end{center}
            \vspace*{-1em}
            \captionsetup{width=0.75\linewidth}
            \caption[short]{long.}
        \end{wrapfigure}

        \blindtext

        \section{Third Section}
        \begin{wrapfigure}[14]{o}{0.4\linewidth}
            \begin{center}
                \includegraphics[width=0.75\linewidth]{picture}
            \end{center}
            \vspace*{-1em}
            \captionsetup{width=0.75\linewidth}
            \caption[short]{long.}
        \end{wrapfigure}

        \blindtext

    \end{document}

结果:

enter image description here

答案1

您想要获得的东西不可能仅通过 来实现wrapfigure。因为解决方案可以将章节标题括入\parbox

enter image description here

\documentclass[12pt,a4paper,twoside,openright]{scrbook}

\usepackage{wrapfig}
\usepackage[demo]{graphicx}
\usepackage{caption}
\usepackage[english]{babel}
\usepackage{blindtext}

\usepackage{refcount}
\newcounter{secalign}
\newcommand{\secmove}{
    \refstepcounter{secalign}
    \label{secmove-\thesecalign}
    \mbox{}\par\noindent%
    \ifodd\getpagerefnumber{secmove-\thesecalign}
        \parbox{#1}{#2}
    \else
        \hfill\parbox{#1}{#2}
    \fi}

\begin{document}
    \chapter{First Chapter}
    \secmove{0.58\linewidth}{\section{First Section}}
    \begin{wrapfigure}[11]{o}{0.4\linewidth}
        \centering
            \includegraphics[width=0.75\linewidth]{picture}
        \captionsetup{skip=0.5ex, width=0.75\linewidth}
        \caption[short]{long.}
    \end{wrapfigure}
    \blindtext[5]

    \secmove{0.58\linewidth}{\section{Second Section}}
    \begin{wrapfigure}[11]{o}{0.4\linewidth}
        \centering
            \includegraphics[width=0.75\linewidth]{picture}
         \captionsetup{skip=0.5ex, width=0.75\linewidth}
        \caption[short]{long.}
    \end{wrapfigure}
    \blindtext

    \secmove{0.58\linewidth}{\section{Third Section}}
    \begin{wrapfigure}[11]{o}{0.4\linewidth}
        \centering
            \includegraphics[width=0.75\linewidth]{picture}
        \captionsetup{skip=0.5ex, width=0.75\linewidth}
        \caption[short]{long.}
    \end{wrapfigure}
    \blindtext[2]
\end{document}

上述代码中的解决方案知道各部分的标题位于哪一页(奇数页还是偶数页),但是它需要至少编译两次。

注意:您声称部分位置正确,实际上是由于错误wrapfigure设置而意外发生的(您声明它使用与图旁的文本相同的更多行号),

除此之外,我还对您的代码做了以下(题外话)更改:

  • 广告\captionsetup选项skip=0.5ex和删除\vspace*{-1em}全部wrapfigure
  • 替换\begin{centering}\centering,并以此删除图像上方和下方的额外垂直空间
  • 擦除\end{centering}
  • wrapfigure删除和(或真实文本)之间的空行\blindtext。这很重要,因为将其括起来sectionsparbox失去删除parindent以下文本的能力。

相关内容