Je souhaite créer un environnement de type theorème pour obtenir quelque chose de la forme "Exercice n. %retour à la ligne %Début de l'énoncé". Suite à ma question posée ici https://texnique.fr/osqa/questions/11908/ifthenselse-avec-des-nombres-flottants, une solution a été proposée afin d'inclure le retour à la ligne directement dans le code d'un environnement de type "theorem ams math" (ce qui permet de ne pas avoir à le faire "manuellement"). Voici le code en question : \documentclass[french]{article} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{lmodern} \usepackage{amsmath} \usepackage{amssymb} \usepackage{amsthm} \usepackage{babel} \newtheoremstyle{break} % ⟨name⟩ {} % ⟨Space above⟩ {0.5cm} % ⟨Space below⟩ {\normalfont} % ⟨Body font⟩ {} % ⟨Indent amount⟩ {\bfseries} % ⟨Theorem head font⟩ {} % ⟨Punctuation after theorem head⟩ {\newline} % ⟨Space after theorem head⟩ {} % ⟨Theorem head spec (can be left empty, meaning ‘normal’ )⟩ \theoremstyle{break} \newtheorem{exo}{Exercice} \begin{document} \begin{exo} bla \end{exo} \begin{exo} \begin{enumerate} \item a \item z \end{enumerate} \end{exo} \end{document} Ca fonctionne, sauf lorsque l'exercice commence avec une énumération... Dans ce cas, l'item 1) est sur la même ligne que le numéro de l'exercice. Et lorsque j'essaie de le faire manuellement, je me retrouve avec une ligne vide (voir exemple ci-dessus)... Comment pourrait-on solutionner ce problème ? Posée 23 Mar '23, 15:00 endomorphisme |
Il suffit d'ajouter \documentclass[french]{article} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{lmodern} \usepackage{amsmath} \usepackage{enumitem} \usepackage{amssymb} \usepackage{amsthm} \usepackage{babel} \newtheoremstyle{break} % ⟨name⟩ {} % ⟨Space above⟩ {0.5cm} % ⟨Space below⟩ {\normalfont} % ⟨Body font⟩ {} % ⟨Indent amount⟩ {\bfseries} % ⟨Theorem head font⟩ {} % ⟨Punctuation after theorem head⟩ {\newline} % ⟨Space after theorem head⟩ {} % ⟨Theorem head spec (can be left empty, meaning ‘normal’ )⟩ \theoremstyle{break} \newtheorem{exo}{Exercice} \ExplSyntaxOn \bool_new:N \g_inside_exo_bool \AddToHook{env/exo/begin}{ \bool_gset_true:N \g_inside_exo_bool \AddToHookNext{para/begin}{\bool_gset_false:N \g_inside_exo_bool} } \AddToHook{env/enumerate/begin}{ \bool_if:NT \g_inside_exo_bool { \leavevmode\vspace{-\baselineskip} } } \ExplSyntaxOff \begin{document} \begin{exo} bla \end{exo} \begin{exo} \begin{enumerate} \item a \item z \end{enumerate} \end{exo} \begin{exo} blabla \begin{enumerate} \item a \item z \end{enumerate} \end{exo} \begin{exo} \begin{enumerate} \item a \item z \end{enumerate} Puis : \begin{enumerate} \item a \item z \end{enumerate} \end{exo} \begin{exo} \begin{enumerate} \item a \item b \end{enumerate} puis \begin{enumerate}[resume] \item c \item d \end{enumerate} \end{exo} \end{document} Publiée 23 Mar '23, 15:33 denis ♦♦ Du coup, si un enumerate n'est pas au début mais après, ça ne pose pas problème ?
(23 Mar '23, 17:07)
logamath
Hum ! si bien sûr... Bon, c'est à creuser.
(24 Mar '23, 11:27)
denis ♦♦
Effectivement, je n'avais pas remarqué ça au départ, mais ça pose aussi problème lorsque l'on a quelque chose du type... \begin{enumerate} \item a \item b \end{enumerate} blablabla \begin{enumerate}[resume] \item c \item d \end{enumerate}
(24 Mar '23, 13:04)
endomorphisme
Ah, en effet. On peut cependant s'en sortir en remplaçant ce qui se trouve entre \bool_new:N \g_inside_exo_bool \AddToHook{env/exo/begin}{ \bool_gset_true:N \g_inside_exo_bool } \AddToHook{env/enumerate/begin}{ \bool_if:NT \g_inside_exo_bool { \leavevmode\vspace{-\baselineskip} } \bool_gset_false:N \g_inside_exo_bool }
(24 Mar '23, 13:56)
denis ♦♦
Cela résout le problème pour le cas des listes "scindées" en deux avec end{enumerate} begin{enumerate}[resume], mais le problème persiste pour le cas suivant : \begin{exo} blabla \begin{enumerate} \item a \item z \end{enumerate} \end{exo}
(24 Mar '23, 15:21)
endomorphisme
Une solution serait de laisser une ligne vide entre le texte introductif et le premier item. Peut-être pas optimal, mais ça fonctionne...
(24 Mar '23, 23:08)
endomorphisme
3
Vous pouvez essayer avec cette modification
(25 Mar '23, 07:27)
touhami
Ça fonctionne ! Merci.
(25 Mar '23, 11:50)
endomorphisme
1
@touhami Bravo pour cette astuce ! Juste un petit détail : si
(26 Mar '23, 17:27)
denis ♦♦
Affichage de 5 parmi 9
Afficher 4 commentaire(s) en plus
|