From 127bc69ae2c5c4698c449e4a500f78b04b700f33 Mon Sep 17 00:00:00 2001 From: Bruno Pagani Date: Sat, 18 Jul 2020 16:07:47 +0200 Subject: [PATCH] Premier versionnage des headers --- README.md | 12 ++++++ headers_exp.sty | 16 ++++++++ headers_figs.sty | 49 +++++++++++++++++++++++ headers_fonts.sty | 31 +++++++++++++++ headers_lectures.sty | 3 ++ headers_refs.sty | 93 ++++++++++++++++++++++++++++++++++++++++++++ headers_science.sty | 38 ++++++++++++++++++ layout_style.sty | 41 +++++++++++++++++++ macros.sty | 40 +++++++++++++++++++ 9 files changed, 323 insertions(+) create mode 100644 README.md create mode 100644 headers_exp.sty create mode 100644 headers_figs.sty create mode 100644 headers_fonts.sty create mode 100644 headers_lectures.sty create mode 100644 headers_refs.sty create mode 100644 headers_science.sty create mode 100644 layout_style.sty create mode 100644 macros.sty diff --git a/README.md b/README.md new file mode 100644 index 0000000..b282a21 --- /dev/null +++ b/README.md @@ -0,0 +1,12 @@ +Fichiers d’en-tête communs pour LaTeX + +Ordre d’inclusion [opt=optionnel] : + +* \usepackage{headers_science} % Mathématiques, unités +* \usepackage{headers_lectures} % Outils pour écrire un cours [opt] +* \usepackage{headers_refs} % Références, bibliographies, tables des figures, index [opt] +* \usepackage{headers_fonts} % Polices et langues +* \usepackage{headers_figs} % Inclusions de figures, TikZ +* \usepackage{headers_exp} % Outils pour la mise en page de sujets de TP [opt] +* \usepackage{layout_style} % Adaptation de la mise en page +* \usepackage{macros} % Commandes persos diff --git a/headers_exp.sty b/headers_exp.sty new file mode 100644 index 0000000..d21221b --- /dev/null +++ b/headers_exp.sty @@ -0,0 +1,16 @@ +% Pour les symboles spéciaux utilisés +\usepackage{dictsym} + +% Environnements pour les listes de matériels et les mesures +\usepackage{enumitem} +\newenvironment{matos}{\begin{itemize}[label=\dstechnical, noitemsep, topsep=3pt, partopsep=0pt]}{\end{itemize}} +\newenvironment{solutions}{\begin{itemize}[label=\dschemical, noitemsep, topsep=3pt, partopsep=0pt]}{\end{itemize}} +\newenvironment{mesures}{\begin{itemize}[label=\dsmathematical, noitemsep, topsep=3pt, partopsep=0pt]}{\end{itemize}} + +\usepackage{tcolorbox} +\tcbuselibrary{breakable} +\newtcolorbox{experience}[3]{parbox=false,breakable,title=\dsrailways : \textbf{#1} \hfill \fontspec{FreeSerif.otf}{\symbol{"231B}} : \SI{#2}{\min}\\\dsliterary : {#3}} + +% Coloration syntaxique des codes python +\usepackage{minted} +\usemintedstyle{friendly} diff --git a/headers_figs.sty b/headers_figs.sty new file mode 100644 index 0000000..b214bb7 --- /dev/null +++ b/headers_figs.sty @@ -0,0 +1,49 @@ +% Schémas en tous genres, objets graphiques… +\usepackage{tikz} +\usepackage{standalone} % Figure TikZ externes +\usepackage{tikzscale} % Redimensionnement des figures TikZ via \includegraphics +%TODO: TikZ externalization +\usetikzlibrary{calc,decorations.markings,decorations.pathmorphing,shapes} +\usepackage[ + RPvoltages, % Tensions positives + straightvoltages, % Représentées par des flèches droites + europeanresistors, % Conducteur ohmique rectangulaires + cuteinductors, % Bobines à la française + siunitx % Utilisation des unités dans les labels +]{circuitikz} +\tikzset{EVS/.style={european voltage source,bipole/is voltage=false,voltage/distance from node=0.3}} +\tikzset{pile/.style={battery1,bipole/is voltage=false,voltage/distance from node=0.2}} +% Cf. https://github.com/circuitikz/circuitikz/issues/410 + v^> + +% Couleurs de Matplotlib +\definecolor{C0}{HTML}{1F77B4} +\definecolor{C1}{HTML}{FF7F0E} +\definecolor{C2}{HTML}{2CA02C} +\definecolor{C3}{HTML}{D62728} +\definecolor{C4}{HTML}{9467BD} +\definecolor{C5}{HTML}{8C564B} +\definecolor{C6}{HTML}{E377C2} +\definecolor{C7}{HTML}{7F7F7F} +\definecolor{C8}{HTML}{BCBD22} +\definecolor{C9}{HTML}{17BECF} + +% Inclusion de figures +\usepackage{graphicx} + +% Figures centrées +\makeatletter +\g@addto@macro\@floatboxreset\centering +\makeatother + +% Pour tracer un contour noir autour d’une figure avec \fbox si nécessaire +\setlength\fboxrule{0.5pt} +\setlength\fboxsep{-0.5pt} % Pour éviter un “Overfull \hbox” de 1pt + +% Gestion des légendes des figures, doit être après babel +\usepackage[ + format=plain, + labelfont={sc,small}, + textfont={small} +]{caption} +\usepackage{subcaption} % Sous-figures & légendes associées +\captionsetup[subfigure]{margin=5pt} diff --git a/headers_fonts.sty b/headers_fonts.sty new file mode 100644 index 0000000..0b087bb --- /dev/null +++ b/headers_fonts.sty @@ -0,0 +1,31 @@ +% Définition des polices du document +\usepackage{fontspec} +\defaultfontfeatures[EBGaramond]{Ligatures=TeX,Numbers={Lining,Proportional}} +\setmainfont[ + Extension = .otf, + UprightFont = *-Regular, + ItalicFont = *-Italic, + BoldFont = *-Bold, + BoldItalicFont = *-BoldItalic +]{EBGaramond} + +% Police pour les mathématiques +\usepackage[math-style=french]{unicode-math} +\setmathfont[StylisticSet={2}]{Garamond-Math.otf} +%StylisticSet +%2 → Curved \partial +%7 → \int variant +%8 → Garamond-compatible \mathcal (experimental) + +% Micro-typography +\usepackage[factor=500,tracking,babel=true]{microtype} +\SetTracking{encoding={*}, shape=sc}{0} % Fix bug with microtype tracking in TeX Live 2019+ + +% Lettrine +\usepackage{lettrine} +\setcounter{DefaultLines}{4} +\renewcommand{\LettrineFontHook}{\color[gray]{0.5}} + +% Utilisation de babel pour les paramètres de langues +\usepackage[english,main=french]{babel} +\frenchbsetup{ItemLabels=\textendash} diff --git a/headers_lectures.sty b/headers_lectures.sty new file mode 100644 index 0000000..635a0d7 --- /dev/null +++ b/headers_lectures.sty @@ -0,0 +1,3 @@ +% Example pseudo-env +\newcommand{\example}[1]{\subparagraph{\color{gray}Exemple :\hspace{-1.25ex}} \textcolor{gray}{#1}\ifhmode\newline\fi} +\newcommand{\application}[1]{\subparagraph{\color{gray}Application :\hspace{-1.25ex}} \textcolor{gray}{#1}\ifhmode\newline\fi} diff --git a/headers_refs.sty b/headers_refs.sty new file mode 100644 index 0000000..74891f6 --- /dev/null +++ b/headers_refs.sty @@ -0,0 +1,93 @@ +% Ajouts dans la table des matières +\KOMAoption{toc}{bibliography} +%\KOMAoption{toc}{bibliography,index} + +% Références croisées +\usepackage{cleveref} + +% Bibliographie +\usepackage[ + natbib=true, % Pour pouvoir garder/utiliser les commandes natbib + backref=true, % Indique les pages citant les articles dans la bibliographie + style=authoryear-comp, % Style Auteur(s)-Année avec compression + labelnumber, % Pour pouvoir faire aussi des citation numériques + defernumbers, % Pour séparer les deux numérotations + sorting=nyvt, % Tri par nom, année, volume, titre pour la biblio + sortcites=false, % Mais pas de tri lors des citations + uniquelist=minyear, % Éviter les citations trop verbeuses + uniquename=init, % Ne considérer que l’initiale du prénom pour décider l’unicité d’un auteur + maxcitenames=2, % Pas plus de deux noms pour les citations + maxbibnames=4, % Jusqu’à 4 noms affichés dans la biblio + minbibnames=4, % Et pas moins si ça dépasse + dashed=false, % Répétition des noms dans la bibliographie + doi=false, % Ne pas afficher le DOI, en lien sur le titre + url=false, % Ne pas afficher l’URL, en lien sur le titre + isbn=false, % Ne pas afficher l’ISBN + autolang=hyphen % Hyphénation en fonction de la langue +]{biblatex} + +% Guillemets en fonction de la langue dans la bibliographie +\usepackage{csquotes} +\makeatletter +\def\blx@hook@initlang{\csq@reset=0\csq@setstyle{\abx@field@langid}} +\makeatletter + +% Nom, Prénom pour tous +\DeclareNameAlias{sortname}{family-given} + +% Pas de “In :” pour les articles +\renewbibmacro{in:}{\ifentrytype{article}{}{\printtext{\bibstring{in}\intitlepunct}}} + +% Citations numériques pour les articles choisis +\newbibmacro*{cite:num}{\printtext[bibhyperref]{\printfield{labelnumber}}} +\DeclareCiteCommand{\citenum} + {\bibopenbracket} + {\usebibmacro{prenote}\usebibmacro{citeindex}\usebibmacro{cite:num}\usebibmacro{postnote}} + {\multicitedelim} + {\bibclosebracket} + +% Ajouts des numéros dans la bibliographie par conséquent +\DeclareFieldFormat[book,inbook,proceedings,thesis]{labelnumber}{\RN{#1}} % Numérotation romaine séparée +\DeclareFieldFormat{labelnumberwidth}{#1.} +\defbibenvironment{bibliography}{% + \list{% + \printtext[labelnumberwidth]{% + \printfield{labelprefix}% + \printfield{labelnumber}% + }% + }{% + \setlength{\labelwidth}{\labelnumberwidth}% + \setlength{\leftmargin}{\labelwidth}% + \setlength{\labelsep}{\biblabelsep}% + \addtolength{\leftmargin}{\labelsep}% + \setlength{\itemsep}{\bibitemsep}% + \setlength{\parsep}{\bibparsep}}% + \renewcommand*{\makelabel}[1]{\hss##1}% + }% + {\endlist}% + {\item}% + +% DOI/URL comme lien sur le titre au lieu de l’affichage +\newbibmacro{string+doiurl}[1]{% + \iffieldundef{doi}{% + \iffieldundef{url}{% + #1% + }{% + \href{\thefield{url}}{#1}% + }% + }{% + \href{https://dx.doi.org/\thefield{doi}}{#1}% + }% +} +\DeclareFieldFormat{title}{\usebibmacro{string+doiurl}{\mkbibemph{#1}}} +\DeclareFieldFormat[article,inproceedings,inbook]{title}{\usebibmacro{string+doiurl}{\mkbibquote{#1}}} +\DeclareFieldFormat{url}{} % Désactiver l’affichage de l’URL aussi pour les @online + +% Déclarer les articles comme en anglais par défaut +\DeclareSourcemap{ + \maps[datatype=bibtex]{ + \map{ + \step[fieldset=langid,fieldvalue=english] + } + } +} diff --git a/headers_science.sty b/headers_science.sty new file mode 100644 index 0000000..216ff27 --- /dev/null +++ b/headers_science.sty @@ -0,0 +1,38 @@ +%% Paquets utile pour les maths/la science +\usepackage{mathtools} % La base + +% Corrections de l’espacement autour des \left et \right +\usepackage{mleftright} +\mleftright + +% Pour de belles frations et dérivées +\usepackage{xfrac} +\usepackage{esdiff} + +% Mise en formes des unités +\protected\def\numpi{\text{\ensuremath{\pi}}} +\usepackage{siunitx} +\sisetup{ + number-unit-product = \,, + inter-unit-product = \ensuremath{\!\cdot\!}, + list-units = single, + multi-part-units = single, + range-units = single, + input-signs = {+ − ±}, + input-symbols = {π …}, + input-comparators = {< = > ≈ ≥ ≫ ≤ ≪ ∼ ≲ ≳ ≃} +} +\newcommand{\numtrange}[2]{\numrange[range-phrase = --]{#1}{#2}} +\newcommand{\SItrange}[3]{\SIrange[range-phrase = --]{#1}{#2}{#3}} + +% Éléments atomiques, réactions, molécules +\usepackage[version=4,arrows=pgf{latex}{0.09ex}]{mhchem} +\usepackage{chemfig} + +% Gestion avancée des tableaux +\usepackage{multirow} +\usepackage{makecell} +\usepackage{booktabs} +\usepackage{longtable} % Tableaux sur plusieurs pages (utilisé pour les acronymes, constantes et symboles) +\newcolumntype{d}{@{}c@{}} +\newcolumntype{C}[1]{>{\centering}m{#1}} diff --git a/layout_style.sty b/layout_style.sty new file mode 100644 index 0000000..d2cf3af --- /dev/null +++ b/layout_style.sty @@ -0,0 +1,41 @@ +% Style avancée pour l’en-tête et les pieds-de-page +%\usepackage{scrlayer-scrpage} +%\ofoot*{∼\thepage∼} % Partie externe du pied de page + +\recalctypearea % Recompute typearea after selecting the font +\usepackage{geometry} % Use geometry for some advance layout + +% Since top is half of bottom, we had half of top to topmargin to get vmarginratio={1:1} without changing the textheight or headersep +\addtolength{\topmargin}{.5\topmargin} % Start with topmargin, else the .5in is already added +\addtolength{\topmargin}{.5in} +\addtolength{\topmargin}{.5\headsep} +\addtolength{\topmargin}{.5\headheight} + +% Reduce a bit the footskip +\setlength{\footskip}{2\headsep} + +% Règles typographiques de l’imprimerie nationale +\usepackage[parindent,lastparline,nosingleletter]{impnattypo} + +% Lignes orphelines +\usepackage[all]{nowidow} + +% Custom minitoc +\usepackage{etoc} +\newcommand{\minitoc}{% + \etocsettocstyle{\subsection*{Sommaire\vspace{-1em}\\\rule{\textwidth}{0.5pt}}}{}% + \etocsetstyle{section}{}{}{\etocsavedsectiontocline{\bfseries\numberline{\etocnumber}\etocname}{\bfseries\etocpage}}{}% + \etocsetstyle{subsection}{}{}{\etocsavedsubsectiontocline{\numberline{\etocnumber}\etocname}{\etocpage}}{}% + {\small\localtableofcontents}% + \noindent\rule{\textwidth}{0.5pt}% + \vspace{1em} +} + +% Nombres tabulés pour les numéros de pages dans les tables des matières +\DeclareTOCStyleEntry[pagenumberformat={\bfseries\addfontfeatures{Numbers=Monospaced}}]{default}{part} +\DeclareTOCStyleEntry[pagenumberformat={\bfseries\addfontfeatures{Numbers=Monospaced}}]{default}{chapter} +\DeclareTOCStyleEntry[pagenumberformat={\addfontfeatures{Numbers=Monospaced}}]{default}{section} +\DeclareTOCStyleEntry[pagenumberformat={\addfontfeatures{Numbers=Monospaced}}]{default}{subsection} +\makeatletter +\renewcommand{\@pnumwidth}{1.6em} % Compensation de l’espace supplémentaire occupé +\makeatother diff --git a/macros.sty b/macros.sty new file mode 100644 index 0000000..45daba5 --- /dev/null +++ b/macros.sty @@ -0,0 +1,40 @@ +% Quelques commandes personnalisées + +% Tables globales +\newenvironment{chaptable}[2]{ + \addchap*{#1} + \begin{longtable}{#2} +}{% + \end{longtable} + \addtocounter{table}{-1}% Ne pas compter comme une table +} + +% En-têtes de tableau +\setlength{\heavyrulewidth}{0.1em} + +% Typographie +\newcommand{\chapterend}{\vspace{1em}\begin{center}\large ☙❧\end{center}} % Cul-de-lampe +\newcommand{\siecle}[1]{\textsc{\romannumeral #1}\ieme{}~siècle} +\newcommand{\eg}{\textit{e.g.}} +\newcommand{\cf}{\textit{cf.} } + +% Outils mathématiques +\AtBeginDocument{% Requis par unicode-math + \renewcommand{\vec}{\symbf} + \renewcommand{\nabla}{\vec{∇}} + \renewcommand{\div}[1]{\nabla · #1} +} +% Opérateurs usuels +\DeclareMathOperator{\di}{d\!} +\newcommand{\mean}[1]{\left<#1\right>} +\newcommand{\grad}[1]{\nabla\left(#1\right)} +\newcommand{\rot}[1]{\nabla × #1} +% Expressions parenthésées +\newcommand{\pa}[1]{\left(#1\right)} +\newcommand{\logp}[1]{\log\pa{#1}} +\newcommand{\fracp}[2]{\pa{\frac{#1}{#2}}} + +% Grandeurs physiques classiques +\newcommand{\Ec}{ℰ_\text{c}} +\newcommand{\Ep}{ℰ_\text{p}} +\newcommand{\Em}{ℰ_\text{m}}