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é
Messages : 28 Inscription : vendredi 18 octobre 2013, 17:29
Statut actuel : Enseignant
Message non lu
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 (7.51 Kio) Consulté 7115 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 :
J'aimerais combiner les deux de la façon suivante (mais je ne sais pas faire) :
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é
Messages : 995 Inscription : vendredi 12 juin 2009, 22:35
Statut actuel : Enseignant
Localisation : Chambéry
Message non lu
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 : 28 Inscription : vendredi 18 octobre 2013, 17:29
Statut actuel : Enseignant
Message non lu
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 chevronné
Messages : 1143 Inscription : jeudi 25 novembre 2010, 22:10
Message non lu
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 : 28 Inscription : vendredi 18 octobre 2013, 17:29
Statut actuel : Enseignant
Message non lu
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 : 995 Inscription : vendredi 12 juin 2009, 22:35
Statut actuel : Enseignant
Localisation : Chambéry
Message non lu
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}
Ophiucus02
Utilisateur confirmé
Messages : 28 Inscription : vendredi 18 octobre 2013, 17:29
Statut actuel : Enseignant
Message non lu
par Ophiucus02 » mardi 23 février 2021, 19:06
Merci c'est super.
Ophiucus02
Utilisateur confirmé
Messages : 28 Inscription : vendredi 18 octobre 2013, 17:29
Statut actuel : Enseignant
Message non lu
par Ophiucus02 » vendredi 30 avril 2021, 09:41
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é
Messages : 297 Inscription : mercredi 24 avril 2013, 19:47
Statut actuel : Enseignant
Message non lu
par Arathorn » vendredi 30 avril 2021, 17:51
Pour moi, la ligne qui utilise le paquet siunitx est la ligne 19.
Si vous écrivez à la place
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
Messages : 5 Inscription : dimanche 03 octobre 2021, 10:50
Statut actuel : Enseignant
Message non lu
par itoine59 » mardi 15 février 2022, 23:59
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é
Messages : 995 Inscription : vendredi 12 juin 2009, 22:35
Statut actuel : Enseignant
Localisation : Chambéry
Message non lu
par un bon petit » mercredi 16 février 2022, 10:10
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}
itoine59
Utilisateur débutant
Messages : 5 Inscription : dimanche 03 octobre 2021, 10:50
Statut actuel : Enseignant
Message non lu
par itoine59 » mercredi 16 février 2022, 23:47
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é
Messages : 995 Inscription : vendredi 12 juin 2009, 22:35
Statut actuel : Enseignant
Localisation : Chambéry
Message non lu
par un bon petit » jeudi 17 février 2022, 09:02
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 ».
itoine59
Utilisateur débutant
Messages : 5 Inscription : dimanche 03 octobre 2021, 10:50
Statut actuel : Enseignant
Message non lu
par itoine59 » samedi 19 février 2022, 22:48
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é
Messages : 995 Inscription : vendredi 12 juin 2009, 22:35
Statut actuel : Enseignant
Localisation : Chambéry
Message non lu
par un bon petit » dimanche 20 février 2022, 08:35
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 :