我使用宏和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}}
}
但它没有任何效果。(请注意,我设置\baselineskip
为2pt
只是为了在发生变化时确定它,而不是因为它是我的目标行距)。
我也尝试过将其改为:
\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
您可以\titleformat
在titlesec
包中使用来控制章节标题的格式:
\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}% <-----
}
否则,标题前面会出现一个空格