定义新部分

定义新部分

有没有办法定义一个与 类似\section但字体大小不同的新部分?比如

\documentclass{article}
\newcommand{mysection}{\large \section}
\begin{document}

\mysection{Section 1}

\end{document}

我不想\section永久改变字体大小。

答案1

确实有很多方法可以实现您的目标。有些方法比其他方法更简单,而且效果可能一样好。

如果可能的话使用现有的级别

只有在以下情况下,向文档添加更高级别才有意义:需要文档的所有较低级别。例如,如果您的文档需要 4 个级别(一个在上\section,两个在下),那么您可以简单地使用\section\subsection和作为您的四个级别,然后使用包按您的需要格式化它们。这确实是最简单的方法。如果您不喜欢这些名称,您可以随时将它们更改为更符合文档语义的名称。\subsubsection\paragraphtitlesec\let

使用report类并重新定义\chapter命令

或者,您可以使用在部分上方有分区的类,例如类 \report,并将命令的格式重新定义\chapter为外部分区命令。我以字体大小\LARGE为例,但您可以根据需要进行更改。间距的值取自titlesec默认类分区定义的文档。

如果您不喜欢使用\chapter非章节的内容,则可以将\let其重命名为与文档语义相匹配的内容,例如 \let\mysection\chapter

\documentclass{report}
\usepackage{titlesec}
\titleformat{\chapter}[hang]
  {\normalfont\LARGE\sffamily\bfseries}{\thechapter}{1em}{}
\titlespacing*{\chapter}{0pt}{3.5ex plus 1ex minus .2ex}{2.3 ex plus .2ex}
\usepackage{lipsum}
\begin{document}
\chapter{A chapter}
\lipsum[1]
\section{A section}
\lipsum[2]
\end{document}

\partarticle类中重新定义命令

如果你不想改变文档类,你也可以重新定义\part高于该\section级别的命令,article使其类似于一个部分:

\documentclass{article}
\usepackage{titlesec}
\titleclass{\part}{straight}
\titleformat{\part}[hang]
  {\normalfont\LARGE\bfseries}{\thepart}{1em}{}
\titlespacing*{\part}{0pt}{3.5ex plus 1ex minus .2ex}{2.3 ex plus .2ex}
\renewcommand{\thepart}{\arabic{part}}
\let\mysection\part
\usepackage{lipsum}
\begin{document}
\mysection{A chapter}
\lipsum[1]
\section{A section}
\lipsum[2]
\end{document}

创建一个全新的标题级别

如果您仍然需要文档中的部分内容以及部分以下的所有级别,则可以完全创建一个新的部分类。

\documentclass{article}
\usepackage{titlesec}
\usepackage{chngcntr}
\newcounter{mysection}
\titleclass{\mysection}{straight}[\part]
\titleformat{\mysection}[hang]
  {\normalfont\LARGE\bfseries}{\themysection}{1em}{}
\titlespacing*{\mysection}{0pt}{3.5ex plus 1ex minus .2ex}{2.3 ex plus .2ex}
\renewcommand{\themysection}{\arabic{mysection}}
\counterwithin{section}{mysection}
\usepackage{lipsum}
\begin{document}
\mysection{A chapter}
\lipsum[1]
\section{A section}
\lipsum[2]
\end{document}

目录

如果您选择最后一个选项,则如果您使用目录,您还需要告诉 TOC 有关您的新部分的信息。为此,请使用与titletoc配合良好的包。在这个完整的示例中,我在和titlesec之间添加了一个新的部分级别,然后定义了它的计数器(在包的帮助下)。然后我使用命令 from 来告诉 TOC 如何格式化级别。\part\sectionchngcntr\titlecontentstitletoc\mysection

\documentclass{article}
\usepackage{titlesec}
\usepackage{titletoc}
\usepackage{chngcntr}
\newcounter{mysection}
\titleclass{\mysection}{straight}[\part]
\titleformat{\mysection}[hang]
  {\normalfont\LARGE\bfseries}{\themysection}{1em}{}
\titlespacing*{\mysection}{0pt}{3.5ex plus 1ex minus .2ex}{2.3 ex plus .2ex}
\renewcommand{\themysection}{\arabic{mysection}}
\renewcommand{\thesection}{\themysection.\arabic{section}}
\counterwithin{section}{mysection}
\contentsmargin{1em}
\titlecontents*{mysection}[2em]{}{\bfseries\contentslabel{2em}}{}
{\titlerule*[.5pc]{.}\contentspage}[]
\dottedcontents{section}[4em]{}{2em}{.5pc}
\usepackage{lipsum}
\usepackage{hyperref}
\begin{document}
\tableofcontents
\mysection{My custom section}
\lipsum[1]
\section{A section}
\lipsum[2]
\end{document}

代码输出

相关内容