我正在使用大學提供的範本撰寫論文。它需要使用報告類別。為了格式化前文中的標題,它使用了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