Numérotation avec le package mdframed

Tout ce qui concerne le langage LaTeX et ses variantes. Ce langage est supporté sur 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.
styren
Utilisateur confirmé
Utilisateur confirmé
Messages : 59
Inscription : vendredi 28 juillet 2017, 23:29

Numérotation avec le package mdframed

Message par styren »

Bonjour

J'ai l'environnement suivant, utilisant le package mdframed.

Code : Tout sélectionner

\newmdtheoremenv[ %
 outerlinewidth=1,%
 roundcorner=10pt,%
 leftmargin=15,%
 rightmargin=15,%
 %backgroundcolor=black!15,%
% outerlinecolor=blue!70!black,%
 outerlinecolor=black,%
 innertopmargin=0\topskip,%
 innerbottommargin=0.2\topskip,%
 splittopskip=\topskip,%
 %ntheorem=true,%
 ]{DefFr}{Définition}
Comment le modifier pour que chaque appel à l'environnement DefFr produise une définition numérotée avec numérotation croissante ?
Merci d'avance,
Eric
Dernière modification par MB le jeudi 25 juin 2020, 12:19, modifié 1 fois.
Raison : Balises code.

balf
Utilisateur chevronné
Utilisateur chevronné
Messages : 3924
Inscription : mercredi 02 janvier 2008, 23:18

Re: Numérotation avec le package mdframed

Message par balf »

Bonjour,

Un code complet avec la classe de document serait bien utile… Avec la classe article, il n'y a aucun problème

B. A.

styren
Utilisateur confirmé
Utilisateur confirmé
Messages : 59
Inscription : vendredi 28 juillet 2017, 23:29

Re: Numérotation avec le package mdframed

Message par styren »

Merci de t'intéresser à mon problème.

Code : Tout sélectionner

\documentclass[12pt,oneside,a4paper]{report}

\usepackage[frenchb]{babel}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{amssymb,amsmath,amsfonts,amsxtra,amsthm}
\usepackage{mathrsfs}
\usepackage{geometry}
\usepackage[np]{numprint}
\usepackage{eurosym}
\usepackage{pgf}
\usepackage{multicol}
\usepackage{url}
\usepackage{cancel}
\usepackage[autostyle, french=guillemets]{csquotes}
\usepackage{xspace}
\usepackage[framemethod=TikZ]{mdframed}

 \newmdtheoremenv[ %
 outerlinewidth=1,%
 roundcorner=10pt,%
 leftmargin=20,%
 rightmargin=20,%
 backgroundcolor=black!15,%
% outerlinecolor=blue!70!black,%
 outerlinecolor=black,%
 innertopmargin=0\topskip,%
 innerbottommargin=0.2\topskip,%
 splittopskip=\topskip,%
 %ntheorem=true,%
 ]{DefFr}{Définition}

\begin{document}

\begin{DefFr}
  Ceci est une définition.
\end{DefFr}

\end{document}

balf
Utilisateur chevronné
Utilisateur chevronné
Messages : 3924
Inscription : mercredi 02 janvier 2008, 23:18

Re: Numérotation avec le package mdframed

Message par balf »

Toujours (presque) aucun problème avec ce code, hormis l'encodage (il serait peut-être temps de passer à UTF8 : c'est le défaut pour LaTeX maintenant).

B. A.

styren
Utilisateur confirmé
Utilisateur confirmé
Messages : 59
Inscription : vendredi 28 juillet 2017, 23:29

Re: Numérotation avec le package mdframed

Message par styren »

L'encodage UTF8 vient de me donner des caractères spéciaux en place de caractères accentués.
Par contre, le numéro avec la définition apparaît, alors qu'il n'apparaît dans mon document de travail. Le problème doit venir d'ailleurs. Je vais chercher.

balf
Utilisateur chevronné
Utilisateur chevronné
Messages : 3924
Inscription : mercredi 02 janvier 2008, 23:18

Re: Numérotation avec le package mdframed

Message par balf »

Beacoup d'éditeurs ont dans leur menu de quoi faire la conversion (c'est le cas au moins de TeXmaker, TeXstudio et WinEdt).

B. A.

styren
Utilisateur confirmé
Utilisateur confirmé
Messages : 59
Inscription : vendredi 28 juillet 2017, 23:29

Re: Numérotation avec le package mdframed

Message par styren »

J'ai résolu mon problème mais je ne comprends pas pourquoi ça coinçait.

Voici mon code initial (où je n'ai pas la numérotation des définitions encadrées)

Code : Tout sélectionner

\documentclass[12pt,oneside,a4paper]{report}

\usepackage[frenchb]{babel}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{amssymb,amsmath,amsfonts,amsxtra,amsthm}
\usepackage{mathrsfs}
\usepackage{geometry}
\usepackage[np]{numprint}
\usepackage{eurosym}
\usepackage{pgf}
\usepackage{multicol}
\usepackage{url}
\usepackage{cancel}
\usepackage[autostyle, french=guillemets]{csquotes}
\usepackage{xspace}
\usepackage[framemethod=TikZ]{mdframed}

\newtheoremstyle{Rem}{\topsep}{\topsep}{}{\parindent}{}{.}{.5em}{\thmname{\scshape #1}\normalfont\thmnote{ (#3)}}
\theoremstyle{Rem}
\newtheorem{Rapp}{Rappel}
\newtheorem{Rem}{Remarque}
\newtheorem{Rems}{Remarques}
\newtheorem{Prop}{Propriété}
\newtheorem{Props}{Propriétés}
\newtheorem{Def}{Définition}
\newtheorem{Dem}{Démonstration}
\newtheorem{Expl}{Exemple}
\newtheorem{Expls}{Exemples}
\newtheorem{Not}{Notation}
\newtheorem{But}{But}
\newtheorem{Voc}{Vocabulaire}

 \newmdtheoremenv[ %
 outerlinewidth=1,%
 roundcorner=10pt,%
 leftmargin=20,%
 rightmargin=20,%
 backgroundcolor=black!15,%
% outerlinecolor=blue!70!black,%
 outerlinecolor=black,%
 innertopmargin=0\topskip,%
 innerbottommargin=0.2\topskip,%
 splittopskip=\topskip,%
 %ntheorem=true,%
 ]{DefFr}{Définition}

\begin{document}

\begin{DefFr}
  Ceci est une définition.
\end{DefFr}

\end{document}
et voici mon code modifié

Code : Tout sélectionner

\documentclass[12pt,oneside,a4paper]{report}

\usepackage[frenchb]{babel}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{amssymb,amsmath,amsfonts,amsxtra,amsthm}
\usepackage{mathrsfs}
\usepackage{geometry}
\usepackage[np]{numprint}
\usepackage{eurosym}
\usepackage{pgf}
\usepackage{multicol}
\usepackage{url}
\usepackage{cancel}
\usepackage[autostyle, french=guillemets]{csquotes}
\usepackage{xspace}
\usepackage[framemethod=TikZ]{mdframed}

 \newmdtheoremenv[ %
 outerlinewidth=1,%
 roundcorner=10pt,%
 leftmargin=20,%
 rightmargin=20,%
 backgroundcolor=black!15,%
% outerlinecolor=blue!70!black,%
 outerlinecolor=black,%
 innertopmargin=0\topskip,%
 innerbottommargin=0.2\topskip,%
 splittopskip=\topskip,%
 %ntheorem=true,%
 ]{DefFr}{Définition}


\newtheoremstyle{Rem}{\topsep}{\topsep}{}{\parindent}{}{.}{.5em}{\thmname{\scshape #1}\normalfont\thmnote{ (#3)}}
\theoremstyle{Rem}
\newtheorem{Rapp}{Rappel}
\newtheorem{Rem}{Remarque}
\newtheorem{Rems}{Remarques}
\newtheorem{Prop}{Propriété}
\newtheorem{Props}{Propriétés}
\newtheorem{Def}{Définition}
\newtheorem{Dem}{Démonstration}
\newtheorem{Expl}{Exemple}
\newtheorem{Expls}{Exemples}
\newtheorem{Not}{Notation}
\newtheorem{But}{But}
\newtheorem{Voc}{Vocabulaire}
\begin{document}

\begin{DefFr}
  Ceci est une définition.
\end{DefFr}

\end{document}
ou j'ai juste changé de place le morceau suivant (que j'a i placé après la déclaration de l'environnement de définition encadrée).

Code : Tout sélectionner

\newtheoremstyle{Rem}{\topsep}{\topsep}{}{\parindent}{}{.}{.5em}{\thmname{\scshape #1}\normalfont\thmnote{ (#3)}}
\theoremstyle{Rem}
\newtheorem{Rapp}{Rappel}
\newtheorem{Rem}{Remarque}
\newtheorem{Rems}{Remarques}
\newtheorem{Prop}{Propriété}
\newtheorem{Props}{Propriétés}
\newtheorem{Def}{Définition}
\newtheorem{Dem}{Démonstration}
\newtheorem{Expl}{Exemple}
\newtheorem{Expls}{Exemples}
\newtheorem{Not}{Notation}
\newtheorem{But}{But}
\newtheorem{Voc}{Vocabulaire}

gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2561
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: Numérotation avec le package mdframed

Message par gigiair »

styren a écrit :L'encodage UTF8 vient de me donner des caractères spéciaux en place de caractères accentués.
Par contre, le numéro avec la définition apparaît, alors qu'il n'apparaît dans mon document de travail. Le problème doit venir d'ailleurs. Je vais chercher.
En UTF-8 les caractères accentués sont encodés sur deux octets alors qu'en latin-1 ils ne le sont que sur 1octet. Pour la machine, les caractères ne sont que des numéros. Par exemple, le caractère affiché 'é' est codé 233 en latin-1 et par la suite de deux octets (195 169) en UTF-8.
Or en Latin-1 195 affiche le caractère 'Ã' et 169 affiche '©' Donc un 'é' enregistré dans un fichier en utf-8 et affiché en latin-1 sera affiché 'é'
Il faut qu'il y ait concordance entre l'encodage et l'interprétation de l'encodage.

Voici ce que donne un fichier encodé en utf-8 (voir sur la barre d'état) et déclaré en latin-1
utf-8.png
J'ai demandé à mon Emacs d'afficher le pdf au dessous du fichier source, la barre grise au milieu est la barre d'état du fichier source. Remarquez la notification de l'encodage UTF-8. LF signifie que le retour à la ligne est codé par le caractère LF (caractère 10) . Les alternatives sont CR (caractère 13 ) ou CRLF (13,10).


Le même fichier encodé en latin-1
latin-1.png
On aurait pu aussi bien encoder en utf-8 et déclarer utf8, LaTeX s'en tape le coquillard, mais peut-être pas les autres moteurs XeTeX, LuaTeX etc.
Notez que si le fichier est encodé en utf-8 la déclaration inputenc est facultative, mais pour ma part je préfère la mettre j'évite les configurations par défaut.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
JJR.
LaTeXien migrateur.

styren
Utilisateur confirmé
Utilisateur confirmé
Messages : 59
Inscription : vendredi 28 juillet 2017, 23:29

Re: Numérotation avec le package mdframed

Message par styren »

Je te remercie pour ces éclaircissements. Je suis bien d'accord que je devrais me mettre à l'utf8.
Qu'est ce que je devrais modifier dans mon entête pour déclarer le fichier en utf8 ? (de tout façon, je n'utilise que Latex, pas Luatex ou Xetex).

gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2561
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: Numérotation avec le package mdframed

Message par gigiair »

Je me suis sans doute mal exprimé, le fait qu'un fichier soit codé en UTF-8 ou non n'est pas du ressort de LaTeX mais du système d'exploitation hôte et des applicatifs de création ou de modification des fichiers de texte. La seule chose qu'on peut faire qui concerne LaTeX est de déclarer l'encodage du fichier source pour qu'il puisse l'interpréter correctement. LaTeX n'a pas la capacité de détecter ou de modifier l'encodage d'un fichier source (pour autant que je sache).

Les problèmes apparaissent quand on utilise des fichiers provenant de sources diverses encodées suivant différents protocoles.

Il existe des utilitaires pour fixer l'encodage d'un fichiers à la valeur que l'on désire.
Sous Linux iconv et recode sont censés faire ça, mais j'ai constaté que dans des cas parfois simples ces utilitaires échouaient. Je suis loin d'être un spécialiste de ce sujet.
Personnellement, je suis un utilisateur enthousiaste de Emacs qui sait reconnaître et modifier l'encodage d'un fichier en un tournemain. Je n'ai jamais eu le moindre échec y compris bien sûr quand iconv et recode échouaient. Je ne peux évidemment pas dire grand chose pour des environnements que je ne maîtrise pas.
JJR.
LaTeXien migrateur.

styren
Utilisateur confirmé
Utilisateur confirmé
Messages : 59
Inscription : vendredi 28 juillet 2017, 23:29

Re: Numérotation avec le package mdframed

Message par styren »

Tu t'es très bien exprimé, la faute est pour moi. Je repose ma question : comment déclarer un encodage en utf8 dans Latex ?
Et une recherche très rapide donne \usepackage[utf8]{inputenc}.
Question réglée.

Reste ma question seconde sur le package mdframed, à savoir pourquoi mon code produit ou ne produit pas la numérotation suivant l'endroit ou je place la déclaration des environnements.

J'aurai une autre question en lien avec le but premier de ce message. Comment produire un environnement semblable à celui que j'utilise (DefFr) mais sans numérotation (et sans jouer sur le positionnement de la déclaration de l'environnement) ?

Merci d'avance.

gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2561
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: Numérotation avec le package mdframed

Message par gigiair »

D'après Bernard, il n'y a aucun problème avec l'ECM que tu as fourni. Il faudrait fournir un ECM présentant ce défaut autrement les contributeurs en sont réduit à un exercice de divination. Je passe la main, je ne suis pas compétent sur ce sujet.
JJR.
LaTeXien migrateur.

styren
Utilisateur confirmé
Utilisateur confirmé
Messages : 59
Inscription : vendredi 28 juillet 2017, 23:29

Re: Numérotation avec le package mdframed

Message par styren »

J'avais reposé un ECM mais la discussion sur l'utf8 semble t'empêcher de le voir.
Je le remets donc ici.

J'ai résolu mon problème de numérotation mais je ne comprends pas pourquoi ça coinçait.

Voici mon code initial (où je n'ai pas la numérotation des définitions encadrées)

Code : Tout sélectionner

\documentclass[12pt,oneside,a4paper]{report}

\usepackage[frenchb]{babel}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{amssymb,amsmath,amsfonts,amsxtra,amsthm}
\usepackage{mathrsfs}
\usepackage{geometry}
\usepackage[np]{numprint}
\usepackage{eurosym}
\usepackage{pgf}
\usepackage{multicol}
\usepackage{url}
\usepackage{cancel}
\usepackage[autostyle, french=guillemets]{csquotes}
\usepackage{xspace}
\usepackage[framemethod=TikZ]{mdframed}

\newtheoremstyle{Rem}{\topsep}{\topsep}{}{\parindent}{}{.}{.5em}{\thmname{\scshape #1}\normalfont\thmnote{ (#3)}}
\theoremstyle{Rem}
\newtheorem{Rapp}{Rappel}
\newtheorem{Rem}{Remarque}
\newtheorem{Rems}{Remarques}
\newtheorem{Prop}{Propriété}
\newtheorem{Props}{Propriétés}
\newtheorem{Def}{Définition}
\newtheorem{Dem}{Démonstration}
\newtheorem{Expl}{Exemple}
\newtheorem{Expls}{Exemples}
\newtheorem{Not}{Notation}
\newtheorem{But}{But}
\newtheorem{Voc}{Vocabulaire}

 \newmdtheoremenv[ %
 outerlinewidth=1,%
 roundcorner=10pt,%
 leftmargin=20,%
 rightmargin=20,%
 backgroundcolor=black!15,%
% outerlinecolor=blue!70!black,%
 outerlinecolor=black,%
 innertopmargin=0\topskip,%
 innerbottommargin=0.2\topskip,%
 splittopskip=\topskip,%
 %ntheorem=true,%
 ]{DefFr}{Définition}

\begin{document}

\begin{DefFr}
  Ceci est une définition.
\end{DefFr}

\end{document}
et voici mon code modifié

Code : Tout sélectionner

\documentclass[12pt,oneside,a4paper]{report}

\usepackage[frenchb]{babel}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{amssymb,amsmath,amsfonts,amsxtra,amsthm}
\usepackage{mathrsfs}
\usepackage{geometry}
\usepackage[np]{numprint}
\usepackage{eurosym}
\usepackage{pgf}
\usepackage{multicol}
\usepackage{url}
\usepackage{cancel}
\usepackage[autostyle, french=guillemets]{csquotes}
\usepackage{xspace}
\usepackage[framemethod=TikZ]{mdframed}

 \newmdtheoremenv[ %
 outerlinewidth=1,%
 roundcorner=10pt,%
 leftmargin=20,%
 rightmargin=20,%
 backgroundcolor=black!15,%
% outerlinecolor=blue!70!black,%
 outerlinecolor=black,%
 innertopmargin=0\topskip,%
 innerbottommargin=0.2\topskip,%
 splittopskip=\topskip,%
 %ntheorem=true,%
 ]{DefFr}{Définition}


\newtheoremstyle{Rem}{\topsep}{\topsep}{}{\parindent}{}{.}{.5em}{\thmname{\scshape #1}\normalfont\thmnote{ (#3)}}
\theoremstyle{Rem}
\newtheorem{Rapp}{Rappel}
\newtheorem{Rem}{Remarque}
\newtheorem{Rems}{Remarques}
\newtheorem{Prop}{Propriété}
\newtheorem{Props}{Propriétés}
\newtheorem{Def}{Définition}
\newtheorem{Dem}{Démonstration}
\newtheorem{Expl}{Exemple}
\newtheorem{Expls}{Exemples}
\newtheorem{Not}{Notation}
\newtheorem{But}{But}
\newtheorem{Voc}{Vocabulaire}
\begin{document}

\begin{DefFr}
  Ceci est une définition.
\end{DefFr}

\end{document}
ou j'ai juste changé de place le morceau suivant (que j'a i placé après la déclaration de l'environnement de définition encadrée).

Code : Tout sélectionner

\newtheoremstyle{Rem}{\topsep}{\topsep}{}{\parindent}{}{.}{.5em}{\thmname{\scshape #1}\normalfont\thmnote{ (#3)}}
\theoremstyle{Rem}
\newtheorem{Rapp}{Rappel}
\newtheorem{Rem}{Remarque}
\newtheorem{Rems}{Remarques}
\newtheorem{Prop}{Propriété}
\newtheorem{Props}{Propriétés}
\newtheorem{Def}{Définition}
\newtheorem{Dem}{Démonstration}
\newtheorem{Expl}{Exemple}
\newtheorem{Expls}{Exemples}
\newtheorem{Not}{Notation}
\newtheorem{But}{But}
\newtheorem{Voc}{Vocabulaire}
Qui est-ce qui dans mon code fait que ça coince suivant la position des différentes déclarations d'environnements ?
Merci, d'avance.