我使用 XeTeX 版本 3.14159265-2.6-0.99992 (TeX Live 2015/W32TeX)。我正在排版一本带有大量长表的 sloppypar 的书。我遵循此主题使用\LTpre
并\LTpost
减少长表前后的间距。我仍然面临三个问题:
1) 设置\LTpre
为 0pt 会导致长表前的空间小于行距。2) 设置\LTpost
为 0pt 会导致长表后的空间大于行距。3) 一些长表需要完全以粗体排版。为此,我将整个长表放在 \textbf{} 中。这会增加表格前的一些额外空间,如果没有粗体,这些空间就不会存在
这是 MWE
\documentclass[12pt]{book}
\usepackage{ragged2e}
\raggedbottom
\usepackage{polyglossia}
\usepackage{longtable}
\usepackage{lipsum}
\setlength{\LTpre}{0pt}
\setlength{\LTpost}{0pt}
\begin{document}
\begin{sloppypar}\hyphenrules{nohyphenation}\lipsum[2]\end{sloppypar}
{\centering
\begin{longtable}{ll} C11 & C12\\C21 & C22 \end{longtable}
}
\begin{sloppypar}\hyphenrules{nohyphenation}\lipsum[2]\end{sloppypar}
{\centering\textbf{
\begin{longtable}{ll} C11 & C12\\C21 & C22 \end{longtable}
}}
\end{document}
输出
编辑 1 于 2015-12-19 0450 IST
@daleif 的解决方案解决了问题 3。但问题 1 和 2 仍然存在。为了更清楚起见,我在页面上添加了一个网格,代码如下:
\documentclass[12pt]{book}
\usepackage{ragged2e}
\raggedbottom
\usepackage[top=0pt,left=0pt,bottom=0pt,right=0pt,width=396pt,height=612pt]{geometry}
\usepackage[step=18pt]{pagegrid}
\pagegridsetup{top-left}
\usepackage{polyglossia}
\usepackage{longtable}
\usepackage{lipsum}
\setlength{\LTpre}{0pt}
\setlength{\LTpost}{0pt}
\begin{document}
\fontsize{12}{18}\selectfont
\vspace*{6.5pt}
\begin{sloppypar}\hyphenrules{nohyphenation}
\lipsum[2]
\end{sloppypar}
\begin{longtable}{ll} C11 & C12\\C21 & C22 \end{longtable}
\begin{sloppypar}\hyphenrules{nohyphenation}
\lipsum[2]
\end{sloppypar}
{\bfseries
\begin{longtable}{ll} C11 & C12\\C21 & C22 \end{longtable}
}
\begin{sloppypar}\hyphenrules{nohyphenation}
\lipsum[2]
\end{sloppypar}
\end{document}
下面是输出。请注意长表的行是如何稍微上移的,即它们的基线不在单位与行距相同的网格上。
答案1
如果你不喜欢这个……呃,这个……功能长桌,那么有一个独立的包可用于修补代码以禁用它。
该行为与 XeTeX 或类似程序无关sloppypar
。以下是示例版本的输出daleif 的回答使用问题的网格和应用的补丁:
\documentclass[12pt]{book}
\usepackage{ragged2e}
\raggedbottom
\usepackage[top=0pt,left=0pt,bottom=0pt,right=0pt,width=396pt,height=612pt]{geometry}
\usepackage[step=18pt]{pagegrid}
\pagegridsetup{top-left}
\usepackage{longtable,ltabptch}
\usepackage{lipsum}
\setlength{\LTpre}{0pt}
\setlength{\LTpost}{0pt}
\begin{document}
\begin{sloppypar}
\lipsum[2]
\end{sloppypar}
\begin{longtable}{ll} C11 & C12\\C21 & C22 \end{longtable}
\begin{sloppypar}
\lipsum[2]
\end{sloppypar}
{\bfseries\begin{longtable}{ll} C11 & C12\\C21 & C22 \end{longtable}}
\begin{sloppypar}
\lipsum[2]
\end{sloppypar}
\end{document}
答案2
我在这里没有看到任何间距问题(Xelatex,TexLive 2015):
\documentclass[12pt]{book}
\usepackage{ragged2e}
\raggedbottom
\usepackage{polyglossia}
\usepackage{longtable}
\usepackage{lipsum}
\setlength{\LTpre}{0pt}
\setlength{\LTpost}{0pt}
\begin{document}
\begin{sloppypar}
\lipsum[2]
\end{sloppypar}
\begin{longtable}{ll} C11 & C12\\C21 & C22 \end{longtable}
\begin{sloppypar}
\lipsum[2]
\end{sloppypar}
{\bfseries\begin{longtable}{ll} C11 & C12\\C21 & C22 \end{longtable}}
\begin{sloppypar}
\lipsum[2]
\end{sloppypar}
\end{document}