答案1
我假设您不希望副标题出现在目录和标题中。
我建议定义一个\Section
带有可选参数的命令,您可以在其中进行设置。由于这使用标准命令,因此您可以使用或任何方法\section
修改样式。titlesec
代码
\documentclass{book}
\usepackage{lipsum}
\ExplSyntaxOn
\NewDocumentCommand{\Section}{sO{}m}
{
\keys_set:nn { bzirzer/section }
{
header=,toc=,subtitle=,#2
}
\bzirzer_section:nn { #1 } { #3 }
}
\keys_define:nn { bzirzer/section }
{
header .tl_set:N = \l_bzirzer_section_header_tl,
toc .tl_set:N = \l_bzirzer_section_toc_tl,
subtitle .tl_set:N = \l_bzirzer_section_subtitle_tl,
}
\cs_new_protected:Nn \bzirzer_section:nn
{
\bool_if:nTF { #1 }
{% unnumbered
\section* { \__bzirzer_section_make:n { #2 } }
}
{% numbered
\tl_if_empty:NTF \l_bzirzer_section_toc_tl
{
\section[ #2 ]{ \__bzirzer_section_make:n { #2 } }
}
{
\section[ \l_bzirzer_section_toc_tl ]{ \__bzirzer_section_make:n { #2 } }
}
\tl_if_empty:NTF \l_bzirzer_section_header_tl
{
\sectionmark{#2}
}
{
\sectionmark{\l_bzirzer_section_header_tl}
}
}
}
\cs_new_protected:Nn \__bzirzer_section_make:n
{
#1
\tl_if_empty:NF \l_bzirzer_section_subtitle_tl
{ \\ {\normalfont\normalsize\itshape \tl_use:N \l_bzirzer_section_subtitle_tl} }
}
\ExplSyntaxOff
\begin{document}
\tableofcontents
\chapter{Title}
\Section*[subtitle=Where we present things]{Introduction}
\lipsum
\Section[subtitle=This is important]{Starting off}
\lipsum
\Section[
subtitle=This is not important,
toc=Abbreviated title for the toc,
header=Abbreviated title for the header
]{This is a very long section title that should wrap across lines}
\lipsum\lipsum
\Section{This has no subtitle}
\lipsum
\end{document}
一些图片。
1. 未编号部分
2. 带副标题的普通部分
3. 带有副标题的长章节标题
4. 缩写标题
5. 目录
答案2
您几乎可以将任何内容放入章节标题中,但不能将(可选)版本发送到目录和\sectionmark
。请注意,行距是为整个段落设置的,在本例中使用\scriptsize
。
\documentclass{article}
\usepackage{xcolor}
\begin{document}
\tableofcontents
\section[short title]{\scriptsize\textbf{\large Text}\\
\textit{\textcolor{gray}{Text}}}
\end{document}