\documentclass{rapportECL2024}
\addbibresource{biblio.bib}
%--------------------------------------
\titre{Titre}
\soustitre{Sous-titre}
\enseignant{Prénom \textsc{Nom} \\
Prénom \textsc{Nom} }
\eleves{Prénom \textsc{Nom} \\
Prénom \textsc{Nom} \\
Prénom \textsc{Nom} }
%--------------------------------------
\begin{document}
\fairepagedegarde
\fairetabledesmatieres
%--------------------------------------
\section{Section 1}
\lipsum[1]
\subsection{Sous-section 1}
\lipsum[2]
\subsection{Sous-section 2}
\lipsum[3]
\subsubsection{Sous-sous-section 1}
\lipsum[4]
\section{Section 2}
\lipsum[5]
\section{Quelques commandes utiles}
\textbf{Insérer une image}
\begin{figure}[H]
\centering
\includegraphics[width=0.5\textwidth]{logos/logo.png}
\caption{Insérer une image.}
\label{fig:logo}
\end{figure}
ou la version raccourcie avec \texttt{\textbackslash insererfigure}~:
\insererfigure{logos/logo.png}{0.5\textwidth}{Insérer une image avec \texttt{\textbackslash insererfigure}.}{logo_raccourci}
\textbf{Citer une figure} avec \texttt{\textbackslash ref}~: \ref{fig:logo_raccourci}.\\
\textbf{Insérer des expressions mathématiques} en bloc~:
\begin{equation*}
\int_{-\infty}^{\infty} e^{-x^2} \, \text{d}x = \sqrt{\pi}
\end{equation*}
ou bien en \textit{inline}~: $\int_{-\infty}^{\infty} e^{-x^2} \, \text{d}x = \sqrt{\pi}$.\\
\textbf{Insérer une série de calculs~:}
\begin{align*}
x &= 0.999\ldots \\
10x &= 9.999\ldots \\
10x - x &= 9.999\ldots - 0.999\ldots \\
9x &= 9 \\
x &= 1 \\
0.999\ldots &= 1
\end{align*}
\textbf{Insérer une liste~:}
\begin{itemize}
\item Premier niveau
\begin{itemize}
\item Deuxième niveau
\item Un autre élément au deuxième niveau
\end{itemize}
\item Un autre élément au premier niveau
\end{itemize}
\textbf{Insérer un tableau simple} \\
\begin{table}[H]
\centering
\begin{tabular}{|c|c|c|}
\hline
A & B & C \\
\hline
1 & 2 & 3 \\
4 & 5 & 6 \\
\hline
\end{tabular}
\caption{Un tableau simple.}
\label{tab:tableau_simple}
\end{table}
\textbf{Insérer du code en \textit{inline}}~: \texttt{print("Hello, World!")}.\\
\textbf{Insérer du code en \textit{inline} avec coloration syntaxique}~: \mintinline{python}{print("Hello, World!")}.\\
\textbf{Insérer et référencer une boîte de code}~: L'environnement \texttt{codebox} permet d'insérer du code avec coloration syntaxique. Il faut d'abord renseigner le label de la boîte, suivi du titre, puis du langage dans lequel est écrit le code (la liste des langages pris en charge est disponible \href{https://www.overleaf.com/learn/latex/Code_Highlighting_with_minted#:~:text=Main%20supported%20programming%20languages%20and%20configuration%20files}{\textcolor{blue}{\underline{ici}}}).
On peut faire référence au code avec~: Code~\ref{code:code_example}.
\begin{codebox}[code:code_example]{Un exemple de boîte de code \texttt{python}.}{python}
def sieve_of_eratosthenes(n: int) -> list[int]:
"""Returns a list of all prime numbers up to n."""
primes = [True] * (n + 1)
primes[0] = primes[1] = False # 0 and 1 are not prime numbers
for i in range(2, int(n**0.5) + 1):
if primes[i]:
for j in range(i * i, n + 1, i):
primes[j] = False
return [i for i, is_prime in enumerate(primes) if is_prime]
\end{codebox}
~
\textbf{Insérer des boîtes génériques pour questions/réponses}~: L'environnement \texttt{genericbox} permet d'inclure un intitulé comme premier argument (Question, Réponse, Preuve, etc.), un numéro comme deuxième argument (1, 3.a., IV.2.i., etc.) et un titre comme troisième argument (ce dernier peut être laissé vide).
Un label est automatiquement défini pour faire référence à une boîte. Par exemple, pour la boîte suivante~:
{\small
\begin{verbatim}
\begin{genericbox}[Question]{II.2}{Exemple de boîte contenant une question.}
Contenu de la boîte...
\end{genericbox}
\end{verbatim}
}
le label est \texttt{Question-II.2}.
\begin{genericbox}[Question]{II.2}{Exemple de boîte contenant une question.}
Démontrer qu'il existe une infinité de nombres premiers.
\end{genericbox}
\textbf{Exemple de référence à une boîte générique}~: Référence à la question~\ref{Question-II.2}.
\begin{genericbox}[Preuve]{II.2}{Exemple de boîte contenant une preuve.}
Supposons, par l'absurde, que l'ensemble des nombres premiers soit fini, et soit \(\{p_1, p_2, \dots, p_n\}\) la liste de tous ces nombres premiers.
Considérons alors le nombre
\[
N = p_1 \, p_2 \, \cdots \, p_n + 1.
\]
Pour chaque \(p_i\), on a
\[
N \equiv 1 \,[p_i],
\]
c'est-à-dire que \(N\) n'est divisible par aucun \(p_i\).
Ainsi, \(N\) est soit lui-même premier, soit il possède un facteur premier qui n'appartient pas à la liste \(\{p_1, p_2, \dots, p_n\}\).
Dans les deux cas, nous obtenons une contradiction avec l'hypothèse que la liste contient tous les nombres premiers.
On en conclut donc qu'il doit exister une infinité de nombres premiers.
\qed
\end{genericbox}
\textbf{Pour inclure une \texttt{codebox} dans une \texttt{genericbox}}, pour des raisons esthétiques, on utilise les commandes \texttt{\textbackslash pausegenericbox} puis \texttt{\textbackslash resumegenericbox} autour de la \texttt{codebox} pour retirer la marge le temps de la boîte de code. Attention, du texte doit forcément figurer après la commande \texttt{\textbackslash resumegenericbox}, on ne peut pas enchaîner immédiatement avec \texttt{\textbackslash end\{genericbox\}}. Sinon, il suffit de terminer la \texttt{genericbox} avant de commencer la \texttt{codebox}. Il est également possible de ne pas utiliser ces deux commandes, mais le comportement est plus instable lors des sauts de page (il se peut que la boîte de code ne se coupe pas correctement et passe entièrement sur la page suivante).
\begin{genericbox}[Preuve]{IV.2}{Preuve de l'indécidabilité du problème de l'arrêt.}
On procède par l’absurde, grâce à un argument diagonal. Supposons que le problème de l'arrêt soit décidable. Il existe alors une fonction OCaml~:
\mintinline{ocaml}{arret : string -> string -> bool}
\noindent qui le résout.
\noindent Considérons alors la fonction \mintinline{ocaml}{paradoxe : string -> unit} suivante~:
\pausegenericbox
\begin{codebox}[code:code_in_genericbox]{Définition de la fonction \texttt{paradoxe}.}{ocaml}
let paradoxe s =
if arret s s then
begin
while true do
print_string "arret"
done
end
\end{codebox}
\resumegenericbox
Notons \texttt{code\_paradoxe} la chaîne de caractères contenant le code source de Code \ref{code:code_in_genericbox}, et étudions l’exécution de \texttt{paradoxe code\_paradoxe}~:
\begin{itemize}
\item si \texttt{paradoxe code\_paradoxe} termine, alors \texttt{\seqsplit{arret\ code\_paradoxe\ code\_paradoxe}} renvoie \mintinline{ocaml}{true} ; donc on entre dans la boucle infinie, et \texttt{paradoxe code\_paradoxe} ne termine pas~: absurde ;
\item si \texttt{paradoxe code\_paradoxe} ne termine pas, alors \texttt{\seqsplit{arret\ code\_paradoxe\ code\_paradoxe}} renvoie \mintinline{ocaml}{false} ; donc on n’entre pas dans la boucle infinie, et \texttt{paradoxe code\_paradoxe} termine~: absurde.
\end{itemize}
\noindent Ainsi, la fonction \texttt{arret} n’existe pas, et le problème de l’arrêt est indécidable.
\qed
\end{genericbox}
\textbf{Citer une source depuis le fichier \texttt{biblio.bib}} avec \texttt{\textbackslash cite}~: \cite{exemple_de_source}.\\
\textbf{Afficher une bibliographie} rapidement avec \texttt{\textbackslash insererbiblio}.
\insererbiblio
\end{document}