如何阻止文本在 \titleformat{\chapter} 中的两个规则之间拉伸

如何阻止文本在 \titleformat{\chapter} 中的两个规则之间拉伸

我有一种显示章节标题的特定方法,即将章节标题放在两个规则之间。我使用 titlesec 来实现这一点。问题是,LaTeX 对每个章节标题页的拉伸可能不同,因此规则内的文本并不总是准确居中。

下面的 MWE。第 1 章的标题文本几乎完美地居中在规则之间(因为 \titleformat{\chapter} 代码是通过查看第一个章节标题编写的)。但是,对于第 2 章,由于之后的文本现在不同了,标题文本不再居中。请忽略字体和大小。这是我能做的最好的事情,无需复制我的整个实际代码即可展示我的问题。我相信有很多方法可以解决这个问题。环境会这样做吗?但这可以合并到 titlesec 中吗?

\documentclass[10pt,a4paper,twoside]{book}

\newcommand\YUGE{\fontsize{38}{45}\selectfont} % creates an even bigger 'YUGE' font size, at 38pt

\usepackage{titlesec}
\titleformat{\chapter}[display]{\sf\YUGE}{Chapter \thechapter}{-5mm}{\rule{4.5in}{1pt}\vspace{-3mm}\\\rm\huge}[\vspace{-9mm}\rule{4.5in}{1pt}]

\usepackage{lipsum}
\usepackage{parskip}
\setlength{\parskip}{1\baselineskip plus2pt minus2pt}

\begin{document}

\chapter{Example Chapter Title}

\lipsum[1-2]

\chapter{Example Chapter Title}

\lipsum

\end{document}

答案1

更新

不幸的是,您的 MWE 没有显示实际工作中出现的拉伸问题。

为了使章节标题不受 parskip 变化的影响,请使用包parskip (2021-03-14 v2)设置段落之间的 parskip 值。

例如\usepackage[skip=1.0\baselineskip plus 1pt minus 1pt]{parskip}

该包还修补了titlesec避免\parskip在显示标题之前或之后添加的问题,从而避免了意外的垂直空格。请参阅这个答案

可能\titleformat会使用 来改进和简化\titleline[<rule height>](除非您想要更短的线),避免\\并防止规则插入的 parskips。

标题后的文字不应对标题格式或位置产生任何影响。

要并排比较两个页面,请使用\documentclass[10pt,a4paper]{report}

z1

\documentclass[10pt,a4paper,twoside]{book}
    
\newcommand\YUGE{\fontsize{38}{45}\selectfont} % creates an even bigger 'YUGE' font size, at 38pt

\usepackage{titlesec}

%%\titleformat{\chapter}[display]
%{\sf\YUGE}
%{Chapter \thechapter}
%{-5mm}
%{\rule{4.5in}{1pt}\vspace{-3mm}\\\rm\huge}
%[\vspace{-9mm}\rule{4.5in}{1pt}]

\titleformat{\chapter}[display]
{\parskip=0pt\sf\YUGE} % format Chapter nn
{\chaptertitlename\ \thechapter}
{10mm} % space below Chapter nn
{\parskip=0pt\rm\huge\titlerule[1.0pt]\vspace*{4pt}} % format title
[\parskip=0pt\vspace*{3pt}\titleline{\titlerule[1.0pt]}] % after title

%%  \titlespacing{command}{left spacing}{before spacing}{after spacing}
\titlespacing*{\chapter}{0em}{2em}{6em}  % added <<<<<<<

\usepackage[skip=1.0\baselineskip  plus 1pt  minus 1pt]{parskip} % <<<<<<<<<<<< changed 

\usepackage{lipsum}
    
\begin{document}
    
    \chapter{Example Chapter Title}
    
    \lipsum[1-2]
    
    \chapter{Example Chapter Title}
    
    \lipsum
    
\end{document}

相关内容