首先感谢你们提供的所有资料。这些资料对我帮助很大,如果没有它们,我不可能完成我的第一堂课。
这是我的小作品。我想听听你的建议。你觉得这个代码怎么样?它可靠吗?我是一名法国中学数学老师(我们这里称之为“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}