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 membres 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 : 20
Inscription : vendredi 18 octobre 2013, 17:29

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é 366 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 : 904
Inscription : vendredi 12 juin 2009, 22:35
Localisation : Chambéry

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.
Ophiucus02
Utilisateur confirmé
Utilisateur confirmé
Messages : 20
Inscription : vendredi 18 octobre 2013, 17:29

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 éprouvé
Utilisateur éprouvé
Messages : 990
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 : 20
Inscription : vendredi 18 octobre 2013, 17:29

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 : 904
Inscription : vendredi 12 juin 2009, 22:35
Localisation : Chambéry

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
Ophiucus02
Utilisateur confirmé
Utilisateur confirmé
Messages : 20
Inscription : vendredi 18 octobre 2013, 17:29

Re: Exercices avec barème ou non

Message non lu par Ophiucus02 »

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

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 : 246
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).