我正在使用大学提供的模板撰写论文。它需要使用报告类。为了格式化前言中的标题,它使用包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