尽管 \pagestyle{empty},但首页上仍显示不需要的页码

尽管 \pagestyle{empty},但首页上仍显示不需要的页码

我正在为我的数学课定制课程:

  • “cours” 类(自定义)使用选项“cours”加载“基础”类(自定义)
  • “基础”类加载“报告”(常规)。

'cours' 类有一个 \pagestyle{empty},如果我要求基础加载“文章”而不是“报告”,它会按预期工作。

但是如果我使用报告,并且因为我想要文档中的章节,那么第一页的底部会有一个额外的“1”(而不是其他页面)。

我正在使用 XeTeX 进行编译。

课程目录

% Classe définie pour compilation avec XeTeX

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{cours}[2020/05/10 v0.2 Classe pour les cours]

%%%%%%%%%%%%%%%%%%%
% Initialisation  %
%%%%%%%%%%%%%%%%%%%

% On passe les options non spécifiques à la classe de base
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{base}}
\ProcessOptions\relax

% Et on charge la classe de base
\LoadClass[cours]{base}

% Puis viennent les spécificités de la classe corrigés

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%      Header and footer      %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\RequirePackage{lastpage}
\def\BaseColor{BrickRed}

% Header
\newcommand\Header{
    \begin{tikzpicture}[remember picture,overlay]
        \fill[\BaseColor]
        (current page.north west) -- ([xshift=5cm]current page.north) -- ([xshift=3cm,yshift=75pt]current page.north|-current page text area.north) -- ([yshift=75pt]current page.north west|-current page text area.north west) -- cycle ;
        \node[font=\sffamily\bfseries\color{white},anchor=north west, xshift=55pt,yshift=-15pt] at (current page.north west) {\Huge \thetitle} ;
        \node[font=\sffamily\bfseries\color{BlackPen},anchor=north east,xshift=-1.5cm,yshift=-17pt] at (current page.north east) {\huge Cours} ;
        \node[font=\bfseries\color{\BaseColor},anchor=north west, xshift=55pt,yshift=-55pt] at (current page.north west) {\large \thedate} ;
    \end{tikzpicture}
}

% Footer
\newcommand\Footer{%
    \begin{tikzpicture}[remember picture,overlay]
        \fill[\BaseColor]
        (current page.south east) --
        ([yshift=-30pt]current page.south east|-current page text area.south east) --
        ([yshift=-30pt,xshift=7cm]current page.south|-current page text area.south) --
        ([xshift=5cm]current page.south) --
        cycle ;
        \node[xshift=-2cm,yshift=.9cm,font=\bfseries\color{white}] at (current page.south east) {\large Page \thepage\ sur \pageref*{LastPage}};
    \end{tikzpicture}%
}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%  Environnements personnalisés  %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\theoremstyle{break}
\theorembodyfont{\normalfont}
\newtheorem{act}{Activité}
\newtheorem{exo}{Exercice}
\newtheorem{eno}{Énoncé}
\newtheorem{corexo}{Correction de l'exercice}
\newtheorem{coreno}{Correction de l'énoncé}
\newtheorem{coract}{Correction de l'activité}

\RequirePackage[framemethod=TikZ]{mdframed}

\newenvironment{bloc}[2]{%
    % Paramètres :
    % 1 : texte de la bulle
    % 2 : couleur
    \def\FillColor{#2}
    \mdfsetup{%
        backgroundcolor=\FillColor!10,%
        splitbottomskip=3mm,%
        splittopskip=1em,%
        roundcorner=5pt,%
        frametitle={%
            \tikz[baseline=(current bounding box.east),outer sep=0pt,rounded corners=5pt]
            \node[anchor=east,rectangle,fill=\FillColor!80]
            {\strut \color{white} \large\sffamily\scshape \hspace*{.2cm}#1\hspace*{.2cm}};}
    }%
    \mdfsetup{innertopmargin=10pt,linecolor=\FillColor!40,%
        linewidth=1pt,topline=true,
        frametitleaboveskip=\dimexpr-\ht\strutbox\relax,}
    \begin{mdframed}[]\relax%
    }{\end{mdframed}\vspace*{1cm}%
}

\newenvironment{activite}{\begin{bloc}{Activité}{BluePen}}{\end{bloc}}
\newenvironment{jesaisfaire}{\begin{bloc}{Je sais faire}{LimeGreen}}{\end{bloc}}
\newenvironment{exercices}{\begin{bloc}{Exercices}{OrangePen}}{\end{bloc}}

\pagestyle{empty}
\AtBeginShipout{\AtBeginShipoutAddToBox{\Header\Footer}}
\AtBeginShipoutFirst{\Header\Footer}

\color{BlackPen}

% recommended to avoid some mailer issues: https://tex.stackexchange.com/questions/543465/need-advice-on-custom-class
\endinput

基类

% Classe définie pour compilation avec XeTeX

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{base}[2020/05/10 v0.2 Classe de base pour les cours, les évals et les corrigés]

% Options
% dys : utilise la font OpenDyslexic pour le texte et pour les maths
% nb : passe le document en nuances de gris (pour imprimer ou tester l'impression)
% print : désactive les liens (pour imprimer)

% Au cas où le titre, la date ou l'auteur ne seraient pas spécifiés.

\def\thedate{%
    \makeatletter
        \@date
    \makeatother
}

\def\thetitle{%
    \makeatletter
        \@title
    \makeatother
}

\def\theauthor{%
    \makeatletter
        \@author
    \makeatother
}

% On définit la police par défaut
\def\DocMainFont{Latin Modern Sans}
\def\DocMathFont{XITS Math}

%%%%%%%%%%%%%%%%%%%%%%%
% Gestion des options %
%%%%%%%%%%%%%%%%%%%%%%%

% Classe de base
\def\BaseClass{article}

% À créer
%\DeclareOption{livre}{%
%   \def\BaseClass{book}
%}

\DeclareOption{cours}{%
    \def\BaseClass{report}
}

% À créer
%\DeclareOption{eval}{%
%   \def\BaseClass{exam}
%}

\DeclareOption{exercices}{%
    \def\BaseClass{article}
}

\DeclareOption{corrige}{%
    \def\BaseClass{article}
}

\DeclareOption{fiche}{%
    \def\BaseClass{article}
}

% Si l'option 'dys' est passée à la classe, la police par défaut devient OpenDyslexic
\DeclareOption{dys}{%
    \def\DocMainFont{OpenDyslexic}
    \def\DocMathFont{XITS Math} % En attendant de trouver une police adaptée...
}

% Si l'option 'print' :
%   - polices avec empattements sauf si dys est passé en option
%   - liens désactivés
\DeclareOption{print}{%
    %\def\dysfalse{\let\def\DocMainFont{Linux Libertine G}\relax}
    \makeatletter
        \@ifclasswith{base}{dys}{}{\def\DocMainFont{Linux Libertine G}} 
    \makeatother
    %\def\DocMainFont{Linux Libertine G}
    \PassOptionsToPackage{draft}{hyperref}
}

% Si l'option 'nb' est passée à la classe, on active l'option gray de xcolor
\DeclareOption{nb}{\PassOptionsToPackage{gray}{xcolor}}

\ProcessOptions\relax


%%%%%%%%%%%%%%%%%%%
% Initialisation  %
%%%%%%%%%%%%%%%%%%%

% Classe article et taille de police par défaut
\LoadClass[a4paper,11pt]{\BaseClass}

% geometry
\RequirePackage[hmargin=2cm,bmargin=3cm,tmargin=4.5cm,centering]{geometry}

% Polices pour le texte (polices pour les maths dans la section « Maths »)
\RequirePackage{fontspec}
\setmainfont{\DocMainFont}


% Localisation
\RequirePackage{polyglossia}
% Si une autre langue doit être utilisée, penser à changer la locale de siunitx également
\setdefaultlanguage{french}

% Liens
\RequirePackage[colorlinks=true,urlcolor=red]{hyperref}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%  Graphismes, couleurs et ornements  %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Tikz charge aussi graphicx et xcolor
% On charge donc xcolor avant pour mettre d'autres options
\RequirePackage[usenames,dvipsnames]{xcolor}
\RequirePackage{tikz}
\RequirePackage{tikzpagenodes}

%\usetikzlibrary{calc}  % Inutile ?

% Chemin par défaut pour les images
\graphicspath{{./images/}}

% Jeu de couleurs personnalisées
\definecolor{BluePen}{RGB}{46,116,181}
\definecolor{RedPen}{RGB}{240, 50, 50}
\definecolor{GreenPen}{RGB}{20, 140, 20}
\definecolor{BlackPen}{RGB}{40, 40, 40}
\definecolor{OrangePen}{RGB}{230, 150, 10}
\definecolor{LightGreen}{RGB}{25,170,75}

% Pour les ornements (à charger après xcolor)
\RequirePackage{pgfornament}


%%%%%%%%%
% Maths %
%%%%%%%%%

%\RequirePackage{mathtools}     % À tester. Si utilisé, supprimer amsmath en-dessous puisqu'il est déjà chargé par mathtools mais laisser mathtools avant ntheorem
\RequirePackage{amsmath}        % À mettre avant unicode-math et ntheorem

% Pour les theorem personnalisés
\RequirePackage[amsmath,thmmarks,hyperref]{ntheorem}

% Pour les maths en Unicode (remplace amsfonts, amssymb & co)
\RequirePackage[math-style=french]{unicode-math}

% Polices
\setmathfont{\DocMathFont}
\setmathfont[range={\mathcal,\mathbfcal},StylisticSet=1]{XITS Math} % jeu spécial pour mathcal

% Police sans empattements


% Scratch 3
\RequirePackage{scratch3}

% Gestion des unités (voir plus bas « Commandes personnalisées »)
\RequirePackage[locale=FR]{siunitx}


%%%%%%%%%%%%%%%%%%%%
%      Divers      %
%%%%%%%%%%%%%%%%%%%%

%----------------------------
% Personnalisation des listes
%----------------------------

% Liste ordonnées personnalisées
\RequirePackage[shortlabels]{enumitem}

% Hauteur de séparation des éléments de liste
\setlist{itemsep=.3em}

% Indentation des listes
\setlist[itemize]{labelindent=\parindent,leftmargin=2em}
\setlist[enumerate]{labelindent=\parindent,leftmargin=2.7em}

%-------
% Divers
%-------

% Pour la mise en page sur plusieurs colonnes
\RequirePackage{multicol}

% Pour de jolis tableaux
\RequirePackage{booktabs}

% Espacement des lignes
\RequirePackage{setspace}
\onehalfspacing

% Pas d'indentation pour les nouveaux paragraphes
\setlength\parindent{0pt}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%  Commandes personnalisées  %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\newcommand{\prl}{/\!/\ }       % droites parallèles

% Unités \u...
\newcommand{\ucm}[2][]{\SI[#1]{#2}{\cm}}    % centimètres
\newcommand{\um}[2][]{\SI[#1]{#2}{\m}}  % mètres
\newcommand{\ug}[2][]{\SI[#1]{#2}{\g}}  % grammes
\newcommand{\ukg}[2][]{\SI[#1]{#2}{\kg}}    % kilogrammes
\newcommand{\usm}[2][]{\SI[#1]{#2}{\square\m}}  % mètres carrés (square meters)

\newcommand{\aire}[1]{{\mathscr{A}}_{#1}}
\newcommand{\airet}[1]{\mathscr{A}_{\text{#1}}}

\newcommand{\peri}[1]{\mathscr{P}_{#1}}
\newcommand{\perit}[1]{\mathscr{P}_{\text{#1}}}

% Théorème de Thalès (double égalité)
\newcommand{\tthales}[6]{\frac{#1}{#2} = \frac{#3}{#4} = \frac{#5}{#6}}
\newcommand{\dthales}[4]{\frac{#1}{#2} = \frac{#3}{#4}}

\color{BlackPen}

% recommended to avoid some mailer issues: https://tex.stackexchange.com/questions/543465/need-advice-on-custom-class
\endinput

平均能量损失

\documentclass{cours}

\title{Puissances de dix}
\date{\today}

\usepackage{lipsum}

\begin{document}    

\chapter{Puissances de dix}
\lipsum[1-2]

\section{Section}
\lipsum[3]

\subsection{sous-section}
\lipsum[4]

\subsection{sous-section}
\lipsum[5]

\subsubsection{sous-sous-section}
Hi there

\subsubsection{sous-sous-section}
Hi again

\section{Section}
\lipsum[6-10]

\end{document}

我究竟做错了什么?

答案1

每一个\chapter问题\thispagestyle{plain}都会覆盖你的\pagestyle{empty}“第一章页面”。你可能需要添加

\let\ps@plain\ps@empty

作为类的一部分,使plain页面样式等同于empty。那样的话\thispagestyle{plain}就没有效果了。

相关内容