与图形/中心环境交互的垂直空间

与图形/中心环境交互的垂直空间

我误用了figure环境来插入一些垂直空间,现在尝试用 替换它center。但是,当我使用缩放框作为figure/center环境的内容时,这两个环境的行为不同center。 插入更多空间。有办法解决这个问题吗?

\documentclass{scrbook}          

\usepackage{lipsum}  

\usepackage{float}

\usepackage{graphicx}
\newcommand{\oneline}[1]{\resizebox{\ifdim\width>\linewidth\linewidth\else\width\fi}{!}{#1}}

\begin{document}               

\lipsum 
\lipsum[3-8]  

%\begin{center}
\begin{figure}[H]
\oneline{%
\begin{tabular}{|c|c|c|c|c|}\hline
  Prefield & T/C & \multicolumn{3}{|c|}{Sentence Field} \\ \hline
& & & Verbal Field & \\ \hline\hline
Om andre bisper \ldots & vides & ikke & & \\
(`whether other bishops ) & (`know.{\sc pres.pass}') & (`not') &&\\\hline
& om &  andre bisper& har & lignende planer \\
& (`whether') &  (`other bishops') & (`have) & (`similar plans') \\ \hline
\end{tabular}
}
\end{figure}
%\end{center}

\lipsum[3-10]  

\end{document}

答案1

主要问题是 的舍入误差\resizebox。如果\hfuzz设置为,则生成0pt所有超额警告:\hbox

Overfull \hbox (0.0093pt too wide) in paragraph at lines ...

然后您会得到一个空行,并且超出的部分\hbox会移动到下一行,从而导致表格上方出现更多的空白空间。

以下定义将\oneline舍入误差均匀地贡献给左右两侧。它还删除了内容前后的空格,因为问题中的示例\end{tabular}由于行尾而在其后有一个额外的空格。

\documentclass{scrbook}

\usepackage{lipsum}

\usepackage{graphicx}

\newcommand{\oneline}[1]{%
  \begingroup
    \sbox0{\ignorespaces#1\unskip}%
    \leavevmode
    \ifdim\wd0>\linewidth
      \hbox to\linewidth{%
        \hss\resizebox{\linewidth}{!}{\copy0 }\hss
      }%
    \else
      \copy0 %
    \fi
  \endgroup
}

\begin{document}
\lipsum[2]
\begin{center}
\oneline{%
\begin{tabular}{|c|c|c|c|c|}\hline
  Prefield & T/C & \multicolumn{3}{|c|}{Sentence Field} \\ \hline
& & & Verbal Field & \\ \hline\hline
Om andre bisper \ldots & vides & ikke & & \\
(`whether other bishops ) & (`know.{\sc pres.pass}') & (`not') &&\\\hline
& om &  andre bisper& har & lignende planer \\
& (`whether') &  (`other bishops') & (`have) & (`similar plans') \\ \hline
\end{tabular}%
}
\end{center}
\lipsum[2]
\end{document}

结果

相关内容