使用以下文档编译会导致在环绕图标题上方出现不必要的垂直空间。删除软件包或用法的xelatex
包含可消除此问题。然而,这不是一个可行的解决方案。polyglossia
\centercaption
\documentclass{article}
\usepackage{polyglossia}
\usepackage{wrapfig}
\usepackage{caption}
\usepackage{lipsum}
\newcommand\centercaption{%
\captionsetup{format=plain,labelsep=newline,justification=centering}}
\begin{document}
\begin{wrapfigure}{r}{2cm}
\rule{2cm}{2cm}
\centercaption
\caption{test}
\end{wrapfigure}
\lipsum[1]
\end{document}
上述文件产生
没有polyglossia
间距是正确的:
有没有其他方法可以消除过多的垂直空间多于标题?请注意,设置要使用的行数wrapfigure
不会产生任何效果。
答案1
我不确定为什么polyglossia
在图形和标题之间添加了额外的空间,也许是一个错误。您可以\centercaption
在环境的开头使用wrapfigure
以防止它产生的额外空间。
顺便说一句,wrapfig
包的wrapfigure
环境有几个可选参数。第一个是它垂直占用的行数。例如:
\begin{wrapfigure}[8]{r}{2cm}
\centercaption
\rule{2cm}{2cm}
\caption{test}
\end{wrapfigure}
请参阅手册以wrapfig
了解更多选项和说明。
答案2
您看到的额外垂直空间是由于\@esphack
包中宏的重新定义造成fixltx2e
的(因此,显然用户 Leo Liu 说这是 polyglossia 的错误是错误的,polyglossia 加载了 fontspec,而 fontspec 加载了 fixltx2e)。\@esphack
latex.ltx 中的原始定义是:
\def\@esphack{%
\relax
\ifhmode
\spacefactor\@savsf
\ifdim\@savsk>\z@
\ignorespaces
\fi
\fi}
\@esphack
而对in的重新定义 fixltx2e
为:
\def\@esphack{%
\relax
\ifhmode
\spacefactor\@savsf
\ifdim\@savsk>\z@
\nobreak \hskip\z@skip % <------
\ignorespaces
\fi
\fi}
因此,您可以清楚地看到\nobreak \hskip\z@skip
导致额外的垂直空间。fixltx2e
软件包文档指出,这是由 Donald Arseneau 建议的,用于修复错误“浮动环境后第一个单词中没有连字符”(第 18 页)。
更新:实际的错误报告可以在这里找到这里。