帮助理解/调试标题周围(和其他地方)的间距

帮助理解/调试标题周围(和其他地方)的间距

我正在尝试设置标题以满足我所在大学的论文格式要求。我使用 titlesec 包,因为它能够在两个标题连续出现时抑制第二个标题前的间距。这是学校指导方针的必要条件。事情基本顺利,但我遇到了两个问题:

  1. 章节标题第一行之前和之后的间距display比我认为的要大一些。
  2. 单行和多行章节标题后的间距不同。(我不需要文本在每一页上都从相同的位置开始,我只需要章节标题底部和第一行文本之间的间距保持一致。)

我曾尝试深入titlesec.sty研究,试图弄清楚到底发生了什么,但这是一场非常艰巨的战斗。这是一堆相当复杂的代码(当然,有很多功能)。

因此,我想知道是否有人可以提供一些见解,了解是什么导致了标签周围的额外空间以及是什么导致了标题后的间距不一致。

我也希望得到关于如何跟踪处理过程并准确了解空格来源的建议。我知道 TeX 有一些可用的调试功能,但我从未使用过它们,而且由于我缺乏 TeXpertise,描述它们的参考资料有点吓人。如果有一些我可以使用的工具,我也希望能够在其他地方应用它们。特别是,我必须在单倍行距和双倍行距之间来回切换的地方。这通常导致我需要插入一些\vspacehack 来修复问题,因为我真的不太清楚幕后发生了什么。

这是一个最小工作示例,说明了我在标题中遇到的问题:

\documentclass[openany,oneside]{book}

\setlength{\headsep}{12pt}
\setlength{\headheight}{12pt}
\setlength{\topmargin}{-24pt}
\setlength{\textheight}{9in}
\setlength{\footskip}{24pt}

% Command to create a rule of the specified width and height, but pretending both are zero so it
% doesn't actually shift anything around. Optionally shift it vertically by a specified amount.
% \zeroSizeRule[verticalShift]{width}{height}
\newcommand{\zeroSizeRule}[3][0pt]%
{%
    \raisebox{#1}[0pt][0pt]{\makebox[0pt][l]{\rule{#2}{#3}}}%
}

\newcommand{\testFirstLineSpace}{\settoheight{\tempheight}{CHAPTER}\zeroSizeRule[\tempheight]{0.125in}{2in}\zeroSizeRule[-12pt]{0.25in}{12pt}}
\newcommand{\testHeadingToTextSpace}{\zeroSizeRule[-1in]{0.375in}{1in}}


\usepackage[explicit]{titlesec}

\newlength{\tempheight}
\titleformat{name=\chapter}%
    [display]% shape type
    {\normalfont\rmfamily\bfseries\LARGE\centering}% format for title text
    {\testFirstLineSpace CHAPTER \thechapter}% format for label 
    {12pt}% spacing between label and title text
    {\parbox[t]{4.5in}{#1}}% before code

\titlespacing{name=\chapter}%
    {0pt}% left margin increase - let the parbox take care of it
    {1in}% vertical space before title
    {1in}% vertical space after title

\newcommand{\filler}{\MakeUppercase{A quick brown dog with memory problems jumped over the lazy fox over and over and over and over and over and over again.}}

\begin{document}

\mainmatter

\chapter{TEST THAT IS LONG ENOUGH TO WRAP ONTO A SECOND LINE\testHeadingToTextSpace}
\filler

\chapter{SHORTER TEST\testHeadingToTextSpace}
\filler

\end{document}

答案1

对于问题#1,改变间距参数。

对于问题 2,使用

\titleformat{name=\chapter}%
    [display]% shape type
    {\normalfont\rmfamily\bfseries\LARGE}% format for title text
    {\testFirstLineSpace \filcenter CHAPTER \thechapter\filcenter}% format for label 
    {12pt}% spacing between label and title text
    {\leavevmode\vbox{\hsize=4.5in\parindent=0pt#1}}% before code

也许\stupid另一个问题的宏可以放在那里。我已删除,\centering因为这会使 中的文本也居中\vbox

没有解释 :)
\parbox也可以通过欺骗 LaTeX 来确定顶部的位置, 从而获得正确的垂直对齐方式\parbox

\parbox[t]{4.5in}{\hrule height0pt\relax#1}

现在顶部正是\hrule

相关内容