我有以下问题。
让我们定义三种类型的文档元素:标题,段落和长桌。问题在于独立设置它们之间的垂直空间。
例如,我们表示:
- 标题和段落之间的垂直间距#1。
- 标题和长表之间的垂直空间#2。
- 段落和标题之间的垂直间距#3。
- 段落和长表之间的垂直间距#4。
- 长表和标题之间的垂直空间#5。
- 长表和段落之间的垂直间距#6。
一般问题是设置:vspace #1 到 V1 cm,vspace #2 到 V2 cm,...,vspace #6 到 V6 cm。这应该在序言中完成,以尽量减少作者在文档部分的工作量。
由于这个问题对我来说太难了,我试图解决它的特殊情况,其中 V1 = V2 = ... = V6 = 1cm,即所有垂直空间 #1-#6 都是相同的。
我找到了以下内容变量影响这些 vspace 的:
\captionsetup[longtable]{
belowskip=1cm % VARIABLE #1
}
\setlength{\LTpre}{1cm} % VARIABLE #2
\setlength{\LTpost}{1cm} % VARIABLE #3
\titlespacing*{\section}{0pt}{1cm}{1cm} % VARIABLES #4, #5
据我发现,这些变量会影响:
- belowskip - vspaces 2, 4。
- LTpre-vspaces 2、4。
- Ltpost-vspaces 5、6。
- titlespacing-3 - vspaces 3, 5。
- 标题间距-4 - vspaces 1, 2。
您可以轻松确保不可能选择这些变量的子集,以便每个 vspace 仅被覆盖一次。
您对如何解决这个问题有什么想法吗(一般来说或者至少在特定情况下)?
这是代码。
\documentclass{book}
\usepackage{titlesec}
\usepackage{longtable}
\usepackage{caption}
\usepackage{lipsum}
\captionsetup[longtable]{
belowskip=1cm % VARIABLE #1
}
\setlength{\LTpre}{1cm} % VARIABLE #2
\setlength{\LTpost}{1cm} % VARIABLE #3
\titlespacing*{\section}{0pt}{1cm}{1cm} % VARIABLES #4, #5
\begin{document}
\section {Title title title title title title}
% Vertical space #1: Title - Paragraph
\lipsum[2] % Paragraph
% Vertical space #3: Paragraph - Title
\section {Title title title title title title}
% Vertical space #2: Title - Longtable
\begin{longtable}{|c|}
\caption{Table Table Table Table Table Table}\\
\hline Something \\ \hline
\end{longtable}
% Vertical space #6: Longtable - Paragraph
\lipsum[2] % Paragraph
% Vertical space #4: Paragraph - Longtable
\begin{longtable}{|c|}
\caption{Table Table Table Table Table Table}\\
\hline Something \\ \hline
\end{longtable}
% Vertical space #5: Longtable - Title
\section {Title title title title title title}
\end{document}
答案1
我担心答案就像您指出的那样:LaTeX2e 在定义不同对象之间的间距时功能非常有限。它很大程度上依赖于使用,\addvspace
这会导致连续使用最多两个空格(从一个元素的末尾到第二个元素的开头)。但即使如此,也并非所有元素都使用,\addvspace
但有时直接使用\vspace
,或者\vskip
导致这些空格累积。
除此之外,LaTeX2e 还能理解成行的节单元并调整其间距,但仅此而已。总体而言,这种简单的方案效果很好,但如果您想要/需要定义不同元素之间的精确间距规则,它对您没有帮助。
为了使后者成为可能,LaTeX 需要在一定程度上跟踪文档结构,而目前它还做不到这一点。例如,段落或多或少是隐式对象,因此仅查看开始/结束结构是不够的。
在 LaTeX3 项目中,我们正在试验各种规范可能性,以便您可以精确地做您感兴趣的事,但不幸的是,这还不是我认为可用的状态。不过,根据您正在执行的应用程序,查看甚至试验可能会很有趣:http://www.latex-project.org/svnroot/experimental/trunk/l3trial/l3ldb/ --- 我们当然对反馈感兴趣。
您还可以在我的演讲中找到一些关于它的演示和评论去年在印度。