我误用了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}