控制章节标题的行距

控制章节标题的行距

我使用宏和titlesec包来创建自定义\section标题。

\documentclass[final]{book}
\usepackage{lipsum}
\usepackage{titlesec}

\titlespacing*{\section}{0pt}{1em}{0.3em}

\def \mysection#1{
\section*{\large{#1}}
}

\begin{document}

\mysection{Lorem ipsum dolor sit amet, consectetur adipisicing elit doloribus odio aliquid aut.}

\lipsum[2]

\mysection{Another section heading with very long text within it that wraps to second line}

\lipsum[3]

\end{document}

产生

自定义部分标题

我希望能够减少或增加该\section标题行之间的行距。

我已尝试通过将\mysection宏更改为:

\def \mysection#1{
\section*{\baselineskip=2pt \large{#1}}
}

但它没有任何效果。(请注意,我设置\baselineskip2pt只是为了在发生变化时确定它,而不是因为它是我的目标行距)。

我也尝试过将其改为:

\def \mysection#1{
\section*{\linespread{0.1} \large{#1}}
}

这似乎对行距有轻微的影响,但却产生了令人讨厌的缩进:

带缩进的自定义节标题

我也尝试过使用setspace包及其命令\singlespacing

\documentclass[final]{book}
\usepackage{lipsum}
\usepackage{titlesec}
\usepackage{setspace}

\titlespacing*{\section}{0pt}{1em}{0.3em}

\def \mysection#1{
\section*{\singlespacing \large{#1}}
}

\begin{document}

\mysection{Lorem ipsum dolor sit amet, consectetur adipisicing elit doloribus odio aliquid aut.}

\lipsum[2]

\mysection{Another section heading with very long text within it that wraps to second line}

\lipsum[3]

\end{document}

这会减小行距,但在\section标题上方添加意外的空白:

在此处输入图片描述

有没有可靠的方法来修改标题的行距\section我认为titlesec应该可以做到这一点,但我还没有找到如何做到这一点的线索其文档

答案1

您可以\titleformattitlesec包中使用来控制章节标题的格式:

\documentclass[final]{book}
\usepackage{setspace}
\usepackage{titlesec}
\titleformat{\section}{\normalfont\large\bfseries}{\thesection}{1em}{\setstretch{0.1}}
\begin{document}
Document Content
\end{document}

根据手册,该\titleformat命令的语法是:

\titleformat{⟨command⟩}[⟨shape⟩]{⟨format⟩}{⟨label⟩}{⟨sep⟩}{⟨before-code⟩}[⟨after-code⟩]

按顺序指定要修改的标题命令、标题的可选“形状”(显示/块/...)、标题的格式、标签和标题之间的水平长度以及在标题主体之前和之后执行的代码。

上面的例子模拟了标准的章节标题。

答案2

可以像这样:

\documentclass[final]{book}
\usepackage{lipsum}
\usepackage{titlesec}

\titlespacing*{\section}{0pt}{3ex plus 2ex}{1ex}
\titleformat*{\section}{\fontsize{12}{12}\bfseries}

\setcounter{secnumdepth}{0}
\pagestyle{plain}

\begin{document}

\section{Lorem ipsum dolor sit amet, consectetur adipisicing elit doloribus odio aliquid aut.}

\lipsum[2]

\section{Another section geading with very long text within it that wraps to second line}

\lipsum[3]

\end{document}

主字体大小为 10pt,\large选择 12pt 大小。

但是,如果字符之间发生冲突,这将导致间距不均匀:一个字符在第一行有下降部分,另一个字符在第二行有上升部分。示例显示了这种情况。

我还添加了一些改进;例如,章节标题上方的空间应该具有一定的灵活性。

在此处输入图片描述

如果要独立于选择的主字体大小作为类选项,请将\titleformat*上面的行更改为

\makeatletter
\titleformat*{\section}{\large\fontsize{\f@size}{\f@size}\bfseries}
\makeatother

我们\large选择类选项指定的大小;这将存储大小\f@size并将其用于两个参数。


最终版本,由芭芭拉·比顿推荐\raggedright

\makeatletter
\titleformat*{\section}{\raggedright\large\fontsize{\f@size}{\f@size}\bfseries}
\makeatother

完整示例

\documentclass[final,12pt]{book}
\usepackage{lipsum}
\usepackage{titlesec}

\titlespacing*{\section}{0pt}{3ex plus 2ex}{1ex}
\makeatletter
\titleformat*{\section}{\raggedright\large\fontsize{\f@size}{\f@size}\bfseries}
\makeatother

\setcounter{secnumdepth}{0}
\pagestyle{plain}

\begin{document}

\section{Lorem ipsum dolor sit amet, consectetur adipisicing elit doloribus odio aliquid aut.}

\lipsum[2]

\section{Another section geading with very long text within it that wraps to second line}

\lipsum[3]

\end{document}

在此处输入图片描述

答案3

\def \mysection#1{%  <-----
  \section*{\linespread{0.1}\large#1}% <-----
}

否则,标题前面会出现一个空格

相关内容