Exercices avec barème ou non

Tout ce qui concerne le langage LaTeX et ses variantes. Ce langage est supporté par le forum via les balises tex.

Modérateur : gdm_tex

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

Exercices avec barème ou non

Message 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
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
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 880
Inscription : vendredi 12 juin 2009, 22:35
Localisation : Chambéry

Re: Exercices avec barème ou non

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

Re: Exercices avec barème ou non

Message 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 : 964
Inscription : jeudi 25 novembre 2010, 22:10

Re: Exercices avec barème ou non

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

Re: Exercices avec barème ou non

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

Re: Exercices avec barème ou non

Message 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
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Ophiucus02
Utilisateur confirmé
Utilisateur confirmé
Messages : 18
Inscription : vendredi 18 octobre 2013, 17:29

Re: Exercices avec barème ou non

Message par Ophiucus02 »

Merci c'est super.