基于此回答,我尝试定义自己的章节标题格式。这个想法是将章节标题右对齐(章节总是在奇数页开始),并用突出到右边距的规则在其下划线。当章节标题很短时,效果很好。但是,当它向左延伸很远时,章节编号有时会被推到左边距,而装订应该是在那里,所以这是大忌。我不太擅长这个,所以也许这是一个非常愚蠢的错误。提前感谢任何建议!
我的 MWE:
\documentclass{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{xcolor}
\usepackage{changepage}
\usepackage[calcwidth]{titlesec}
\usepackage{lipsum}
% Redefine chapter command
\newlength\mylen
\setlength\mylen{1cm}
\titleformat{\chapter}[hang]{\Huge\bfseries}{\textcolor{gray}{\thechapter}}{2pc}{\raggedleft}[\vspace{-20pt}%
{%
\begin{adjustwidth}{}{-\mylen}%
\makebox[\linewidth][r]{\rule{\dimexpr\titlewidth+\mylen\relax}{1pt}}%
\end{adjustwidth}%
}%
]
\titlespacing{\chapter}{0pt}{0pt}{2cm}
\begin{document}
\chapter{A tremendously-long chapter title illustrating the bug I'm experiencing}
\lipsum[1]
\end{document}
答案1
这是一个可能的解决方案;基本思想是捕获标题(在的选项#1
中),将其装箱在环境中,并通过使用条件测试比较标题的实际宽度()和最初为排版而保留的宽度( )来确定要使用的规则的长度():explicit
titlesec
varwidth
\ftitlewd+2pc
\titlewd
\titleboxwd=\textwidth-\mylen=\textwidth-3pc
\documentclass{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{xcolor}
\usepackage{varwidth}
\usepackage[calcwidth,explicit]{titlesec}
\usepackage{lipsum}
\newlength\mylen
\newsavebox\mybox
\newlength\titlewd
\newlength\ftitlewd
\newlength\titleboxwd
\setlength\mylen{3pc}
\setlength\titleboxwd{\dimexpr\textwidth-\mylen\relax}
\setlength\ftitlewd{\titleboxwd}
\newcommand\chapfont{\Huge\bfseries\raggedleft}
\titleformat{\chapter}[hang]
{\chapfont\filleft}
{}{0pc}
{\parbox[t]{\mylen}{\textcolor{gray}{\thechapter}\hfill}%
\begin{lrbox}{\mybox}%
\begin{varwidth}[t]{\titleboxwd}%
\chapfont#1%
\end{varwidth}%
\end{lrbox}%
\settowidth\titlewd{\usebox\mybox}%
\ifdim\titlewd<\titleboxwd%
\global\setlength\ftitlewd{\titlewd}%
\fi%
\parbox[t]{\ftitlewd}{\usebox\mybox}%
}
[\vskip-1.4ex{\makebox[0pt][l]{%
\hspace*{-\ftitlewd}\rule{\dimexpr\ftitlewd+2pc\relax}{1.5pt}}}%
]
\titleformat{name=\chapter,numberless}[hang]
{\chapfont\filleft}
{}{0pc}
{%
\begin{lrbox}{\mybox}%
\begin{varwidth}[t]{\titleboxwd}%
\chapfont#1%
\end{varwidth}%
\end{lrbox}%
\settowidth\titlewd{\usebox\mybox}%
\ifdim\titlewd<\titleboxwd%
\global\setlength\ftitlewd{\titlewd}%
\fi%
\parbox[t]{\ftitlewd}{\usebox\mybox}%
}
[\vskip-1.4ex{\makebox[0pt][l]{%
\hspace*{-\ftitlewd}\rule{\dimexpr\ftitlewd+2pc\relax}{1.5pt}}}%
]
\titlespacing*{\chapter}
{1\mylen}{50pt}{40pt}
\begin{document}
\chapter*{An Unnumbered Chapter}
\lipsum[4]
\chapter{A tremendously Long Chapter Title Showing a Solution}
\lipsum[4]
\chapter{Short Chapter Title}
\lipsum[4]
\end{document}
生成的章节标题的一些图像:首先,未编号的章节(这将是 ToC、LoF、LoT 和参考书目的格式):
带有长标题的编号章节:
以及一个带有简称的编号章节:
请随意更改长度以满足您的需要。
就我个人而言(当然,这只是一个建议),按照要求的布局,章节号的位置会因章节而异,我不确定这是否是一个好的选择。也许你可以重新考虑一下。
以下变化将章节编号置于右边距之外,与规则突出的距离相同:
\documentclass{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{xcolor}
\usepackage{varwidth}
\usepackage[calcwidth,explicit]{titlesec}
\usepackage{lipsum}
\newsavebox\mybox
\newlength\mylen
\newlength\titlewd
\newlength\ftitlewd
\newlength\titleboxwd
\setlength\mylen{3pc}
\setlength\titleboxwd{\dimexpr\textwidth-\mylen\relax}
\setlength\ftitlewd{\titleboxwd}
\newcommand\chapfont{\Huge\bfseries\raggedleft}
\titleformat{\chapter}[hang]
{\chapfont\filleft}
{}{0pc}
{%
\begin{lrbox}{\mybox}%
\begin{varwidth}[t]{\titleboxwd}%
\chapfont#1%
\end{varwidth}%
\end{lrbox}%
\settowidth\titlewd{\usebox\mybox}%
\ifdim\titlewd<\titleboxwd%
\global\setlength\ftitlewd{\titlewd}%
\fi%
\parbox[t]{\ftitlewd}{\usebox\mybox}%
\makebox[0pt][l]{\parbox[t]{4pc}{\hfill\textcolor{gray}{\thechapter}}}%
}
[\vskip-1.4ex{\makebox[0pt][l]{%
\hspace*{-\ftitlewd}\rule{\dimexpr\ftitlewd+4pc\relax}{1.5pt}}}%
]
\titleformat{name=\chapter,numberless}[hang]
{\chapfont\filleft}
{}{0pc}
{%
\begin{lrbox}{\mybox}%
\begin{varwidth}[t]{\titleboxwd}%
\chapfont#1%
\end{varwidth}%
\end{lrbox}%
\settowidth\titlewd{\usebox\mybox}%
\ifdim\titlewd<\titleboxwd%
\global\setlength\ftitlewd{\titlewd}%
\fi%
\parbox[t]{\ftitlewd}{\usebox\mybox}%
}
[\vskip-1.4ex{\makebox[0pt][l]{%
\hspace*{-\ftitlewd}\rule{\dimexpr\ftitlewd+4pc\relax}{1.5pt}}}%
]
\titlespacing*{\chapter}
{1\mylen}{50pt}{40pt}
\begin{document}
\chapter*{An Unnumbered Chapter}
\lipsum[4]
\chapter{A tremendously Long Chapter Title Showing a Solution}
\lipsum[4]
\chapter{Short Chapter Title}
\lipsum[4]
\end{document}
相应图片: