各位大佬好,我想将目录中的样式改为plain
形式的,但我在ctexset
命令中已经定义了chapter/pagestyle = myfancy
,这个命令也会将效果渲染到目录首页,测试后发现目录的等级应该是和chapter
一致的?在\tableofcontents
命令处使用\pagestyle
似乎无法覆盖ctexset
设置的效果。
这是MWE:
\documentclass[11pt]{ctexrep}
%自定义样式
\usepackage{fancyhdr}
\fancypagestyle{myfancy}{%
\fancyhf{}
\fancyhead[C]{\heiti 毕业设计(论文)}
\fancyfoot[C]{第\quad \thepage \quad 页} % 改用 \thepage 显示页码
}
\ctexset{
chapter/pagestyle = myfancy
}
\begin{document}
\tableofcontents
\chapter{1}
\chapter{2}
\end{document}
related link
出现这一现象的原因是ctexrep.cls
中定义:
其中\CTEX@setthispagestyle
定义如下,这会将myfancy
赋值给了\chapter
的原始定义,将原来的\thispagestyle{plain}
全部替换为\thispagestyle{myfancy}
同时又因为\tableofcontents
定义中将目录也定义为一个\chapter*
,于是导致了“目录的等级应该是和chapter一致的”的现象
\newcommand\tableofcontents{%
\if@twocolumn
\@restonecoltrue\onecolumn
\else
\@restonecolfalse
\fi
\chapter*{\contentsname
\@mkboth{%
\MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
\@starttoc{toc}%
\if@restonecol\twocolumn\fi
}
要想解决这一问题。可以尝试分离\chapter
和\chapter*
的样式。
OS:我感觉让\chapter
样式和ToC
中的\chapter*
样式分离的需求还蛮常见的,是否有可能让ctex
提供ToC/pagestyle
的接口选项呢(这也许值得一个issues...我先去翻翻看...有空会提)?
我不太确定这是不是一个好的实践来分离\chapter
和\chapter*
的样式
一个想法是修改\chapter*
的样式设置,即下面的代码:
\documentclass[11pt]{ctexrep}
\usepackage{etoolbox}
\makeatletter
\pretocmd{\@schapter}{\thispagestyle{plain}}{}{}
\makeatother
%自定义样式
\usepackage{fancyhdr}
\fancypagestyle{myfancy}{%
\fancyhf{}
\fancyhead[C]{\heiti 毕业设计(论文)}
\fancyfoot[C]{第\quad \thepage \quad 页} % 改用 \thepage 显示页码
}
\ctexset{
chapter/pagestyle=myfancy,
}
\begin{document}
\tableofcontents
\chapter{1}
\chapter{2}
\chapter{1}
\chapter{2}
\chapter{1}
\chapter{2}
\chapter{1}
\chapter{2}
\chapter{1}
\chapter{2}
\chapter{1}
\chapter{2}
\chapter{1}
\chapter{2}
\chapter{1}
\chapter{2}
\end{document}
当然,这也会修改所有\chapter*{}
页面的行为...
个人感觉更好的实践是上面issues中提到的,使用\frontmatter
和\mainmatter
来分划文档的不同部分的样式,但是ctexrap
没有提供这几个命令。
也许是一个使用\frontmatter
,\mainmatter
以及\backmatter
划分的例子。
\documentclass[12pt,oneside]{ctexbook}
\usepackage{zhlipsum}
\usepackage{fancyhdr}
\fancypagestyle{myfancy}{%
\fancyhf{}
\fancyhead[C]{\heiti 我是\texttt{myfancy}的样式}
\fancyfoot[C]{第\quad \thepage \quad 页}
}
\fancypagestyle{myfront}{%
\fancyhf{}
\fancyhead[C]{\heiti 我是\texttt{myfront}的样式}
}
\fancypagestyle{myback}{%
\fancyhf{}
\fancyhead[C]{\heiti 我是\texttt{myback}的样式}
}
% \ctexset{
% chapter/pagestyle=myfancy,
% }
\begin{document}
\frontmatter
\pagestyle{myfront}
\tableofcontents % 目录页首页由于\chapter*被重置为plain样式
\clearpage
\zhlipsum %其他页码为myfront样式
\mainmatter
\pagestyle{myfancy}
\chapter{111}\zhlipsum \clearpage
\chapter{222}\zhlipsum \clearpage
\backmatter
\pagestyle{myback}
\chapter*{Appendix} % 首页由于\chapter*被重置为plain样式
\zhlipsum[1-5] %其他页码为myback样式
\end{document}
请问有什么修改的办法吗,我并不想让目录这一部分全替换成为myfancy
非常感谢您的耐心解答,您给的代码效果正是我想实现的。不过他会影响到参考文献的样式。由于ctexrep和ctexbook对我的撰写影响并不大,所以我试着使用ctexbook使用frontmatter和mainmatter。
但我该如何划分样式呢?由于我需要在chapter所在页面使用myfancy样式,所以我仍然使用了chapterpagestyle = myfancy,该命令仍然会导致样式被全局设置。
@u98234 我猜测你说的参考文献不符合是因为它同样调用了
\chapter*
所致的,可以试试按照muzi老师说的: