我再次尝试模仿一个非常具体的布局......
我使用该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}
但是,如果某个字符高于规定的基线跳过(例如,带重音的大写字母),则间距将不统一。