我正在为我的数学课定制课程:
- “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}
就没有效果了。