Suprimir la numeración de páginas en la primera página del capítulo en el tema principal pero *no* en el tema principal

Suprimir la numeración de páginas en la primera página del capítulo en el tema principal pero *no* en el tema principal

Estoy usando la clase de libro. Quiero suprimir los estilos de página (número de página, encabezado, pie de página) en la primera página de cada capítulo de mi tema principal, peronoen \frontmatter: donde quiero tener números romanos en el pie de página (esquina derecha).

Puedo suprimir el estilo de página en la primera página de cada capítulo en todo el documento con:

\renewcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi
                \thispagestyle{empty}% original style: plain
                \global\@topnum\z@
                \@afterindentfalse
                \secdef\@chapter\@schapter}
\makeatother

pero esto también impone un \pagestyle{empty}en la primera página de cada "capítulo" del texto inicial, de modo que las páginas del TOC no estén numeradas. Quiero que las páginas TOC estén numeradas, pero no sé cómo hacerlo.

MWE:

\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}

Respuesta1

memoirproporciona la condición \if@mainmatterque puede utilizar para condicionar si se encuentra o no en la \mainmattersección de su documento:

\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}

Si bien he usado emptyy plaincomo estilos de página de capítulo en mainmatter y frontmatter respectivamente, puedes actualizar esto a lo que quieras, o incluso crear otros nuevos.

También tenga en cuenta que memoirproporciona funcionalidad para crear encabezados/pies de página, por lo que no necesitafancyhdrpara esto.

Respuesta2

EltitlesecEl paquete proporciona el \assignpagestyle{\chapter}{<style>}comando, que se puede usar igual \pagestylepero cambia solo la primera página de cada capítulo. Es lo mismo que estás haciendo con \thispagestyle{}, pero sin renovar explícitamente \chapter.

información relacionada