如果图形不适合页面,则 Latex 会换行分页

如果图形不适合页面,则 Latex 会换行分页

我在这个页面上找到了解决方案:关联

如果图形不适合,则允许分页,这是有效的。

但是数字后面出现了一行多余的线条,我不知道为什么,也不知道如何解决这个问题。

代码

\documentclass{article}
\usepackage[margin=2.5cm]{geometry}
\usepackage{graphicx}
\usepackage{wrapfig}
\usepackage{lipsum}
\usepackage{parskip}

\BeforeBeginEnvironment{wrapfigure}{\setlength{\intextsep}{0pt}}

\newsavebox\curwrapfig
\makeatletter
\long\def\wrapfiguresafe#1#2#3{
  \sbox\curwrapfig{#3}
  \par\penalty-100
  \begingroup
    \dimen@\pagegoal \advance\dimen@-\pagetotal
    \advance\dimen@-\baselineskip
    \ifdim \ht\curwrapfig>\dimen@
      \break%
    \fi%
  \endgroup%
  \begin{wrapfigure}{#1}{#2}
    \usebox\curwrapfig
  \end{wrapfigure}
}
\makeatother

\begin{document}
\lipsum[1-6]
\wrapfiguresafe{r}{0mm}{\centering\rule{3cm}{6cm}}
\lipsum[1-6]
\end{document}

截屏:

在此处输入图片描述

答案1

环境wrapfigure有两个可选参数,而您的包装宏不支持这两个参数,而且对wrapfigure宏的第二个强制参数的支持也不正确。以下是经过修改的实现,它应该可以正确实现一个包装器,该包装器既支持可选参数,又可以在第二个强制参数不等于时正确运行0pt

的第一个可选参数wrapfigure指定图形应产生多少条短线。以下将该参数设置为 14,这在您的示例中是正确的。

\documentclass{article}
\usepackage[margin=2.5cm]{geometry}
\usepackage{graphicx}
\usepackage{wrapfig}
\usepackage{lipsum}
\usepackage{parskip}

\BeforeBeginEnvironment{wrapfigure}{\setlength{\intextsep}{0pt}}

\ExplSyntaxOn
\cs_new_protected:Npn \ForwardOarg #1#2
  {
    \tl_if_eq:nnTF {#1} {#2}
      { \tl_clear:N \ProcessedArgument }
      { \tl_set:Nn \ProcessedArgument {[{#2}]} }
  }
\ExplSyntaxOff

\newsavebox\curwrapfig
\makeatletter
\NewDocumentCommand\wrapfiguresafe
  {>{\ForwardOarg{}}O{} m >{\ForwardOarg{}}O{} m m}
  {%
    \ifdim#4=\z@
      \sbox\curwrapfig{#5}%
    \else
    \sbox\curwrapfig{\parbox[b]{#4}{#5}}%
    \fi
    \par\penalty-100
    \begingroup
      \dimen@\pagegoal \advance\dimen@-\pagetotal
      \advance\dimen@-\baselineskip
      \ifdim \ht\curwrapfig>\dimen@
        \break
      \fi
    \endgroup
    \begin{wrapfigure}#1{#2}#3{#4}%
      \usebox\curwrapfig
    \end{wrapfigure}%
  }
\makeatother

\begin{document}
\lipsum[1-6]
\wrapfiguresafe[14]{r}{0mm}{\centering\rule{3cm}{6cm}}
\lipsum[1-6]
\end{document}

在此处输入图片描述

相关内容