需要有关自定义类的建议

需要有关自定义类的建议

首先感谢你们提供的所有资料。这些资料对我帮助很大,如果没有它们,我不可能完成我的第一堂课。

这是我的小作品。我想听听你的建议。你觉得这个代码怎么样?它可靠吗?我是一名法国中学数学老师(我们这里称之为“collège”),学生年龄为 11 至 15 岁。我打算用它来编写我的所有课程、考试和解决方案。

它将使用 XeTeX 进行编译。

有一个 base.cls 文件,它是其他类的基础。它设置了所有基本元素,例如语言、字体、单位。选项包括:

  • dys:将字体设置为 OpenDyslexic
  • 打印:删除链接并设置衬线字体,除非 dys 选项也被激活
  • nb:文档切换到灰色模式(nb 代表“noir et blanc”,即“黑白”)

然后 corrige.cls(“corrige”在英语中代表“解决方案”)基于 base.cls,并添加了一些精美的页眉和页脚以及几个环境。它将相同的选项传递给基类。

这里有一些类别和一个非常简单的工作示例。

如果您有任何意见,请告诉我。另外,这是我的第一篇文章,如果格式不正确,请多多包涵。

伊万

基础类.cls:

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


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

% Si l'option 'dys' est passée à la classe, la police par défaut devient OpenDyslexic
\DeclareOption{dys}{\def\DocMainFont{OpenDyslexic}}

% 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]{article}

% 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{XITS Math}
\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}

corrige.cls:

% Classe définie pour compilation avec XeTeX

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{corrige}[2020/05/10 v0.2 Classe pour les corrigés]

%%%%%%%%%%%%%%%%%%%
% 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{base}

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

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

\RequirePackage{lastpage}

% Header

\newcommand\Header{
    \begin{tikzpicture}[remember picture,overlay]
    \fill[LimeGreen]
    (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 Correction} ;
    \node[font=\sffamily\bfseries\color{LimeGreen},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[LimeGreen]
    (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=\ttfamily\bfseries\color{white}] at (current page.south east) {\large Page \thepage\ sur \pageref*{LastPage}};
    \end{tikzpicture}%
}


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

% Exercice

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

\newcommand{\arrowtitle}[2]{
    \begin{tikzpicture}
    \fill[#2] (0,0) rectangle (4,.8) -- (4.3,.4) -- (4,0) ;
    \draw (.2cm,.4) node[anchor=west,font=\scshape\selectfont\color{white}]{\Large #1} ;
    \end{tikzpicture}

    \medskip

}

\newcommand{\lignedefin}[1]{
    \begin{center}
        \begin{tikzpicture}
        \fill[#1] (0,0) rectangle (\textwidth,.33mm) ;
        \end{tikzpicture}
    \end{center}
}


\newenvironment{activite}{\arrowtitle{Activité}{LimeGreen}}{\lignedefin{LimeGreen}}
%\newenvironment{jesaisfaire}{\arrowtitle{Je sais faire}{LimeGreen}}{\lignedefin{LimeGreen}}
%\newenvironment{exercices}{\arrowtitle{Exercices}{OrangePen}}{\lignedefin{OrangePen}}

\RequirePackage[framemethod=TikZ]{mdframed}

\newenvironment{jesaisfaire}{%
    \mdfsetup{%
        backgroundcolor=LimeGreen!10,%
        roundcorner=5pt,%
        frametitle={%
            \tikz[baseline=(current bounding box.east),outer sep=0pt,rounded corners=5pt]
            \node[anchor=east,rectangle,fill=LimeGreen!80]
            {\strut \color{white} \large\sffamily\scshape \hspace*{.2cm}Je sais faire\hspace*{.2cm}};}
    }%
    \mdfsetup{innertopmargin=10pt,linecolor=LimeGreen!40,%
        linewidth=1pt,topline=true,
        frametitleaboveskip=\dimexpr-\ht\strutbox\relax,}
    \begin{mdframed}[]\relax%
    }{\end{mdframed}
}

\newenvironment{exercices}{%
    \mdfsetup{%
        backgroundcolor=OrangePen!10,%
        roundcorner=5pt,%
        frametitle={%
            \tikz[baseline=(current bounding box.east),outer sep=0pt,rounded corners=5pt]
            \node[anchor=east,rectangle,fill=OrangePen!80]
            {\strut \color{white} \large\sffamily\scshape \hspace*{.2cm}Exercices\hspace*{.2cm}};}
    }%
    \mdfsetup{innertopmargin=10pt,linecolor=OrangePen!40,%
        linewidth=1pt,topline=true,
        frametitleaboveskip=\dimexpr-\ht\strutbox\relax,}
    \begin{mdframed}[]\relax%
    }{\end{mdframed}
}

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

\color{BlackPen}

工作示例:

\documentclass{corrige}

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

\begin{document}    

\begin{jesaisfaire}
    \begin{coreno}
        \begin{itemize}
            \item $10^5 = 10 \times 10 \times 10 \times 10 \times 10 = 100\,000$
            \item $10^7 = 10 \times 10 \times 10 \times 10 \times 10 \times 10 \times 10 = 10\,000\,000$
            \item $10^3 = 10 \times 10 \times 10 = 1\,000$
        \end{itemize}
    \end{coreno}

    \begin{coreno}
        \begin{itemize}
            \item $10^{-2} = 0,1 \times 0,1 = 0,01$
            \item $10^{-5} = 0,1 \times 0,1 \times 0,1 \times 0,1 \times 0,1 = 0,000\,01$
            \item $10^{-7} = 0,1 \times 0,1 \times 0,1 \times 0,1 \times 0,1 \times 0,1 \times 0,1 = 0,000\,000\,1$
        \end{itemize}
    \end{coreno}
\end{jesaisfaire}

\begin{exercices}
    \begin{corexo}
        \hfill\vspace*{-2em}    
        \begin{multicols}{3}
            \begin{itemize}
                \item Cent : $10^2$
                \item Un millième : $10^{-3}$
                \item Dix mille : $10^4$
                \item Dix : $10^1$
                \item Un dixième : $10^{-1}$
                \item Un million : $10^6$
                \item Dix millions : $10^7$
                \item Un centième : $10^{-2}$
                \item Mille : $10^3$
                \item Un milliard : $10^9$
                \item Dix milliards : $10^{10}$
                \item Un millionième : $10^{-6}$
            \end{itemize}
        \end{multicols}
    \end{corexo}

    \bigskip

    \begin{corexo}
        \hfill\vspace*{-2em}    
        \begin{multicols}{3}
            \begin{itemize}
                \item $10^0 = 1$
                \item $10^{-1} = 0,1$
                \item $10^{-7} = 0,000\,000\,1$
                \item $10^9 = 1\,000\,000\,000$
                \item $10^{-4} = 0,000\,1$
                \item $10^1 = 10$
                \item $10^5 = 100\,000$
                \item $10^3 = 1\,000$
                \item[] \phantom{$10^{-4} = 0,000\,1$}
                \item[] \phantom{$10^1 = 10$}
                \item[] \phantom{$10^5 = 100\,000$}
                \item[] \phantom{$10^3 = 1\,000$}
            \end{itemize}
        \end{multicols}
    \end{corexo}

    \bigskip

    \begin{corexo}
        \hfill\vspace*{-2em}    
        \begin{multicols}{3}
            \begin{itemize}
                \item $10^3 < 2\,345 < 10^4$
                \item $10^5 < 115\,000 < 10^6$
                \item $10^{-3} < 0,001\,57 < 10^{-2}$
                \item $10^4 < 43\,000 < 10^5$
                \item $10^{-4} < 0,000\,5 < 10^{-3}$
                \item $10^{5} < 127\,560 < 10^{6}$
                \item $10^{-5} < 0,000\,07 < 10^{-4}$
                \item $10^{3} < 1\,032,1 < 10^{4}$
                \item $10^{2} < 145,308 < 10^{3}$
            \end{itemize}
        \end{multicols}
        \end{corexo}

\end{exercices}

\end{document}

相关内容