我已将我的分段定义如下:
\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
可以将其放入\section
minipage 中,但这会导致另外两个问题。首先,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
,它被放置在 中adjustbox
。adjustbox
定义为框前后的间距,vspace=\parskip
并设置为 ,minipage
宽度等于\linewidth
。 wrapfig 的末尾定义为strut{}
,否则文本换行结束得太晚(即,允许图像的空间太大)。
我lipsum
用blindtext
段落来替换以设置更小的文本块,这更好地说明了环绕图形的文本。
结果如下:
这是 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}