由于老师和队友看不顺眼LaTeX中浮动体前后的间距,想改变图表浮动体与前后文字的间距

MWE如下:

\documentclass{ctexart}

\begin{document}

啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

\begin{figure}[htbp]

\centering

我是图片

\caption{啊}

\end{figure}


啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

\begin{table}[htbp]

\centering

\caption{啊}

我是表格

\end{table}


啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

\end{document}

效果如下:

YK[AFXPT704J97XKBORYU`N.png

想实现图中4位置的间距不变,1、2、3处的间距归零。

4 回答4

2
<p></p><p>% 以下几个长度寄存器会影响浮动体的距离:</p><p>%</p><p>%&nbsp; &nbsp;\floatsep: space left between floats (12.0pt plus 2.0pt minus 2.0pt).</p><p>%&nbsp; &nbsp;\textfloatsep: space between last top float or first bottom float and the text (20.0pt plus 2.0pt minus 4.0pt).</p><p>%&nbsp; &nbsp;\intextsep : space left on top and bottom of an in-text float (12.0pt plus 2.0pt minus 2.0pt).</p><p>%&nbsp; &nbsp;\dbltextfloatsep is \textfloatsep for 2 column output (20.0pt plus 2.0pt minus 4.0pt).</p><p>%&nbsp; &nbsp;\dblfloatsep is \floatsep for 2 column output (12.0pt plus 2.0pt minus 2.0pt).</p><p>%&nbsp; &nbsp;\abovecaptionskip: space above caption (10.0pt).</p><p>%&nbsp; &nbsp;\belowcaptionskip: space below caption (0.0pt).</p><p>%&nbsp; &nbsp;因此,可以根据需要对这些值用\setlength、\addtolength等命令进行修改,如:</p><p>\setlength{\abovecaptionskip}{2pt plus 0.2pt minus 0.3pt}</p><p><br/></p><p>% 浮动体前后的距离也可以用\vskip,\vspace进行调整,为了便于统一调整可以使用etoolbox宏包为环境打补丁,如:</p><p><br/></p><p>\usepackage{etoolbox} % 载入宏包</p><p><br/></p><p>\BeforeBeginEnvironment{figure}{\vskip-1ex}</p><p>\AfterEndEnvironment{figure}{\vskip-2ex}</p><p>\BeforeBeginEnvironment{table}{\vskip-1ex}</p><p>\AfterEndEnvironment{table}{\vskip-2ex}</p><p><br/></p><p>你可以根据你的需求,调整这些值,直到老师和队友满意为止。只是如果你用的是模板,这些就不要随意调整了,模板是什么就是什么,你老师和队友应该接受模板的设定才对。</p><p></p>

作者追问:2019-08-26 15:27

尝试了一下您说的方法,我发现会有些地方会出错,MWE如下:

\documentclass{ctexart}
\usepackage{zhlipsum}
\usepackage{etoolbox}
\BeforeBeginEnvironment{figure}{\vskip-5ex}
\begin{document}
\zhlipsum[1-2]
\begin{figure}[htbp]
\centering
\zhlipsum[1]
\caption{图}
\end{figure}
\zhlipsum[1]
\end{document}

效果如下:

MAP_9H5W]H0AZZBSPP{3B6G.png

即在浮动体在下一页时,\vskip命令使得文本部分重叠

  • 为什么浮动体前后的间距明显不一样确都要用同一个参数intextsep来描述和调整啊 – 青莲剑仙 2020-01-04 11:52 回复
  • 谢谢!我用的是自己开发的模板,只能不断调试让老师和队友满足了 – sikouhjw 2019-08-26 14:58 回复
0
<p>修改\floatsep、\textfloatsep 和 \intextsep 这三个长度。</p><p>这三个长度都是橡皮长度,意义分别是:</p><p>\floatsep : 出现在页面顶底部浮动体之间的距离。</p><p>\textfloatsep: 出现在页面顶部或底部的浮动体与文本之间的距离。</p><p>\intextsep: 出现在文本中间(h 选项)的浮动体与上下文文本之间的距离。</p><p><br></p><p>对于浮动页⾯中的浮动体间距,要修改\@fptop 、\@fpsep、 \@fpbot 三个长度。</p><p><br></p><p><br></p>
0
<p>唉……有问题的老师不少……</p>
0
提问中圈出的四个纵向间距, * 第 1 个 = `\intextsep` * 第 2 个 = `\intextsep + \belowcaptionskip + <正常行距>` * 第 3 个 = `\intextsep + \abovecaptionskip` * 第 4 个 = `\intextsep + <正常行距>` > 想实现图中4位置的间距不变,1、2、3处的间距归零。 - 在实践上,我觉得这个需求是离奇的。 - 在实现上,见下面的例子 ```tex \documentclass{ctexart} \makeatletter \newlength{\intextsep@default} \setlength{\intextsep@default}{\intextsep} \setlength{\intextsep}{0pt} \setlength{\abovecaptionskip}{0pt} \newlength{\textlinesep} \newcommand\removeTextLineSep{% \setlength{\textlinesep}{\dimexpr\baselineskip-\f@size pt\relax}% \vskip-\textlinesep } \newcommand{\restoreInTextSep}{% \vskip\intextsep@default } \makeatother \begin{document} 啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊 \begin{figure}[htbp] \centering 我是图片 \caption{啊} \removeTextLineSep \end{figure} 啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊 \begin{table}[htbp] \centering \caption{啊} 我是表格 \restoreInTextSep \end{table} 啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊 \end{document} ``` ![](https://pics.latexstudio.net/data/images/202003/15aac301c45f035.png) 如果使用了 `caption` 宏包,要注意使用宏包选项 `strut=off`,参见 - [CTeX-org/forum/issues/86 如何控制浮动体与前后文的间距? ](https://github.com/CTeX-org/forum/issues/86#issuecomment-570803581)

你的回答

请登录后回答

你的回答将会帮助更多人,请务必认真回答问题。