Подавление нумерации страниц на первой странице главы в основном материале, но *не* в вводной части

Подавление нумерации страниц на первой странице главы в основном материале, но *не* в вводной части

Я использую класс книги. Я хочу отключить стили страниц (номер страницы, верхний и нижний колонтитулы) на первой странице каждой главы в моем основном материале, нонетв \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

Thetitlesecpackage предоставляет \assignpagestyle{\chapter}{<style>}команду, которая может использоваться так же, как и , \pagestyleно изменяет только первую страницу каждой главы. Это то же самое, что вы делаете с \thispagestyle{}, но без явного обновления \chapter.

Связанный контент