同时设置不同文档元素之间的垂直间距

同时设置不同文档元素之间的垂直间距

我有以下问题。

让我们定义三种类型的文档元素:标题段落长桌。问题在于独立设置它们之间的垂直空间。

例如,我们表示:

  • 标题和段落之间的垂直间距#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/ --- 我们当然对反馈感兴趣。

您还可以在我的演讲中找到一些关于它的演示和评论去年在印度

相关内容