cours-snt/template/template_cours.cls
2021-12-06 10:04:28 +01:00

474 lines
13 KiB
TeX
Executable File
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

% This is a Latex template, inspired from
% http://tutex.tug.org/pracjourn/2005-4/hefferon/hefferon.pdf
%
% Copyright © 2019 Adrian Amaglio <adrian@amaglio.fr>
% This work is free. You can redistribute it and/or modify it under the
% terms of the Do What The Fuck You Want To Public License, Version 2,
% as published by Sam Hocevar. See http://www.wtfpl.net/ for more details.
% Contributors : Marie D,
% -----------------------------------------------------------------------------
% Define Document properties
% -----------------------------------------------------------------------------
% --- Class structure: identification part
% ---
\ProvidesClass{../../template/template_cours}[Cours en lycée]
\NeedsTeXFormat{LaTeX2e}
% --- Class structure: declaration of options part
% ---
% This class extends the article class
% Read all the documentclass options; pass them to article,
% ---
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
% --- Class structure: execution of options part
% ---
\ProcessOptions \relax
% --- Class structure: Loading parent class
% ---
\LoadClass{article}
% --- Force A4 paper
% ---
% TODO: Can we create a A3 or A5 document with this template?
\usepackage[a4paper]{geometry}
% --- Loading common packages
% ---
% --- Be french and utf-8
% ---
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage[T1]{fontenc}
%\usepackage{amsmath}%why
%\usepackage{amsfonts}%why
%\usepackage{amssymb}%why
% --- Define hyperlinks style
% ---
\usepackage{xcolor}
\usepackage{hyperref}
\hypersetup{pdfpagemode={UseOutlines},
bookmarksopen=true,
bookmarksopenlevel=0,
hypertexnames=false,
colorlinks=true, % Set to false to disable coloring links
citecolor=green!40!black!90, % The color of citations
linkcolor=red!40!black!80, % The color of references to document elements (sections, figures, etc)
urlcolor=blue!40!black!80, % The color of hyperlinks (URLs)
pdfstartview={FitV},
breaklinks=true,
}
% --- Define document margins
% ---
\geometry{top=2cm, bottom=2cm, left=2cm, right=2cm}
%\setlength{\textheight}{715pt} \addtolength{\voffset}{-90pt}
%\setlength{\textwidth}{485pt} \addtolength{\hoffset}{-70pt}
% --- Paper and page layout
% ---
\setlength{\parindent}{0pt}
%\setlength{\headheight}{20pt}
\setlength{\headheight}{14.2pt}
% --- New page for each section
% ---
\usepackage{titlesec}
%\newcommand{\sectionbreak}{\pagebreak}
%not working as expected :(
% --- Define document font
% ---
\usepackage{mathpazo}
% TODO dyslexic friendly font
%\usepackage{newcent}
%Dyslexie
%OpenDyslexic (open-dyslexic) by Abelardo Gonzalez is licensed under a Creative Commons Attribution 3.0 Unported License
%Lexia Readable
% -----------------------------------------------------------------------------
% Include and define nice functions
% -----------------------------------------------------------------------------
% --- Include pictures
% ---
\usepackage{graphicx}
% \usepackage{rotating, graphicx}
% Why
%\usepackage{array}
% --- To display typewriter style text
% ---
\usepackage{listings}
% --- Some useful commands
\newcommand{\bigO}{\textit{O}}
\newcommand\ignore[1]{{}}
\newcommand{\correc}[1]{\textbf{\textcolor{codegreen}{#1}}}
\newcommand{\motcle}[1]{\texttt{\textcolor{blue}{#1}}}
\newcommand{\mothtml}[1]{\texttt{<\textcolor{blue}{#1}>}}
\newcommand{\todo}[1]{\textcolor{red}{#1}}
% --- Register some information about the document
% ---
\newcommand{\thelicencepic}{cc-by-sa.png}
\newcommand{\thelicencelink}{https://creativecommons.org}
\newcommand{\thelevel}{SNT}
\newcommand{\thesequence}{Séquence 0}
\newcommand{\themoreinNSI}{}
% --- Licence filler
\newcommand\licencepic{\includegraphics[height=\baselineskip]{../../licences/\thelicencepic}}
% --- More in NSI indicator
% --- This command just fill the variable themoreinNSI
\newcommand\moreinNSI{\def\themoreinNSI{Sujet approfondi en NSI}}
% --- Store title, author and date to use them later, even after maketitle emptyed them
% ---
\let\titleoriginal\title % save original \title macro
\renewcommand{\title}[1]{ % substitute for a new \title
\titleoriginal{#1}% % define the real title
\def\thetitle{#1} % define \thetitle
}
\let\dateoriginal\date % save original \date macro
\renewcommand{\date}[1]{ % substitute for a new \date
\dateoriginal{#1}% % define the real date
\def\thedate{#1} % define \thedate
}
\let\authororiginal\author % save original \author macro
\renewcommand{\author}[1]{ % substitute for a new \author
\authororiginal{#1}% % define the real author
\def\theauthor{#1} % define \theauthor
}
% --- Header and footer
%---
\usepackage{fancyhdr}
\pagestyle{fancy}
\lhead{\themoreinNSI}
\chead{}
\rhead{\thelevel\thedate~: \thesequence}
\usepackage{lastpage}
\renewcommand{\footrulewidth}{0.4pt}% default hline is 0pt
\lfoot{\href{\thelicencelink}{\licencepic} \theauthor}
\cfoot{}
\rfoot{\thepage \,/ \pageref{LastPage}}
\def \ifempty#1{\def\temp{#1} \ifx\temp\empty }
% --- Document title
% ---
% remove spacing around date:
%\usepackage{titling}
%\predate{}
%\postdate{}
\AtBeginDocument{%
\dateoriginal{} % clear date
\authororiginal{}
\ifx \@title\empty \else \maketitle \fi
\thispagestyle{fancy}
}
% --- Academic year command
% --- Use: \academicyear to display text like "2020-2021"
% --- Use: \academicyear[-1] to display text like "2019-2020"
% --- Use: \academicyear[0][/][ to display text like "2020/2021"
\usepackage{xparse}
\newcounter{myyear}
\newcounter{myyearprevious}
\newcounter{myyearnext}
\NewDocumentCommand{\academicyear}{O{0} O{-}}{
% Current year %
\newcommand{\myyear}{\the\year}
% Previous year %
\newcommand\myyearprevious{\the\numexpr\myyear+#1-1\relax}
% Next year %
\newcommand\myyearnext{\the\numexpr\myyear+#1+1\relax}
%% Print academic year %
\ifnum\month<8 \myyearprevious#2\myyear \else\myyear#2\myyearnext\fi
}
% --- some optional packages
% \usepackage{multirow} % to use multirow in tabular
\usepackage{amsmath} % for more maths symbols and so on
% --- pour barrer du texte
\usepackage{ulem}
% --- Some color definitions
\definecolor{codegreen}{rgb}{0,0.6,0}
\definecolor{codegray}{rgb}{0.5,0.5,0.5}
\definecolor{codepurple}{rgb}{0.58,0,0.82}
\definecolor{backcolour}{rgb}{0.95,0.95,0.92}
\definecolor{rouge_brique}{HTML}{B6321C}
\xdefinecolor{darkblue}{rgb}{0,0,0.4}
\xdefinecolor{darkred}{rgb}{0.4,0,0}
% --- Javascript listing coloration
% ---
\lstdefinelanguage{JavaScript}{
keywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break, let},
keywordstyle=\color{blue}\bfseries,
ndkeywords={class, export, boolean, throw, implements, import, this, document},
ndkeywordstyle=\color{darkgray}\bfseries,
identifierstyle=\color{black},
sensitive=false,
comment=[l]{//},
morecomment=[s]{/*}{*/},
commentstyle=\color{purple}\ttfamily,
stringstyle=\color{red}\ttfamily,
morestring=[b]',
morestring=[b]"
}
% --- Some Python highlightings presets
% ---
\lstdefinestyle{mystyle}{
backgroundcolor=\color{backcolour},
commentstyle=\color{codegreen},
% keywordstyle=\color{magenta},
keywordstyle=\color{blue},
% keywordstyle=\color{darkblue},
numberstyle=\tiny\color{codegray},
% stringstyle=\color{codepurple},
stringstyle=\color{rouge_brique},
basicstyle=\ttfamily\footnotesize,
breakatwhitespace=false,
breaklines=true,
captionpos=b,
keepspaces=true,
numbers=left,
numbersep=5pt,
showspaces=false,
showstringspaces=false,
showtabs=false,
tabsize=2,
inputencoding=utf8,
extendedchars=true,
literate={ç}{{\c{c}}}1 {à}{{`a}}1 {é}{{'e}}1 {è}{{`e}}1 {î}{{^i}}1,
}
% --- Some HTML highlightings presets
% ---
\lstdefinestyle{mystylehtml}{
backgroundcolor=\color{backcolour},
commentstyle=\color{codegreen},
% keywordstyle=\color{orange},
keywordstyle=\color{blue},
numberstyle=\tiny\color{codegray},
% stringstyle=\color{codepurple},
stringstyle=\color{red},
basicstyle=\ttfamily\footnotesize,
breakatwhitespace=false,
breaklines=true,
captionpos=b,
keepspaces=true,
numbers=left,
numbersep=5pt,
showspaces=false,
showstringspaces=false,
showtabs=false,
tabsize=2
}
% --- Style configuration
\lstset{style=mystyle}
\lstset{language=Python}
\lstset{frame=lines}
\lstset{basicstyle=\footnotesize}
% --- Environment creator
% --- Handy to have a standard environment
% TODO add a symbole to each environment for daltonian students or B&W printing
\usepackage[many]{tcolorbox}
% This command define a new environment, cartouche style.
% 1: name
% 2: Text to display in cartouche
% 3: font color of cartouche
% 4: back color of cartouche
% TODO is there a way to reset the counter from a document?
\newcommand{\myenvironment}[4]{
\newtcolorbox[
auto counter,
% number within=chapter
]{#1}{%
%breakable, % Bug, add a cartouche on new page, over text
enhanced,
colback=white,
colbacktitle=white,
arc=0pt,
boxrule=0pt,
leftrule=1pt,
rightrule=0pt,
toprule=0pt,
bottomrule=0pt,
titlerule=0pt,
colframe=#4,
fonttitle=\color{#4}\sffamily\scshape,
overlay={
\node[
outer sep=-1pt,
anchor=west,
fill=#4,
font=\color{#3}\sffamily\scshape
] at (title.west) {#2~\thetcbcounter};
},
adjusted title={}
}
}
% --- Some nice color sets
% ---
\definecolor{yellowtitle}{RGB}{133,100,4}
\definecolor{yellowtitleback}{RGB}{255,243,205}
\definecolor{yellowtitleborder}{RGB}{255,238,196}
\definecolor{turquoisetitle}{RGB}{12,84,96}
\definecolor{turquoisetitleback}{RGB}{209,236,241}
\definecolor{turquoisetitleborder}{RGB}{190,229,235}
\definecolor{redtitle}{RGB}{114,28,36}
\definecolor{redtitleback}{RGB}{248,215,218}
\definecolor{redtitleborder}{RGB}{245,198,203}
\definecolor{greentitle}{RGB}{21,87,36}
\definecolor{greentitleback}{RGB}{212,237,218}
\definecolor{greentitleborder}{RGB}{195,230,203}
% --- Some environments
% ---
%\myenvironment{exercice}{Exercice}{greentitle}{greentitleback}
\myenvironment{rappel}{Rappel}{greentitle}{greentitleback}
\myenvironment{notion}{Notions abordées}{greentitle}{greentitleback}
\myenvironment{example}{Exemple}{yellowtitle}{yellowtitleback}
\myenvironment{important}{Important}{yellowtitle}{yellowtitleback}
\myenvironment{further}{Pour aller plus loin}{greentitle}{greentitleback}
%\myenvironment{question}{Réponse - Question}{turquoisetitle}{turquoisetitleback}
\myenvironment{question}{Question}{turquoisetitle}{turquoisetitleback}
\myenvironment{definition}{Définition}{redtitle}{redtitleback}
\myenvironment{regle}{Règle}{redtitle}{redtitleback}
%\myenvironment{consigne}{Réponse - À faire}{redtitle}{redtitleback}
\myenvironment{consigne}{À faire}{redtitle}{redtitleback}
\myenvironment{savoir}{À savoir}{redtitle}{redtitleback}
\myenvironment{important2}{Important}{redtitle}{redtitleback}
\myenvironment{exercice}{Exercice}{turquoisetitle}{turquoisetitleback}
\myenvironment{methode}{Méthode}{turquoisetitle}{turquoisetitleback}
% --- Create fake \onslide and other commands for standalone picture
% ---
% TODO is this working?
\usepackage{xparse}
\NewDocumentCommand{\onslide}{s t+ d<>}{}
\NewDocumentCommand{\only}{d<>}{}
\NewDocumentCommand{\uncover}{d<>}{}
\NewDocumentCommand{\visible}{d<>}{}
\NewDocumentCommand{\invisible}{d<>}{}
% --- Some nice left bar for answer environment
% ---
\usepackage{framed}
\usepackage{xcolor}
\renewenvironment{leftbar}[1][\hsize]
{%
\def\FrameCommand
{%
{\color{turquoisetitleborder}\vrule width 3pt}%
\hspace{0pt}%must no space.
\fboxsep=\FrameSep\colorbox{turquoisetitleback}%
}%
\MakeFramed{\hsize#1\advance\hsize-\width\FrameRestore}%
}
{\endMakeFramed}
% --- Answer environment
% --- Create an 'answer' environment, that will be hidden if the command \answersfalse is used
\usepackage{ifthen}
\newif\ifanswers
\answerstrue % Answers are displayed by default.
% Actual answer command
%\newenvironment{terseA}
%{
% \ifanswers
% \begin{itshape}
% \leftbar
%}
%{
% \endleftbar
% \end{itshape}
% \fi
%}
\newcommand\terseA[1]{
\ifanswers
\begin{itshape}
\leftbar
#1
\endleftbar
\end{itshape}
\fi
}
% --- Question env
% --- Create a 'question' environment that display text 'Question' and a counter
\newcounter{simplequestions}
\setcounter{simplequestions}{1}
\newenvironment{terseQ}
{
\textbf{Question \arabic{simplequestions}}
\stepcounter{simplequestions}
}{
}
%\newcommand{\terseQuestion}[1]{
% \textbf{Question \arabic{simplequestions}}
% \stepcounter{simplequestions}
% #1
%}
% --- A duration indication
% ---
\newcommand\duration[1]{
\small{#1}
}
% --- Some default values
% ---
\date{\academicyear}
\title{}
\author{}