章节的标题?

章节的标题?

我正在写一本书,我想让书中的某些部分有一个像这样的“标题”:

在此处输入图片描述

我可能希望目录条目看起来像“科学与社会:伽利略事件”,页眉写着“伽利略事件”。

我能想到的最接近的情况是这样的:

\section[The Galileo Affair]{Science and Society: The Galileo Affair}

但这不会给我上面显示的视觉布局,并且标题的初始部分不会出现在目录中。

是否有任何包可以提供直接的方法来实现这一点?

答案1

您可以尝试此代码。\sectionsurtitle{....}在您想要添加标题的部分之前使用。请注意,您可以\sectionsurtitle*对未编号的部分使用带星号的版本。

\documentclass{scrartcl}
\usepackage{lipsum}

\usepackage{suffix}

\newcommand\sectionsurtitle[1]{\surtitletoc{#1}\printsectionsurtitle{#1}}
\WithSuffix\newcommand\sectionsurtitle*[1]{\printsectionsurtitle{#1}}

\makeatletter
\newcommand{\printsectionsurtitle}[1]{%
  {\parindent0pt\vspace*{20pt}%
  \sffamily\uppercase{#1}%
  \par\nobreak}
  \@afterheading%
}
\newcommand{\surtitletoc}[1]{%
  \addtocontents{toc}{%
    \protect\contentsline{section}%
    {\mdseries\sffamily\protect\scriptsize\uppercase{#1}}{}{}}
  \addtocontents{toc}{\vskip-10pt}%
}
\makeatother

\begin{document}
\tableofcontents

\bigskip

\sectionsurtitle{Science and society}
\section{The Galileo Affair}
\lipsum[1]

\sectionsurtitle{Art}
\section{The Michelangelo Affair}
\lipsum[1]

\section{A normal section}
\lipsum[1]

\sectionsurtitle*{Nothing}
\section*{A unnumbered section}
\lipsum[1]
\end{document} 

输出:

在此处输入图片描述


编辑

看到您的评论后,我认为您可以使用以下代码:

\documentclass{scrbook}
\usepackage{lipsum}

\usepackage{suffix}

\newcommand\sectionsurtitle[2]{\printsectionsurtitle{#1}\section[#1: #2]{#2}\sectionmark{#2}}
\WithSuffix\newcommand\sectionsurtitle*[2]{\printsectionsurtitle{#1}\section*{#2}}

\makeatletter
\newcommand{\printsectionsurtitle}[1]{%
  {\parindent0pt\vspace*{20pt}%
  \sffamily\uppercase{#1}%
  \par\nobreak}
  \@afterheading%
}
\makeatother

\begin{document}
\tableofcontents

\bigskip

\chapter{Test}

\sectionsurtitle{Science and society}{The Galileo Affair}
\lipsum[1]

\sectionsurtitle{Art}{The Michelangelo Affair}
\lipsum[1]

\section{A normal section}
\lipsum[1]

\sectionsurtitle*{Nothing}{A unnumbered section}
\lipsum[1]
\end{document} 

输出:

在此处输入图片描述

和目录

在此处输入图片描述

答案2

我将使用键值语法:

\documentclass[openany]{book}
\usepackage{titlesec}
\usepackage{xparse}

\titleformat{\section}
  {\normalfont\Large\sffamily\printcurrentsurtitle}
  {\thesection}
  {1em}
  {}

\ExplSyntaxOn

\keys_define:nn { crowell/section }
 {
  surtitle .tl_set:N = \l_crowell_section_surtitle_tl,
  toc      .tl_set:N = \l_crowell_tocentry_tl,
  header   .tl_set:N = \l_crowell_header_tl,
 }

\NewDocumentCommand{\Section}{sO{}m}
 {
  \keys_set:nn { crowell/section }
   {
    surtitle = {},
    toc = { #3 },
    header = { #3 },
    #2
   }
  \IfBooleanTF{#1}
    {\section*{#3}}
    {
     \section[
       \tl_if_empty:NF \l_crowell_section_surtitle_tl
        { \l_crowell_section_surtitle_tl : ~ }
       \l_crowell_tocentry_tl
     ]{#3}
     \markright{\l_crowell_header_tl}
    }
 }

\NewDocumentCommand{\printcurrentsurtitle}{ }
 {
  \tl_if_empty:NF \l_crowell_section_surtitle_tl
   {
    \mbox{\normalsize\MakeUppercase{\l_crowell_section_surtitle_tl}}\par
   }
 }

\ExplSyntaxOff

\begin{document}

\tableofcontents

\chapter{Title}

\Section[surtitle=Science and Society]{The Galileo Affair}

\Section{No surtitle for this one}

\Section*[surtitle=Unnumbered]{Section}

\Section[
  surtitle=Science and Society,
  header=TGA,
  toc=Abbrev
]{The Galileo Affair}

\newpage
\mbox{}

\end{document}

在此处输入图片描述

以下是目录

在此处输入图片描述

请注意,给出的值toc=是在目录中附加标题旁边添加的内容;在标题中,您将获得章节标题,或者指定为的值header=(在本例中,第 3 页将有“TGA”)。

相关内容