Des étoiles devant un exercice

Démonstrator
Modifié (14 Apr) dans LaTeX
Je profite de cette semaine de vacances pour améliorer ma technique de mise en page sur Latex (j'avais appris dans la précipitation, en particulier je viens de découvrir les environnements, c'est dire).
En ce dimanche soir, il me reste une seule chose à faire et je viens à vous, car je sèche.
J'ai défini un "newtheorem" tout simple, appelé Exercice, qui numérote mes exercices, de la façon générique suivante : 
$\mathbf{Exercice} \ \mathbf{1}$ (Titre de l'exercice s'il en est) Texte de l'exercice. 
J'ai utilisé la commande theorem simplement pour avoir une numérotation automatique, je ne suis pas contre l'idée de changer.
Je voudrais que, dans la marge, s'affiche une petite image que j'ai pré-concoctée (affichant la difficulté de l'exercice au moyen de petites étoiles). Avant de découvrir tout cela, je faisais ainsi : 

\noindent \makebox[0pt][r]{%
\includegraphics[scale=0.115]{1star.png}}
\textcolor{blue}{\textbf{Exercice 1.}} \textit{(Titre de l'exercice s'il en est)} Texte de l'exercice.

mais bien sûr, la numérotation n'est pas automatique.
Maintenant, je n'arrive pas à allier les deux, car ma petite manipulation de boîte dans la marge ne s'aligne jamais avec mon environnement Exercice : en effet, \begin{Exercice} induit toujours un retour à la ligne.
Idée ? Soit pour numéroter sans recours à theorem, soit pour personnaliser mon theorem.
La pensée ne préexiste pas à la langue et à ses formes, car c’est en parlant, fût-ce en soliloquant, que je pense. — Hegel

Réponses

  • Bonjour, une solution est de créer un environnement pour ton exercice, et de le mettre dans un autre environnement où tu vas ajouter les étoiles dans la marge. Je rajoute des choses dans la marge avec le package marginnote et mes étoiles sont faites à l'aide de TikZ (voir ici), mais tu peux utiliser ton image si tu veux. Je crée un environnement inner pour les exercices, puis un environnement exercise qui a un paramètre obligatoire (un nombre entre 1 et 5 pour la difficulté de l'exercice) et un paramètre facultatif (le nom de l'exercice), et qui utilise l'environnement inner.
    \documentclass[french]{article}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{ntheorem}
    \usepackage{marginnote}
    \usepackage{xparse}
    \usepackage{tikz}
    \usepackage{babel}
    \usepackage[babel=true]{microtype}
    
    \usetikzlibrary{shapes.geometric}
    
    \newcommand{\stars}[2][fill=yellow,draw=orange]{
        \begin{tikzpicture}[baseline=-0.35em,#1]
            \foreach \X in {1,...,5} {
                \pgfmathsetmacro{\xfill}{min(1,max(1+#2-\X,0))}
                \path (\X*1.1em,0)
                node[star,draw,star point height=0.25em,minimum size=1em,inner sep=0pt,
                path picture={\fill (path picture bounding box.south west)
                    rectangle  ([xshift=\xfill*1em]path picture bounding box.north west);}]{};
            }
        \end{tikzpicture}
    }
    
    \newcommand{\marginstars}[1]{\reversemarginpar\marginnote{\stars{#1}}\normalmarginpar}
    
    \newtheorem{inner}{Exercice}
    
    \NewDocumentEnvironment{exercise}{mo}
    {\IfNoValueTF{#2}{\inner\marginstars{#1}}{\inner[#2]\marginstars{#1}}}
    {\endinner}
    
    \begin{document}
    
        \section{Test}
    
        \begin{exercise}{2.25}
            Contenu de l'exercice.
        \end{exercise}
    
        \begin{exercise}{4}[Nom]
            Contenu de l'exercice.
        \end{exercise}
    \end{document}
  • Démonstrator
    Modifié (15 Apr)
    @Karnaj OK, merci pour votre aide, ça pourrait me convenir facilement.
    Seul problème, voilà ce que j'obtiens pour l'instant avec votre texte : 


    La pensée ne préexiste pas à la langue et à ses formes, car c’est en parlant, fût-ce en soliloquant, que je pense. — Hegel
  • Démonstrator
    Modifié (15 Apr)
    Précisions : j'ai ré-essayé en remplaçant simplement la ligne \usepackage{ntheorem} par \usepackage{amsthm} (ce qui est mieux pour moi, j'utilisais déjà le second). Cette fois-ci, les étoiles s'alignent bien à gauche. Le seul problème est qu'elles sont beaucoup trop grosses et dépassent de la page.

    Mais je me suis débrouillé en les rétrécissant ! Donc tout va bien.
    La pensée ne préexiste pas à la langue et à ses formes, car c’est en parlant, fût-ce en soliloquant, que je pense. — Hegel
  • Parfait si t'as réussi à obtenir ce que tu voulais. Sinon si tu ne les voulais pas dans la marge, voici un code d'exemple où je crée mon propre environnement pour le faire.

    \documentclass[french]{article}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{xparse}
    \usepackage{tikz}
    \usepackage{babel}
    \usepackage[babel=true]{microtype}
    
    \usetikzlibrary{shapes.geometric}
    
    \newcommand{\stars}[2][fill=yellow,draw=orange]{
        \begin{tikzpicture}[baseline=-0.6ex,#1]
            \foreach \X in {1,...,5} {
                \pgfmathsetmacro{\xfill}{min(1,max(1+#2-\X,0))}
                \path (\X*2ex,0)
                node[star,draw,star point height=0.3ex,minimum size=1.7ex,inner sep=0pt,
                path picture={\fill (path picture bounding box.south west)
                    rectangle  ([xshift=\xfill*1em]path picture bounding box.north west);}]{};
            }
        \end{tikzpicture}
    }
    
    
    \newcounter{exercise}
    
    \NewDocumentEnvironment{exercise}{mo}
    {\stepcounter{exercise}\par\noindent\stars{#1} \bfseries\upshape\rmfamily Exercice \arabic{exercise}\IfNoValueTF{#2}{}{ (#2)}\mdseries\itshape}
    {\vspace{1ex}\newline}
    
    \begin{document}
    
        Un premier exercice.
        
        \begin{exercise}{2.5}
            Contenu de l'exercice.
        \end{exercise}
        Il est plutôt simple;
    
        Et un autre, un peu plus compliqué.
        \begin{exercise}{4}[Nom]
            Contenu de l'exercice.
        \end{exercise}
    \end{document}
    
  • Démonstrator
    Modifié (25 Apr)
    @Karnaj Super ! Je vais regarder ça.

    La pensée ne préexiste pas à la langue et à ses formes, car c’est en parlant, fût-ce en soliloquant, que je pense. — Hegel
Connectez-vous ou Inscrivez-vous pour répondre.