「elegantbook-latex日经问题」如何让「\chapter」页也正常显示页码?

发布于 2025-10-26 19:34:06

如题,希望使用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}

image.png

查看更多

关注者
0
被浏览
47
3 个回答
Sagittarius Rover
Sagittarius Rover 4小时前
这家伙很懒,什么也没写!

方案一:使用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}

image.png

Sagittarius Rover
Sagittarius Rover 4小时前
这家伙很懒,什么也没写!

方案二:使用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}

image.png

Sagittarius Rover
Sagittarius Rover 4小时前
这家伙很懒,什么也没写!

方案三:基于ctexheading提供的功能👇

image.png

但要尤其注意的是,在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:

image.png

下面的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}

image.png

期待更多可能的回答~

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览