如题,希望使用elegantbook模板实现让「chapter」的首页也显示正常的页码?
虽然这是book.cls文档类的默认行为,也是大多数book排版的惯例:
% book.cls Line 350~354
\newcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi
\thispagestyle{plain}%
\global\@topnum\z@
\@afterindentfalse
\secdef\@chapter\@schapter}下面是MWE:
\documentclass[lang=cn,scheme=chinese]{elegantbook}
\usepackage{zhlipsum}
\geometry{paperheight=10cm}
\begin{document}
\chapter{标题标题}
\zhlipsum[2]
\chapter{标题标题}
\zhlipsum[2]
\end{document}
方案一:使用fancyhdr提供的方案,将plain设置为fancy样式:
\documentclass[lang=cn,scheme=chinese]{elegantbook}
\usepackage{zhlipsum}
\geometry{paperheight=10cm}
\fancypagestyle{plain}[fancy]{}
\begin{document}
\chapter{标题标题}
\zhlipsum[2]
\chapter{标题标题}
\zhlipsum[2]
\end{document}
方案二:使用etoolbox提供的\patchcmd命令:
\documentclass[lang=cn,scheme=chinese]{elegantbook}
\usepackage{zhlipsum}
\geometry{paperheight=10cm}
\patchcmd{\chapter}{\thispagestyle{plain}}{}{}{}
\begin{document}
\chapter{标题标题}
\zhlipsum[2]
\chapter{标题标题}
\zhlipsum[2]
\end{document}
方案三:基于ctexheading提供的功能👇

但要尤其注意的是,在elegantbook.cls中使用的是:
% Line 194-221
\ifdefstring{\ELEGANT@lang}{cn}{
\ifdefstring{\ELEGANT@chinesefont}{founder}{
\RequirePackage[UTF8, scheme=plain, fontset=none]{ctex}
\setCJKmainfont[BoldFont={FZHei-B01},ItalicFont={FZKai-Z03}]{FZShuSong-Z01}
\setCJKsansfont[BoldFont={FZHei-B01}]{FZKai-Z03}
\setCJKmonofont[BoldFont={FZHei-B01}]{FZFangSong-Z02}
\setCJKfamilyfont{zhsong}{FZShuSong-Z01}
\setCJKfamilyfont{zhhei}{FZHei-B01}
\setCJKfamilyfont{zhkai}[BoldFont={FZHei-B01}]{FZKai-Z03}
\setCJKfamilyfont{zhfs}[BoldFont={FZHei-B01}]{FZFangSong-Z02}
\newcommand*{\songti}{\CJKfamily{zhsong}}
\newcommand*{\heiti}{\CJKfamily{zhhei}}
\newcommand*{\kaishu}{\CJKfamily{zhkai}}
\newcommand*{\fangsong}{\CJKfamily{zhfs}}}{\relax}
\ifdefstring{\ELEGANT@chinesefont}{nofont}{
\RequirePackage[UTF8,scheme=plain,fontset=none]{ctex}
\xeCJKsetup{AutoFakeBold=true}
}{\relax}
\ifdefstring{\ELEGANT@chinesefont}{ctexfont}{
\RequirePackage[UTF8,scheme=plain]{ctex}
\xeCJKsetup{AutoFakeBold=true}
}{\relax}
\AfterEndPreamble{
\setlength\parindent{2\ccwd}}
}{\relax}\RequirePackage[UTF8,scheme=plain]{ctex}这并不会启用heading=true:

下面的workaround使用了\PassOptionsToPackage{heading=true}{ctex}:
\PassOptionsToPackage{heading=true}{ctex}
\documentclass[lang=cn,scheme=chinese]{elegantbook}
\usepackage{zhlipsum}
\usepackage{geometry}
\geometry{paperheight=10cm}
\begin{document}
\ctexset{chapter/pagestyle = fancy}
\chapter{标题标题}
\zhlipsum[2]
\chapter{标题标题}
\zhlipsum[2]
\end{document}
期待更多可能的回答~
@u101077 远方不远 还指出也可以直接重定义
plain, 本质是相同的: