如何在LaTeX的article文档类中使用report类的\part{}排版样式
解决方案
完全可以在article文档类中复刻report类的\part排版效果,常用有两种实现方案:
方案1:使用titlesec宏包快速配置(推荐)
无需修改底层定义,仅需在导言区加入以下代码即可实现完全一致的效果:
\usepackage{titlesec} % 将part调整为顶层标题类 \titleclass{\part}{top} % 配置part排版样式 \titleformat{\part}[display] {\normalfont\huge\bfseries\centering} {\partname~\thepart} {20pt} {\Huge} % 配置part上下边距 \titlespacing*{\part}{0pt}{50pt}{40pt}
该配置复刻了report类\part的所有默认样式特征:标题居中、先显示大字号的「Part + 序号」、间隔20pt后显示更大字号的part标题,上下边距也和report类默认参数完全对齐。
方案2:无宏包依赖的原生定义复用
如果你不想额外引入第三方宏包,可以直接将report类中\part的原生定义复制到你的article文档导言区:
\makeatletter \renewcommand\part{% \if@openright \cleardoublepage \else \clearpage \fi \thispagestyle{plain}% \if@twocolumn \onecolumn \@tempswatrue \else \@tempswafalse \fi \null\vfil \secdef\@part\@spart} \def\@part[#1]#2{% \ifnum \c@secnumdepth >-2\relax \refstepcounter{part}% \addcontentsline{toc}{part}{\protect\numberline{\thepart}#1}% \else \addcontentsline{toc}{part}{#1}% \fi \markboth{}{}% {\centering \interlinepenalty \@M \normalfont \ifnum \c@secnumdepth >-2\relax \huge\bfseries \partname\nobreakspace\thepart \par \vskip 20\p@ \fi \Huge \bfseries #2\par}% \@endpart} \def\@spart#1{% \markboth{}{}% {\centering \interlinepenalty \@M \normalfont \Huge \bfseries #1\par}% \@endpart} \def\@endpart{% \vfil\newpage \if@twoside \if@openright \null \thispagestyle{empty}% \newpage \fi \fi \if@tempswa \twocolumn \fi} \makeatother
该方案完全复用report类的原生逻辑,包括默认分页规则、part页的plain页码样式、目录写入逻辑,和直接使用report类的\part效果没有任何差异。如果不需要\part默认分页,删除代码中\clearpage/\cleardoublepage相关逻辑即可。
内容的提问来源于stack exchange,提问作者gapansi99
相关产品推荐
相关产品推荐

