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é
Messages : 18 Inscription : vendredi 18 octobre 2013, 17:29
Message
par Ophiucus02 » vendredi 19 février 2021, 15:24
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é
Messages : 880 Inscription : vendredi 12 juin 2009, 22:35
Localisation : Chambéry
Message
par un bon petit » vendredi 19 février 2021, 16:18
Ophiucus02 a écrit : ↑ vendredi 19 février 2021, 15:24 Pensez-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é
Messages : 18 Inscription : vendredi 18 octobre 2013, 17:29
Message
par Ophiucus02 » samedi 20 février 2021, 09:03
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é
Messages : 964 Inscription : jeudi 25 novembre 2010, 22:10
Message
par marco56 » samedi 20 février 2021, 17:09
Un code qui fonctionne avec les packages qui vont bien, begin{document}, ... serait quand même plus facile à tester.
Ophiucus02
Utilisateur confirmé
Messages : 18 Inscription : vendredi 18 octobre 2013, 17:29
Message
par Ophiucus02 » dimanche 21 février 2021, 14:45
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é
Messages : 880 Inscription : vendredi 12 juin 2009, 22:35
Localisation : Chambéry
Message
par un bon petit » lundi 22 février 2021, 18:30
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é
Messages : 18 Inscription : vendredi 18 octobre 2013, 17:29
Message
par Ophiucus02 » mardi 23 février 2021, 19:06
Merci c'est super.