Я использую класс книги. Я хочу отключить стили страниц (номер страницы, верхний и нижний колонтитулы) на первой странице каждой главы в моем основном материале, нонетв \frontmatter
- где я хочу, чтобы в нижнем колонтитуле (в правом углу) были римские цифры.
Я могу отключить стиль страницы на первой странице каждой главы во всем документе с помощью:
\renewcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi
\thispagestyle{empty}% original style: plain
\global\@topnum\z@
\@afterindentfalse
\secdef\@chapter\@schapter}
\makeatother
но это также накладывает \pagestyle{empty}
на первую страницу каждой "главы" в титульном листе, так что страницы TOC не нумеруются. Я хочу, чтобы страницы TOC были пронумерованы, но я не знаю, как это сделать.
МВЭ:
\documentclass[a4paper,11pt,titlepage,oneside,openany]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{kantlipsum}
% empty style for the first page of every chapter
\makeatletter
\renewcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi
\thispagestyle{empty}% original style: plain
\global\@topnum\z@
\@afterindentfalse
\secdef\@chapter\@schapter}
\makeatother
\usepackage{makeidx}
\usepackage[titles]{tocloft}
\usepackage{fancyhdr}
\fancyhead{} % clear default layout
\fancyfoot{} % clear default layout
\fancypagestyle{mainmatter}{%
\fancyhead[L]{\sffamily \small \color{darkgray}\MakeUppercase{\bfseries \leftmark}}
\fancyhead[R]{\nouppercase \scshape \small \thepage}
}
\fancypagestyle{frontmatter}{%
\fancyhead[L]{}
\fancyhead[R]{}
\fancyfoot[R]{\thepage}
}
\begin{document}
\frontmatter
\pagestyle{frontmatter}% frontmatter page style
\clearpage
\tableofcontents
\clearpage % with tocloft we need this
\listoffigures
\clearpage % with tocloft we need this
\listoftables
\clearpage
\mainmatter
\pagestyle{mainmatter}
\chapter{A}
\kant
\chapter{B}
\kant
\chapter{C}
\kant
\end{document}
решение1
memoir
предоставляет условие \if@mainmatter
, которое вы можете использовать для определения того, находитесь ли вы в \mainmatter
разделе документа:
\documentclass[a4paper,11pt,titlepage,oneside,openany]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{kantlipsum}
% empty style for the first page of every chapter, except in \frontmatter
\makeatletter
\renewcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi
\if@mainmatter
\thispagestyle{empty}% plain page style in mainmatter
\else
\thispagestyle{plain}% empty page style outside of mainmatter
\fi%
\global\@topnum\z@
\@afterindentfalse
\secdef\@chapter\@schapter}
\makeatother
\usepackage{makeidx}
\usepackage[titles]{tocloft}
\usepackage{fancyhdr}
\fancyhead{} % clear default layout
\fancyfoot{} % clear default layout
\fancypagestyle{mainmatter}{%
\fancyhead[L]{\sffamily \small \color{darkgray}\MakeUppercase{\bfseries \leftmark}}
\fancyhead[R]{\nouppercase \scshape \small \thepage}
}
\fancypagestyle{frontmatter}{%
\fancyhead[L]{}
\fancyhead[R]{}
\fancyfoot[R]{\thepage}
}
\begin{document}
\frontmatter
\pagestyle{frontmatter}% frontmatter page style
\clearpage
\tableofcontents
\clearpage % with tocloft we need this
\listoffigures
\clearpage % with tocloft we need this
\listoftables
\clearpage
\mainmatter
\pagestyle{mainmatter}
\chapter{A}
\kant
\chapter{B}
\kant
\chapter{C}
\kant
\end{document}
Хотя я использовал empty
и plain
в качестве стилей страниц глав в основном и вводном тексте соответственно, вы можете обновить их по своему усмотрению или даже создать свои собственные.
Также обратите внимание, что memoir
обеспечивает функциональность для создания верхних/нижних колонтитулов, поэтому вам не нужноfancyhdr
для этого.
решение2
Thetitlesec
package предоставляет \assignpagestyle{\chapter}{<style>}
команду, которая может использоваться так же, как и , \pagestyle
но изменяет только первую страницу каждой главы. Это то же самое, что вы делаете с \thispagestyle{}
, но без явного обновления \chapter
.