我在尝试将章节和节标题设置为单倍行距时遇到了问题(当它们超过一行时)。我在 Stack Exchage 中找到了两个解决方案。一个建议使用 etoolbox。另一个建议使用 titlesec pagackage。第一个解决方案对章节标题提出了问题,而第二个解决方案对节标题提出了问题。我找不到任何其他既适用于两者又简单易行的选项。
答案1
\documentclass[12pt,twoside]{book}
\usepackage{geometry}
\geometry{a5paper}
\usepackage{etoolbox}
\usepackage{blindtext}
\usepackage[doublespacing]{setspace}
\makeatletter
\patchcmd{\@makechapterhead}{\raggedright}{\raggedright\setstretch{1}}{}{}
\pretocmd{\@sect}{\singlespacing}{}{}
\pretocmd{\@ssect}{\singlespacing}{}{}
\apptocmd{\@sect}{\doublespacing}{}{}
\apptocmd{\@ssect}{\doublespacing}{}{}
\makeatother
\begin{document}
\chapter{This is a long chapter title, ant, bee, chameleon}
\blindtext
\section{This is a long section title, anne, betty, cathy}
\blindtext
\subsection{This is a long subsection title, abe, bill, carl}
\blindtext
\end{document}
答案2
假设您正在使用“标准” LaTeX 文档类之一—— article
、report
和book
——或基于其中一个标准类的文档类,那么您只需在序言中添加以下两个指令即可实现您的目标:
\usepackage{sectsty}
\allsectionsfont{\singlespacing\raggedright}
MWE(大部分代码借用自OP发布的答案):
\documentclass[12pt,twoside]{book}
\usepackage[a5paper]{geometry}
\usepackage{lipsum}
\usepackage[doublespacing]{setspace}
\usepackage{sectsty}
\allsectionsfont{\singlespacing\raggedright}
% "\raggedright" is optional - but a good idea!
\begin{document}
\chapter[Shortened chapter title]{This is a long chapter title, ant, bee, chameleon}
\lipsum[2]
\section[Shortened section title]{This is a long section title, anne, betty, cathy}
\lipsum[2]
\subsection{This is a long subsection title, abe, bill, carl}
\lipsum[2]
\end{document}