如何保存和恢复章节标题格式

如何保存和恢复章节标题格式

我正在使用大学提供的模板撰写论文。它需要使用报告类。为了格式化前言中的标题,它使用包titlesec并重新定义格式(\titleformat\titlespacing)。但是,这也会改变正文中章节标题的格式,我不喜欢这样。我尝试使用\newenvironment定义环境preliminary来包装前言并仅在本地重新定义标题的格式。但是它没有用。

我的问题是:是否可以在本地更改标题的格式?如果不行,如何保存默认格式并在前言之后恢复它?

我想我总是可以在前言之后重新定义格式,但我想保留默认格式。

答案1

您可以titlesec在任何地方使用 的命令,并且它们的效果将仅限于包含它们的组或环境。以下文档适用于更改章节和节。为了说明,我只演示了章节;取消注释正文中使用\chapter命令的行以查看这些操作是否有效。

\documentclass{report}
\usepackage{titlesec}
\titleformat{\section}{\normalfont\Large\itshape}{\thesection}{1em}{}{}

\newenvironment{alttitles}{\titleformat{\chapter}[display]%
{\normalfont\huge\itshape}{\chaptertitlename\ \thechapter}{20pt}{\Huge}%
\titleformat{\section}{\normalfont\Large\scshape}{\thesection}{1em}{}{}}{}

\begin{document}

%\chapter{First chapter}
\section{A section}

\begin{alttitles}
%\chapter{Next chapter}
\section{Another section}

\end{alttitles}

\section{A last section}

\end{document}

示例输出

当尝试使用自己的样式实现这一点时,我建议您首先让 titlesec 命令在单独的文档中全局运行,以帮助调试。之后,如果您愿意,您可以将它们构建到环境中,或者简单地将它们包含在适当的组中,例如

{
\titleformat{\section}{\normalfont\Large\scshape}{\thesection}{1em}{}{}
\section{A small caps section}

Text.

}

答案2

无法在本地更改它们。但是,您可以在文档中的任何位置(即命令内)恢复为“原始”标题\mainmatter,如下所示。手册中描述了定义原始标题的正确方法titlesec。这是您的文档序言:

\makeatletter
\g@addto@macro{\mainmatter}{
  \titleformat{\chapter}[display]
    {\normalfont\huge\bfseries}{\chaptertitlename\ \thechapter}{20pt}{\Huge}
  \titleformat{\section}
    {\normalfont\Large\bfseries}{\thesection}{1em}{}
  \titleformat{\subsection}
    {\normalfont\large\bfseries}{\thesubsection}{1em}{}
  \titleformat{\subsubsection}
    {\normalfont\normalsize\bfseries}{\thesubsubsection}{1em}{}
  \titleformat{\paragraph}[runin]
    {\normalfont\normalsize\bfseries}{\theparagraph}{1em}{}
  \titleformat{\subparagraph}[runin]
    {\normalfont\normalsize\bfseries}{\thesubparagraph}{1em}{}
  \titlespacing*{\chapter}{0pt}{50pt}{40pt}
  \titlespacing*{\section}{0pt}{3.5ex plus 1ex minus .2ex}{2.3ex plus .2ex}
  \titlespacing*{\subsection}{0pt}{3.25ex plus 1ex minus .2ex}{1.5ex plus .2ex}
  \titlespacing*{\subsubsection}{0pt}{3.25ex plus 1ex minus .2ex}{1.5ex plus .2ex}
  \titlespacing*{\paragraph}{0pt}{3.25ex plus 1ex minus .2ex}{1em}
  \titlespacing*{\subparagraph}{\parindent}{3.25ex plus 1ex minus .2ex}{1em}
}
\makeatother

相关内容