标题规则不与环绕图重叠

标题规则不与环绕图重叠

我已将我的分段定义如下:

\documentclass{article}
\usepackage{titlesec,xcolor,wrapfig,lipsum}
\definecolor{titelkleur}{HTML}{92D851}
\titleformat{\section}
 {\fontsize{28}{32}\sffamily\bfseries\raggedright}%\underline
 {}
 {-0.5cm}
 {\textcolor{titelkleur}{Knoop\thesection:} 
\hspace{3pt}\textcolor{titelkleur}}
                   [\color{titelkleur}\titlerule]%\vspace{-3ex}\color{titelkleur}\rule{.5\columnwidth}{2pt}]
\begin{document}
\section{test}
\begin{wrapfigure}{l}{.3\textwidth}
\rule{3.5cm}{12cm}
\caption{emptyfigure}
\end{wrapfigure}
\lipsum[1]
\section{section with line crossing wrapfigure}
\end{document}

但是当章节标题位于环绕图旁边时,标题规则会与图重叠。有什么方法可以阻止这种情况发生吗?

答案1

可以将其放入\sectionminipage 中,但这会导致另外两个问题。首先,minipage 将被视为一行文本,使 wrapfigure 误以为它只是\baselineskip高度。(每次更改字体大小或添加额外空间时,这仍然是一个问题。)通过添加大量假行来弥补,解决了这个问题。

第二个问题是的效果\@afterheading丢失了。简单的解决方法是添加\noindent到下一行文本。

\documentclass{article}
\usepackage{titlesec,xcolor,wrapfig,lipsum}
\definecolor{titelkleur}{HTML}{92D851}
\titleformat{\section}
 {\fontsize{28}{32}\sffamily\bfseries\raggedright}%\underline
 {}
 {-0.5cm}
 {\textcolor{titelkleur}{Knoop\thesection:} 
\hspace{3pt}\textcolor{titelkleur}}
                   [\color{titelkleur}\titlerule]%\vspace{-3ex}\color{titelkleur}\rule{.5\columnwidth}{2pt}]

\newcommand{\wrapspacer}[1]% #1 = special text
{\ifhmode\par\fi\leavevmode\bgroup
  \sbox0{\begin{minipage}{\linewidth}\hrule height0pt
    #1\hrule height0pt
    \end{minipage}}%
  \dimen0=\dimexpr \ht0+\dp0\relax
  \loop\ifdim\dimen0>\baselineskip
    \strut\vspace{-\baselineskip}\newline
    \advance\dimen0 by -\baselineskip
  \repeat
  \noindent\usebox0
  \hrule height0pt
\egroup}

\begin{document}
\section{test}
\begin{wrapfigure}{l}{.3\textwidth}
\rule{3.5cm}{12cm}
\caption{emptyfigure}
\end{wrapfigure}
\lipsum[1]
\wrapspacer{\section{section with line crossing wrapfigure}}
\noindent\lipsum[2]
\end{document}

答案2

此答案\titlerule在节标题格式的定义中用替换\rule{\linewidth}。现在规则的长度与线宽成比例。

为了让文本尊重项目的位置wrapfig,它被放置在 中adjustboxadjustbox定义为框前后的间距,vspace=\parskip并设置为 ,minipage宽度等于\linewidth。 wrapfig 的末尾定义为strut{},否则文本换行结束得太晚(即,允许图像的空间太大)。

lipsumblindtext段落来替换以设置更小的文本块,这更好地说明了环绕图形的文本。

结果如下:

在此处输入图片描述

这是 MWE:

\documentclass[a4paper]{article}
\usepackage[margin=2.5cm]{geometry}
\usepackage[english]{babel}
\usepackage[pangram]{blindtext}
\usepackage{titlesec,xcolor,wrapfig,adjustbox}
\definecolor{titelkleur}{HTML}{92D851}
\titleformat{\section}
 {\fontsize{28}{32}\sffamily\bfseries\raggedright}%\underline
 {}
 {-0.5cm}
 {\textcolor{titelkleur}{Knoop\thesection:} 
\hspace{3pt}\textcolor{titelkleur}}
%                   [\color{titelkleur}\titlerule]%\vspace{-3ex}\color{titelkleur}\rule{.5\columnwidth}{2pt}] 
                    [\color{titelkleur}\rule{\linewidth}{0.4mm}]    

\begin{document}
\section{test}
\begin{adjustbox}{
        vspace=\parskip,
        minipage=[c]{1.0\linewidth}
    }
\begin{wrapfigure}{l}{.3\linewidth}
\centering \rule{3.5cm}{8cm} 
\caption{emptyfigure}
\end{wrapfigure}
\strut{}        % This defines the end of the wrapfigure. It is required to get the correct linewidth for the rule under the heading
\Blindtext[1][10]
\section{section with line crossing wrapfigure}
\Blindtext[1][10]
\end{adjustbox} % place \end{adjustbox} at an appropriate place to end wrapping
\Blindtext[1][10]
\end{document}

相关内容