titlesec:我不想要的垂直空间

titlesec:我不想要的垂直空间

我再次尝试模仿一个非常具体的布局......

我使用该titlesec包来定义章节标题,对结果非常满意……除了一些点的垂直空间一直出现在我不想要的地方。也许你们可以在这里帮助我。

下面是几乎 M-WE...pt源中的所有值都是用尺子从原始值中算出来的,我保留了它们,因为它们和其他值一样好。不用担心错误的小节编号,这在“真实”文档中已经解决了。

此代码几乎有效。但我有两个问题:

  • 如果章节标题包含变音符号(Ä、Ö、Ü),则竖线和标题之间会添加额外的垂直空白。这不是什么大问题,因为我可以重命名章节,使它们不包含变音符号,但我想知道为什么会发生这种情况,以及是否有办法避免这种情况。

  • \subsection我在和格式中使用了比字体大小更小的基线\subsubsection来模拟原书非常紧凑的布局。然而,这种设置似乎有效只在第二行和第三行之间长标题 - 有额外的垂直空白在第一行和第二行之间,即使我设置更小的基线,也不会减少。如果反过来,我可以轻松解决三行标题的问题,但我无法避免两行标题,我想知道如何减少该垂直空间。

提前谢谢大家,你们在我探索 LaTeX 世界的过程中给予了我很大的帮助!

\documentclass[open=any,twocolumn]{scrbook}

\usepackage[scaled]{helvet}
\usepackage{times}

\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{titlesec}

\titlespacing{\chapter}{0pt}{0pt}{11pt}
\titlespacing{\section}{0pt}{14pt}{0pt}
\titlespacing{\subsection}{0pt}{11pt}{0pt}
\titlespacing{\subsubsection}{0pt}{5pt}{0pt}

% scaleable chapter bars, credit to Gonzalo Medina, tex.sx #17124
\newcommand*\varhrulefill[1][17pt]
{\leavevmode\leaders\hrule height#1\hfill\kern0pt}

\renewcommand\thechapter{\arabic{chapter}.0}
\titleformat{\chapter}[display]
    {\normalfont\fontsize{25pt}{0pt}\bfseries\sffamily}
    {\varhrulefill\enskip\thechapter\enskip\varhrulefill}
    {-4pt}
    {\center\MakeUppercase}

\newcommand{\trailthesubsection}[1]{\MakeUppercase{#1} (\thesubsection)}
\titleformat{\subsection}
    {\normalfont\fontsize{15pt}{14pt}\bfseries\sffamily}
    {}
    {0pt}
    {\filcenter\trailthesubsection}

\titleformat{\subsubsection}
    {\normalfont\fontsize{12pt}{11pt}\bfseries\scshape}
    {}
    {0pt}
    {\filcenter}

\begin{document}

\chapter{Functional}      % This one looks as it should

\chapter{Düsfunctional}   % The Umlaut triggers extra vspace

% Notice the extra, non-reducable whitespace after the first line break
\subsection{My Long Subsection Title breaking the line twice}
\subsubsection{My Very Long Subsubsection Title actually breaking the line twice}

\end{document}

粘贴在一起的输出示例。红线指出了有问题的垂直空间。

红线指出了有问题的垂直空间。

答案1

问题 1:你必须“隐藏”标题的高度

\renewcommand\thechapter{\arabic{chapter}.0}
\titleformat{\chapter}[display]
    {\normalfont\fontsize{25pt}{0pt}\bfseries\sffamily}
    {\varhrulefill\enskip\thechapter\enskip\varhrulefill}
    {12pt} % <--- modify this for lowering the title
    {\center\ignoretitleheight}
\newcommand{\ignoretitleheight}[1]{\leavevmode\smash{\MakeUppercase{#1}}}

\lineskip问题 2:当两条线“太近”时,必须避免插入

\newcommand{\trailthesubsection}[1]{\MakeUppercase{#1} (\thesubsection)}
\titleformat{\subsection}
    {\normalfont\fontsize{15pt}{14pt}\bfseries\sffamily\lineskiplimit=-\maxdimen}
    {}
    {0pt}
    {\filcenter\trailthesubsection}

\titleformat{\subsubsection}
    {\normalfont\fontsize{12pt}{11pt}\bfseries\scshape\lineskiplimit=-\maxdimen}
    {}
    {0pt}
    {\filcenter}

但是,如果某个字符高于规定的基线跳过(例如,带重音的大写字母),则间距将不统一。

相关内容