textfloatsep 的局部作用域

textfloatsep 的局部作用域

我想知道您是否可以设置本地范围\textfloatsep。我发现Google 群组上的一个旧帖子,指出你不能这样做。

现在情况有改变吗?所以我想做的只是将\textfloatsep一个表设置为零,其余表不受影响。

编辑:我考虑过这个问题,有没有一种手动解决方案,可以在浮动之前将其设置为零,然后将其反转为原始值?

\documentclass[a4paper, 12pt, headsepline, headings=small,]{scrreprt}
\usepackage[onehalfspacing]{setspace}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{booktabs}
\usepackage[pangram]{blindtext}


\begin{document}

\chapter{Tables}

\Blindtext[1][1]
\begin{table}[!t]
\centering
\caption{Table caption} 
\fbox{X-Table}
\end{table}
\Blindtext[1][1]

\Blindtext[1][1]
\begin{table}[!t]
\centering
\caption{Table caption} 
\fbox{Y-Table}
\end{table}
\Blindtext[1][1]

\end{document}

答案1

您参考了\textfloatsep与页面顶部/底部的浮动相关的内容(请参阅如何改变图形/表格和文本之间的间距?),但您的示例没有包含类似的东西。但是,在使用时应考虑此长度的设置。如果您手动将其设置为0pt 一个数字,然后将其重置为默认值图形,希望它会影响该特定图形,您可能看不到预期的结果。这是因为长度仅在页面上设置图形时使用,此时您可能已恢复默认长度...

解决这个问题的一种方法是(这在很大程度上取决于你的页面/浮动配置)将长度设置为(比如说)0pt 浮点数,然后使用afterpage包裹将其重置为默认值。以下是此视图:

\usepackage{afterpage}% http://ctan.org/pkg/afterpage
\newlength{\oldtextfloatsep}\setlength{\oldtextfloatsep}{\textfloatsep}

% ...

\setlength{\textfloatsep}{0pt}% Remove \textfloatsep
\begin{table}[tb]
  % <your figure here>
  \afterpage{\global\setlength{\textfloatsep}{\oldtextfloatsep}}% Reset \textfloatsep
\end{table}

相关内容