Exercices avec barème ou non

Tout ce qui concerne le langage TeX/LaTeX et ses variantes. Ce langage est utilisable sur le forum via les balises tex.
[participation réservée aux utilisateurs inscrits]
Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
Ophiucus02
Utilisateur confirmé
Utilisateur confirmé
Messages : 23
Inscription : vendredi 18 octobre 2013, 17:29
Statut actuel : Enseignant

Exercices avec barème ou non

Message non lu par Ophiucus02 »

Bonjour,

Je possède un environnement exercice qui se numérote tout seul et avec un format de questions (enumerate modifié) qui a cette forme :
img1.PNG
img1.PNG (7.51 Kio) Consulté 3216 fois
Je possède également un environnement exercice qui fait apparaitre un barème calculé en fonction du barème des questions (sans mise en forme particulière) qui a cette forme :
img2.PNG
J'aimerais combiner les deux de la façon suivante (mais je ne sais pas faire) :
img3.PNG
J'aimerais avoir la possibilité, avec un seul environnement exercice, d'afficher ou non le barème et le détail du barème (aucun des deux, le barème seul ou les deux) sous cette forme :

Code : Tout sélectionner

\bareme
\detail
\begin{exercice}
énoncé....
\begin{questions}
	\item\brm{0.5} question 1
	\item\brm{1} question 2
\end{questions}
\end{exercice}
Pensez-vous que cela soit possible et quel serait le code à mettre en préambule ?
Merci pour votre aide
Cordialement
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 995
Inscription : vendredi 12 juin 2009, 22:35
Statut actuel : Enseignant
Localisation : Chambéry
Contact :

Re: Exercices avec barème ou non

Message non lu par un bon petit »

Ophiucus02 a écrit : vendredi 19 février 2021, 15:24Pensez-vous que cela soit possible
Oui.
Ophiucus02 a écrit : vendredi 19 février 2021, 15:24 et quel serait le code à mettre en préambule ?
Aucune idée tant que vous ne donnez pas les codes de vos environnements.
Programmer en TeX, TeXpérimental
Ophiucus02
Utilisateur confirmé
Utilisateur confirmé
Messages : 23
Inscription : vendredi 18 octobre 2013, 17:29
Statut actuel : Enseignant

Re: Exercices avec barème ou non

Message non lu par Ophiucus02 »

Merci de vous être intéressé à ma question.
Voici les deux codes.
Code de l'environnement exercice :

Code : Tout sélectionner

\tikzset{
	frbox/.style={rounded corners,fill=orange,inner sep=6pt}
}
\newcounter{excount}
\newenvironment{exercice}{
	\medskip\stepcounter{excount}
	\tikz\node[frbox,baseline]{\bfseries\color{white}Exercice~\theexcount};
	\tikz[baseline=-8.5pt]\node{\bfseries};\par
}{}
Voici le code de l'exercice avec barème :

Code : Tout sélectionner

\newboolean{BaremeDetail}
	\setboolean{BaremeDetail}{false}
	\newcommand{\detail}{
		\setboolean{BaremeDetail}{true}
	}
	\opset{decimalsepsymbol={,}}
	\newlength{\fulllinewidth}
	\AtBeginDocument{\setlength{\fulllinewidth}{\linewidth}}
	\newlength{\brouillon}
	\newcommand*\FranPt[1]{%
		\ifthenelse{\boolean{BaremeDetail}}{
			#1 pt%
			\ifdim#1pt<2pt\else s\fi
		}{}
	}
	\makeatletter
	\newcommand*{\taille@Exo}{}
	\newcommand*{\tailleEXO}[1]{\renewcommand*{\taille@Exo}{#1}}
	\newcommand{\BaremeEspace@Marge}{0pt}
		% \BaremeEspace@Marge = 0pt => au ras de la marge gauche
		% \BaremeEspace@Marge > 0pt => plus à l'intérieur de la marge gauche
	\newcommand{\BaremeEspaceMarge}[1]{\renewcommand{\BaremeEspace@Marge}{#1}}
	\newcommand*{\brm}[1]{%
		\immediate\write\@auxout{%
			\string\opadd*{#1}%
            {total\the\c@section-\the\c@exo}%
            {total\the\c@section-\the\c@exo}%
		}%
		\setlength{\brouillon}{\BaremeEspace@Marge-\linewidth+\fulllinewidth}%
		\makebox[0pt][r]{\color{gray}\FranPt{#1}\hspace*{\brouillon}}%
		\ignorespaces%
	}
	\newcounter{exo}[section]
	\newcommand\EXO{%
		\refstepcounter{exo}%
		\immediate\write\@auxout{%
			\string\opcopy{0}{total\the\c@section-\the\c@exo}%
		}%
		\@ifstar\exercice@\exercice@@
	}
	\newcommand\exercice@@[1][]{%
		\csname\taille@Exo section\endcsname*{
			Exercice \theexo #1\hfill\total{\the\c@section-\the\c@exo}
		}
		\justifying
	}
	\newcommand\exercice@[1][]{%
		\csname\taille@Exo section\endcsname*{
			Exercice \theexo #1
		}
		\justifying
	}
	\newcommand\total[1]{%
		\@ifundefined{Op@total#1}{recompilez}{%
			\opunzero{total#1}%
			\opprint{total#1}~%
			\opcmp{total#1}{2}%
			\ifopge points\else point\fi
		}%
	}
	\makeatother
marco56
Utilisateur chevronné
Utilisateur chevronné
Messages : 1136
Inscription : jeudi 25 novembre 2010, 22:10

Re: Exercices avec barème ou non

Message non lu par marco56 »

Un code qui fonctionne avec les packages qui vont bien, begin{document}, ... serait quand même plus facile à tester.
Ophiucus02
Utilisateur confirmé
Utilisateur confirmé
Messages : 23
Inscription : vendredi 18 octobre 2013, 17:29
Statut actuel : Enseignant

Re: Exercices avec barème ou non

Message non lu par Ophiucus02 »

Bonjour,

J'ai un peu avancé sur ce que je souhaite faire.
Il me reste un soucis avec le compte des points qui ne change pas d'un exercice à l'autre.

Voici mon code complet :

Code : Tout sélectionner

\documentclass[french]{article}
	\usepackage[utf8]{inputenc}
	\usepackage[T1]{fontenc}
	\usepackage{pslatex}
	\usepackage{geometry}
		\geometry{a4paper,margin=15mm,includeheadfoot}
		\pagestyle{plain}
	\usepackage{xcolor}
		\definecolor{orange}{RGB}{255,165,0}
	\usepackage{enumitem}
	\usepackage{tikz}
		\tikzset{
			frbox/.style={rounded corners,fill=orange,inner sep=6pt}
		}
	\usepackage{ifthen,xlop,ragged2e}
		\opset{decimalsepsymbol={,}}
	\makeatletter
		% Exercice
		\newboolean{Bareme}
		\setboolean{Bareme}{true}
		\newcommand{\nobareme}{
			\setboolean{Bareme}{false}
			\setboolean{BaremeDetail}{false}
		}
		\newcounter{excount}[section]
		\newenvironment{exercice}{
			\stepcounter{excount}
			\par\medskip
			\tikz\node[frbox,baseline]{\bfseries\color{white}Exercice~\theexcount};
			\tikz[baseline=-8.5pt]\ifthenelse{\boolean{Bareme}}{\node{\color{gray}(\total{\the\c@section-\the\c@exo})}}{};
			\par\hspace*{3mm}
		}{
			\par
		}
		% Questions
		\newenvironment{questions}{
			\begin{enumerate}[label=\colorbox{orange}{\bfseries\color{white}\arabic*},leftmargin=20mm]
		}{
			\end{enumerate}
		}
		% Barème
		\newboolean{BaremeDetail}
		\setboolean{BaremeDetail}{false}
		\newcommand{\detail}{
			\setboolean{BaremeDetail}{true}
		}
		\newcommand{\nodetail}{
			\setboolean{BaremeDetail}{false}
		}
		\newcommand*\Pt[1]{%
			\ifthenelse{\boolean{BaremeDetail}}{
				#1 pt%
				\ifdim#1pt<2pt\else s\fi
			}{}
		}
		\newcommand*{\brm}[1]{%
			\immediate\write\@auxout{%
				\string\opadd*{#1}%
	            {total\the\c@section-\the\c@exo}%
	            {total\the\c@section-\the\c@exo}%
			}%
			\makebox[0pt][r]{\color{gray}\Pt{#1}\hspace*{15mm}}%
			\ignorespaces%
		}
		\newcounter{exo}[section]
		\newcommand\bareme{%
			\refstepcounter{exo}%
			\immediate\write\@auxout{%
				\string\opcopy{0}{total\the\c@section-\the\c@exo}%
			}%
		}
		\newcommand\total[1]{%
			\@ifundefined{Op@total#1}{recompilez}{%
				\opunzero{total#1}%
				\opprint{total#1}~%
				\opcmp{total#1}{2}%
				\ifopge points\else point\fi
			}%
		}
	\makeatother
\begin{document}
	\detail\bareme
	Texte...
	\begin{exercice}
		Énoncé...
		\begin{questions}
			\item\brm{1.5}
			\item\brm{3}
		\end{questions}
	\end{exercice}
	\nodetail
	Texte...
	\begin{exercice}
		Énoncé...
		\begin{questions}
			\item\brm{0.5}
			\item\brm{1}
		\end{questions}
	\end{exercice}
	Texte...
	\nobareme
	\begin{exercice}
		Énoncé...
		\begin{questions}
			\item\brm{0.5}
			\item\brm{1}
		\end{questions}
	\end{exercice}
\end{document}
Le problème semble venir des compteurs exo et excount qui devraient être les même mais cela me retourne une erreur si je ne mets qu'un compteur.

Avez-vous une idée ? Merci
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 995
Inscription : vendredi 12 juin 2009, 22:35
Statut actuel : Enseignant
Localisation : Chambéry
Contact :

Re: Exercices avec barème ou non

Message non lu par un bon petit »

Code : Tout sélectionner

\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage{geometry,enumitem,tikz,xfp,siunitx}
\sisetup{locale = FR}
\geometry{a4paper,margin=15mm}
\makeatletter
\newcount\exo@cnt
\newif\if@Bareme       \@Baremetrue
\newif\if@BaremeDetail \@BaremeDetailfalse
\let\detail  \@BaremeDetailtrue
\let\nodetail\@BaremeDetailfalse
\newcommand*\@s[1]{\ifdim#1pt<2pt \else s\fi}
\newcommand*\nobareme{\@Baremefalse\@BaremeDetailfalse}
\newenvironment{exercice}
	{\medbreak\noindent
	\global\advance\exo@cnt1
	\edef\exo@total{\ifcsname exo@total@\number\exo@cnt\endcsname\@nameuse{exo@total@\number\exo@cnt}\else0\fi}%
	\tikz\node[rounded corners,fill=orange,inner sep=6pt,anchor=base]{\bfseries\color{white}Exercice~\number\exo@cnt};%
	\if@Bareme\hfill\textbf{\expandafter\num\expandafter{\exo@total}~point\@s\exo@total}\fi
	\vskip2pt \hrule\vskip2pt \nobreak
	\let\exo@total\@empty
	\par\nobreak
	}
	{\immediate\write\@auxout{\global\string\@namedef{exo@total@\number\exo@cnt}{\fpeval\exo@total}}%
	\par
	}
\newenvironment{questions}
	{\begin{enumerate}[label=\colorbox{orange}{\bfseries\color{white}\arabic*},leftmargin=20mm]}
	{\end{enumerate}}
\newcommand*\brm[1]{%
	\g@addto@macro\exo@total{+#1}%
	\if@BaremeDetail\makebox[0pt][r]{\color{gray}#1 pt\@s{#1}\kern1.5cm }\fi
	\ignorespaces
}
\makeatother
\pagestyle{plain}
\begin{document}
\detail
Texte...
\begin{exercice}
	Énoncé...
	\begin{questions}
		\item\brm{1.5}
		\item\brm{3}
	\end{questions}
\end{exercice}
\nodetail
Texte...
\begin{exercice}
	Énoncé...
	\begin{questions}
		\item\brm{0.5}
		\item\brm{1.5}
	\end{questions}
\end{exercice}
Texte...
\nobareme
\begin{exercice}
	Énoncé...
	\begin{questions}
		\item\brm{0.5}
		\item\brm{1.5}
	\end{questions}
\end{exercice}
\end{document}
Screenshot_20210223_173428.png
Programmer en TeX, TeXpérimental
Ophiucus02
Utilisateur confirmé
Utilisateur confirmé
Messages : 23
Inscription : vendredi 18 octobre 2013, 17:29
Statut actuel : Enseignant

Re: Exercices avec barème ou non

Message non lu par Ophiucus02 »

Merci c'est super.
Ophiucus02
Utilisateur confirmé
Utilisateur confirmé
Messages : 23
Inscription : vendredi 18 octobre 2013, 17:29
Statut actuel : Enseignant

Re: Exercices avec barème ou non

Message non lu par Ophiucus02 »

Bonjour,

Est-il possible de modifier le code précédent (qui fonctionne) pour ne pas utiliser le package siunitx qui entre en conflit avec d'autres packages essentiels ?

Merci
Arathorn
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 284
Inscription : mercredi 24 avril 2013, 19:47
Statut actuel : Enseignant

Re: Exercices avec barème ou non

Message non lu par Arathorn »

Pour moi, la ligne qui utilise le paquet siunitx est la ligne 19.
Si vous écrivez à la place

Code : Tout sélectionner

\if@Bareme\hfill\textbf{\exo@total~point\@s\exo@total}\fi
cela semble fonctionner.
Pourquoi ne pas utiliser xlop comme dans votre premier code ?

Code : Tout sélectionner

\if@Bareme\hfill\textbf{\opprint\exo@total~point\@s\exo@total}\fi
Pour les conflits, je sais que si on utilise siunitx avec cellspace , la lettre S est devenue C (Sc devient Cc).
itoine59
Utilisateur débutant
Utilisateur débutant
Messages : 5
Inscription : dimanche 03 octobre 2021, 10:50
Statut actuel : Enseignant

Re: Exercices avec barème ou non

Message non lu par itoine59 »

Hello,
J'utilise depuis quelques temps cette solution qui je l'avoue est géniale!
Je me demandais si c'était possible d'afficher le nombre total des points des exercices?
Merci!
Antoine
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 995
Inscription : vendredi 12 juin 2009, 22:35
Statut actuel : Enseignant
Localisation : Chambéry
Contact :

Re: Exercices avec barème ou non

Message non lu par un bon petit »

itoine59 a écrit : mardi 15 février 2022, 23:59 Je me demandais si c'était possible d'afficher le nombre total des points des exercices?

Code : Tout sélectionner

\documentclass[french]{article}
\usepackage[T1]{fontenc}
\usepackage{babel,geometry,enumitem,tikz,xfp,siunitx}
\sisetup{locale = FR}
\geometry{a4paper,margin=15mm}
\makeatletter
\newcount\exo@cnt
\newif\if@Bareme       \@Baremetrue
\newif\if@BaremeDetail \@BaremeDetailfalse
\let\detail  \@BaremeDetailtrue
\let\nodetail\@BaremeDetailfalse
\newcommand*\@s[1]{\ifdim#1pt<2pt \else s\fi}
\newcommand*\nobareme{\@Baremefalse\@BaremeDetailfalse}
\AtBeginDocument{%
	\edef\bareme@total{\ifdefined\somme@bareme\fpeval\somme@bareme\else0\fi}%
	\gdef\somme@bareme{0}%
}
\AtEndDocument{%
	\immediate\write\@auxout{\gdef\string\somme@bareme{\fpeval\somme@bareme}}%
}
\newenvironment{exercice}
	{\medbreak\noindent
	\global\advance\exo@cnt1
	\edef\exo@total{\ifcsname exo@total@\number\exo@cnt\endcsname\@nameuse{exo@total@\number\exo@cnt}\else0\fi}%
	\tikz\node[rounded corners,fill=orange,inner sep=6pt,anchor=base]{\bfseries\color{white}Exercice~\number\exo@cnt};%
	\if@Bareme\hfill\num\exo@total~point\@s\exo@total/\num\bareme@total\fi
	\vskip2pt \hrule\vskip2pt \nobreak
	\let\exo@total\@empty
	\par\nobreak
	}
	{\immediate\write\@auxout{\global\string\@namedef{exo@total@\number\exo@cnt}{\fpeval\exo@total}}%
	\xdef\somme@bareme{\somme@bareme\exo@total}%
	\par
	}
\newenvironment{questions}
	{\begin{enumerate}[label=\colorbox{orange}{\bfseries\color{white}\arabic*},leftmargin=20mm]}
	{\end{enumerate}}
\newcommand*\brm[1]{%
	\g@addto@macro\exo@total{+#1}%
	\if@BaremeDetail\makebox[0pt][r]{\color{gray}\num{#1} pt\@s{#1}\kern1.5cm }\fi
	\ignorespaces
}
\makeatother
\pagestyle{plain}
\begin{document}
\detail
Texte...
\begin{exercice}
	Énoncé...
	\begin{questions}
		\item\brm{1.5}
		\item\brm{3}
	\end{questions}
\end{exercice}
\nodetail
Texte...
\begin{exercice}
	Énoncé...
	\begin{questions}
		\item\brm{0.5}
		\item\brm{1.5}
	\end{questions}
\end{exercice}
Texte...
\nobareme
\begin{exercice}
	Énoncé...
	\begin{questions}
		\item\brm{0.5}
		\item\brm{1.5}
	\end{questions}
\end{exercice}
\end{document}
Programmer en TeX, TeXpérimental
itoine59
Utilisateur débutant
Utilisateur débutant
Messages : 5
Inscription : dimanche 03 octobre 2021, 10:50
Statut actuel : Enseignant

Re: Exercices avec barème ou non

Message non lu par itoine59 »

Ahhh merci!
En fait j'aimerai plutôt que le nombre total de points s'affiche en haut de la copie et non pas au niveau des exercices. C'est faisable?
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 995
Inscription : vendredi 12 juin 2009, 22:35
Statut actuel : Enseignant
Localisation : Chambéry
Contact :

Re: Exercices avec barème ou non

Message non lu par un bon petit »

itoine59 a écrit : mercredi 16 février 2022, 23:47 En fait j'aimerai plutôt que le nombre total de points s'affiche en haut de la copie et non pas au niveau des exercices. C'est faisable?
Évidemment, mais il est impossible de savoir ce qu'est pour vous le très vague et imprécis « haut de la copie » puisque vous ne donnez aucun code LaTeX !
Bref, le total des points est contenu dans la macro \bareme@total, vous pouvez la placer où vous voulez, y compris « en haut de la copie ».
Programmer en TeX, TeXpérimental
itoine59
Utilisateur débutant
Utilisateur débutant
Messages : 5
Inscription : dimanche 03 octobre 2021, 10:50
Statut actuel : Enseignant

Re: Exercices avec barème ou non

Message non lu par itoine59 »

Merci! Mais justement, je ne sais pas comment récupérer le résultat!
J'ai mis, juste après \begin{document}, les lignes suivantes:

Code : Tout sélectionner

Nombre de points du devoir: 
	\if@Bareme\hfill\num\exo@total~point\@s\exo@total/\num\bareme@total\fi
	\let\exo@total\@empty
	\par\nobreak

Mais ça renvoie systématiquement "Nombre de points du devoir : totalempty"
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 995
Inscription : vendredi 12 juin 2009, 22:35
Statut actuel : Enseignant
Localisation : Chambéry
Contact :

Re: Exercices avec barème ou non

Message non lu par un bon petit »

itoine59 a écrit : samedi 19 février 2022, 22:48 Merci! Mais justement, je ne sais pas comment récupérer le résultat!
À n'importe quel endroit, pour afficher le barème total, vous écrivez \makeatletter\num\bareme@total\makeatother.
Pour éviter \makeatletter et \makeatother, vous pouvez rendre cette macro publique.

Ou mieux, vous créez dans le préambule une macro publique qui se charge d'afficher le barème total :

Code : Tout sélectionner

\newcommand*\AfficheBareme{\num\bareme@total\space points}
Programmer en TeX, TeXpérimental
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message