[Algorithme2e] Plusieurs questions

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.
ezize
Utilisateur confirmé
Utilisateur confirmé
Messages : 80
Inscription : samedi 05 août 2006, 13:01

[Algorithme2e] Plusieurs questions

Message par ezize »

Bonsoir,

En lisant la documentation de algorithm2e et en m'inspirant de ce fil, j'ai écrit cet exemple d'algorithme :

Code : Tout sélectionner

\documentclass[11pt,a4paper]{book}

\usepackage{geometry}
\geometry{a4paper,textheight=26cm,textwidth=19cm,hcentering,top=1cm,footnotesep=.5cm}

\pagestyle{empty}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}

%------algorithm2e---------
\usepackage[linesnumbered,french,commentsnumbered]{algorithm2e}

\SetAlFnt{\small\sffamily}

\SetAlCapFnt{\tiny \color{red}}
\SetAlCapNameSty{textsl}
\SetAlCapNameFnt{\tiny \color{blue}}

\DontPrintSemicolon 
\SetAlgoNoLine

\SetKwComment{tcp}{"}{"}
\SetKw{entrer}{\textcolor{DarkRed}{Entrer}}
\SetKw{afficher}{\textcolor{DarkRed}{Afficher}}
\SetKw{commentaire}{"}
\SetKwIF{si}{sinonsi}{sinon}{\textcolor{DarkRed}{Si}}{\textcolor{DarkRed}{Alors}}{\textcolor{DarkRed}{SinonSi}}{\textcolor{DarkRed}{Sinon}}{\textcolor{DarkRed}{FinSi}}
\SetKwFor{tq}{\textcolor{DarkRed}{TantQue}}{\textcolor{DarkRed}{Faire}}{\textcolor{DarkRed}{FinTantQue}}

%-----couleur fond---------
\usepackage{algpseudocode}

\usepackage{framed}
\usepackage{mdframed}
\usepackage[usenames,dvipsnames,svgnames]{xcolor}

\frenchbsetup{StandardLists=true}

\definecolor{FondNumero}{RGB}{000,255,000}
\definecolor{FondAlgo}{RGB}{255,255,128}
%\definecolor{fond}{RGB}{136,136,136}
%\definecolor{sicolor}{RGB}{128,0,128}
%\definecolor{tantquecolor}{RGB}{221,111,6}
%\definecolor{pourcolor}{RGB}{187,136,0}
%\definecolor{bloccolor}{RGB}{128,0,0}
\newenvironment{cadrecode}{%
\def\FrameCommand{{\color{FondNumero}\vrule width 13pt}\fcolorbox{FondNumero}{FondAlgo}}%
\MakeFramed {\hsize \linewidth \advance\hsize-\width \FrameRestore}\begin{scriptsize}}%
{\end{scriptsize}\endMakeFramed}

\makeatletter
\def\therule{\makebox[\algorithmicindent][l]{\hspace*{.5em}\color{FondNumero} \vrule width 1pt height .75\baselineskip depth .25\baselineskip}}%
\newtoks\therules
\therules={}
\def\appendto#1#2{\expandafter#1\expandafter{\the#1#2}}
\def\gobblefirst#1{#1\expandafter\expandafter\expandafter{\expandafter\@gobble\the#1}}%
\def\Ligne{\State\unskip\the\therules}% 
\def\pushindent{\appendto\therules\therule}%
\def\popindent{\gobblefirst\therules}%
\def\printindent{\unskip\the\therules}%
\def\printandpush{\printindent\pushindent}%
\def\popandprint{\popindent\printindent}%
%%------
 \parindent=0cm
    \newlength{\temp@boite}
    \newlength{\saveparindent}
    \setlength{\saveparindent}{\parindent}
    \def\breakboxparindent{\saveparindent}
    \def\encadrement#1{%
      \def\bkvz@before@breakbox{\ifhmode\par\fi\vskip5pt\vskip\breakboxskip\relax}%
      \fboxrule=0.8pt
      \fboxsep=5pt
      \def\bkvz@set@linewidth{\advance\linewidth -2\fboxrule
                              \advance\linewidth -2\fboxsep}%
      \def\bkvz@left{\color{black}\vrule \@width\fboxrule\hskip\fboxsep\color{black}}%
      \def\bkvz@right{\color{black}\hskip\fboxsep\vrule \@width\fboxrule\color{black}}%
      \def\bkvz@top{\hbox to \hsize{%
          \color{black}%
          \setlength{\temp@boite}{\fboxrule+0.5ex}%
          \vrule\@width\fboxrule\@height \temp@boite %
          \rule[0.5ex]{2em}{\fboxrule}%
          {#1}%
          \setlength{\temp@boite}{\linewidth-2em-\widthof{#1}-2\fboxrule}%
          \rule[0.5ex]{\temp@boite}{\fboxrule}%
          \setlength{\temp@boite}{\fboxrule+0.5ex}%
          \vrule\@width\fboxrule\@height \temp@boite}}%
      \def\bkvz@bottom{\color{black}\hrule\@height\fboxrule}%
      \breakbox\vspace{0pt}}
    \def\endencadrement{\vspace{3pt}\endbreakbox}
    \makeatother

\newcommand{\cadregrise}[2]{
\colorbox{#1}{
\begin{minipage}[t]{0.8\columnwidth}
\setlength\parindent{0pt}
\smallskip {#2}% 
\smallskip \par
\end{minipage}}
\medskip 
}

\newenvironment{algo}%
{%
\begin{ttfamily}
\begin{algorithm}[H]
\begin{cadrecode}
}
{%
\end{cadrecode}
\end{algorithm}
\end{ttfamily}
}

\begin{document} %------------------------------------------

\begin{minipage}{10cm}
\begin{algorithm}[H]
\begin{algo} 

\tcp*[l]{commentaire 1}
$n \leftarrow 0$ \tcp*[l,f]{commentaire 2}
$u \leftarrow 5$ \;
\tq{$u \leq 100$}{
                $n \leftarrow n+1$ \;
                $u \leftarrow u*1,2$
               }
\afficher{n}

\caption{titre}
\end{algo} 
\end{algorithm}
\end{minipage}

\end{document} %--------------------------------------------
Voici le résultat :
Image
J'ai plusieurs questions :

1- Comment faire pour supprimer le "1" qui apparaît sur la gauche de l'algorithme ? D'où vient-il ?
2- Comment faire pour écrire le guillemet droit de la ligne 1 juste après commentaire 1 ?
3- Comment gérer (supprimer/mettre) l'indentation et le trait vertical à gauche du bloc ?
4- Comment gérer l'espace entre le cadre de l'algo et son titre ?
5- Comment définir la couleur des commentaires ?

Merci infiniment !
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 880
Inscription : vendredi 12 juin 2009, 22:35
Localisation : Chambéry

Re: [Algorithme2e] Plusieurs questions

Message par un bon petit »

Code : Tout sélectionner

\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}

\usepackage[linesnumbered,french,commentsnumbered]{algorithm2e}
\usepackage[usenames,dvipsnames,svgnames]{xcolor}
\SetAlFnt{\small\sffamily}
\SetAlCapFnt{\tiny \color{red}}
\SetAlCapNameSty{textsl}
\SetAlCapNameFnt{\tiny \color{blue}}
\DontPrintSemicolon
\SetAlgoNoLine
\renewcommand\CommentSty[1]{\textnormal{\texttt{\color{blue}#1}}\unskip}
\SetKwComment{Comment}{"}{\unskip"}
\SetKw{entrer}{\textcolor{DarkRed}{Entrer}}
\SetKw{afficher}{\textcolor{DarkRed}{Afficher}}
\SetKwIF{si}{sinonsi}{sinon}{\textcolor{DarkRed}{Si}}{\textcolor{DarkRed}{Alors}}{\textcolor{DarkRed}{SinonSi}}{\textcolor{DarkRed}{Sinon}}{\textcolor{DarkRed}{FinSi}}
\SetKwFor{tq}{\textcolor{DarkRed}{TantQue}}{\textcolor{DarkRed}{Faire}}{\textcolor{DarkRed}{FinTantQue}}
\pagestyle{empty}
\begin{document}
\begin{algorithm}[H]
	\skiprule0pt
	\Comment*[l]{commentaire 1}
	$n \leftarrow 0$ \Comment*[l]{commentaire 2}
	$u \leftarrow 5$ \;
	\tq{$u \leq 100$}{
		$n \leftarrow n+1$ \;
		$u \leftarrow u*1,2$
		}
	\afficher{n}
\end{algorithm}
\end{document}
ezize
Utilisateur confirmé
Utilisateur confirmé
Messages : 80
Inscription : samedi 05 août 2006, 13:01

Re: [Algorithme2e] Plusieurs questions

Message par ezize »

Bonjour,

Merci pour ton aide ! J'ai testé et aussi modifié un peu le code que tu as donné. Voici le code modifié :

Code : Tout sélectionner

\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}

\usepackage[linesnumbered,french,commentsnumbered,boxed]{algorithm2e} %boxed: ajouté%
\usepackage[usenames,dvipsnames,svgnames]{xcolor}
\SetAlFnt{\small\sffamily}
\SetAlCapFnt{\tiny \color{red}}
\SetAlCapNameSty{textsl}
\SetAlCapNameFnt{\tiny \color{blue}}
\DontPrintSemicolon
%\SetAlgoNoLine
\renewcommand\CommentSty[1]{\textnormal{\texttt{\color{blue}#1}}\unskip}
\SetKwComment{Comment}{"}{\unskip"}
\SetKw{entrer}{\textcolor{DarkRed}{Entrer}}
\SetKw{afficher}{\textcolor{DarkRed}{Afficher}}
\SetKwIF{si}{sinonsi}{sinon}{\textcolor{DarkRed}{Si}}{\textcolor{DarkRed}{Alors}}{\textcolor{DarkRed}{SinonSi}}{\textcolor{DarkRed}{Sinon}}{\textcolor{DarkRed}{FinSi}}
\SetKwFor{tq}{\textcolor{DarkRed}{TantQue}}{\textcolor{DarkRed}{Faire}}{\textcolor{DarkRed}{FinTantQue}}
\pagestyle{empty}
\begin{document}

\begin{minipage}{7cm}  %ajouté%
\begin{algorithm}[H]
\SetAlgoNoLine  %ajouté%
	\skiprule-10pt  %modifié%
	\Comment*[r]{commentaire 0}  %ajouté%
	\Comment*[l]{commentaire 1}
	$n \leftarrow 0$ \Comment*[l]{commentaire 2}
	$u \leftarrow 5$ \;
	\tq{$u \leq 100$}{
		$n \leftarrow n+1$ \;
		$u \leftarrow u*1,2$
		}
	\afficher{n}
\caption{titre}  %ajouté%
\end{algorithm}
\end{minipage}  %ajouté%

\end{document}
Et voici le résultat :
Image

Du coup, j'ai perdu la couleur de fond : y a-t-il un moyen facile pour la remettre (une option dans le "usepackage algorithm2e" ou dans l'environnement "minipage" par exemple) ?

Sinon, j'ai essayé de modifier mon premier algo en y rajoutant ces nouvelles modifications, mais en vain...

Merci bien !
ezize
Utilisateur confirmé
Utilisateur confirmé
Messages : 80
Inscription : samedi 05 août 2006, 13:01

Re: [Algorithme2e] Plusieurs questions

Message par ezize »

J'ai réussi à modifier le premier algo de ce fil avec les modifications de "un bon petit" et voici le nouveau code :

Code : Tout sélectionner

\documentclass[11pt,a4paper]{book}

\usepackage{geometry}
\geometry{a4paper,textheight=26cm,textwidth=19cm,hcentering,top=1cm,footnotesep=.5cm}

\pagestyle{empty}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}


%------algorithm2e---------
\usepackage[linesnumbered,french,commentsnumbered]{algorithm2e}

\SetAlFnt{\small\sffamily}

\SetAlCapFnt{\tiny \color{red}}
\SetAlCapNameSty{textsl}
\SetAlCapNameFnt{\tiny \color{blue}}

\DontPrintSemicolon 
%\SetAlgoNoLine

\SetKwComment{tcp}{"}{"}
\SetKw{entrer}{\textcolor{DarkRed}{Entrer}}
\SetKw{afficher}{\textcolor{DarkRed}{Afficher}}
\SetKw{commentaire}{"}
\SetKwIF{si}{sinonsi}{sinon}{\textcolor{DarkRed}{Si}}{\textcolor{DarkRed}{Alors}}{\textcolor{DarkRed}{SinonSi}}{\textcolor{DarkRed}{Sinon}}{\textcolor{DarkRed}{FinSi}}
\SetKwFor{tq}{\textcolor{DarkRed}{TantQue}}{\textcolor{DarkRed}{Faire}}{\textcolor{DarkRed}{FinTantQue}}

%-----couleur fond---------
\usepackage{algpseudocode}

\usepackage{framed}
%\usepackage{mdframed}
\usepackage[usenames,dvipsnames,svgnames]{xcolor}

\definecolor{FondNumero}{RGB}{200,200,200}
\definecolor{FondAlgo}{RGB}{255,255,128}

\newenvironment{cadrecode}{%
\def\FrameCommand{{\color{FondNumero}\vrule width 13pt}\fcolorbox{FondNumero}{FondAlgo}}%
\MakeFramed {\hsize \linewidth \advance\hsize-\width \FrameRestore}\begin{scriptsize}}%
{\end{scriptsize}\endMakeFramed}

\makeatletter
\def\therule{\makebox[\algorithmicindent][l]{\hspace*{.5em}\color{FondNumero} \vrule width 1pt height .75\baselineskip depth .25\baselineskip}}%


\newenvironment{algo}%
{%
\begin{ttfamily}
\begin{algorithm}[H]
\begin{cadrecode}
}
{%
\end{cadrecode}
\end{algorithm}
\end{ttfamily}
}

%------couleur commentaire: à mettre ici (APRES couleur fond!)---------
\renewcommand\CommentSty[1]{\textnormal{\texttt{\color{blue}#1}}\unskip}
\SetKwComment{Comment}{"}{\unskip"}

\SetAlCapSkip{-1.5ex} %gérer l'espace entre l'algo et \caption (avec plain ou boxed)

\pagestyle{empty}

\begin{document} %------------------------------------------


\begin{minipage}{8cm}
\begin{algorithm}[H]
\begin{algo} 

\SetAlgoNoLine
\skiprule-8pt

\Comment*[l]{commentaire 1}
$n \leftarrow 0$ \Comment*[r]{commentaire 2}
$u \leftarrow 5$ \;
\tq{$u \leq 100$}{
                $n \leftarrow n+1$ \;
                $u \leftarrow u*1,2$
               }
\afficher{n}

\caption{titre}
\end{algo} 
\end{algorithm}
\end{minipage}

\end{document} %--------------------------------------------
Et voici le résultat :
Image

J'ai toujours le "1" sur gauche ! D'où vient-il et comment s'en débarrasser ?

Merci pour votre aide.
Arathorn
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 223
Inscription : mercredi 24 avril 2013, 19:47

Re: [Algorithme2e] Plusieurs questions

Message par Arathorn »

Quand je commente les lignes 54 et 59 ou 75 et 92, le chiffre disparaît.
Ce que je comprends, c'est que la ligne 76 insère un

Code : Tout sélectionner

\begin{algorithm}[H]
de l'environnement algo, que vous avez créé, juste après

Code : Tout sélectionner

\begin{algorithm}[H]
une ouverture de l'environnement algorithm.

Je suis incapabble d'expliquer l'apparition du 1 (manque de connaissances en LaTeX).
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 880
Inscription : vendredi 12 juin 2009, 22:35
Localisation : Chambéry

Re: [Algorithme2e] Plusieurs questions

Message par un bon petit »

ezize a écrit : samedi 06 mars 2021, 15:11 J'ai réussi à modifier le premier algo de ce fil avec les modifications de "un bon petit" et voici le nouveau code :
Je crois que vous avez copié-collé du code et je ne suis pas sûr que vous compreniez ce que vous faites avec le package mframed. Vous essayez de mettre une couleur de fond, alors que le package alogorithm2e n'est pas conçu pour faire ce genre de choses (et c'est très bien, car les couleurs de fond bien criardes, c'est absolument horrible).

Par ailleurs, vous n'avez pas conscience, semble-t-il, que vous imbriquez 2 environnements d'algorithme, d'où le numéro de ligne 1 qui numérote l'algorithme tout entier !

Si vous voulez absolument colorier le fond (vous ne devriez pas, mais bon), vous pouvez vous y prendre plus élégamment qu'avec la grosse artillerie mframed. Par exemple, en utilisant une \colorbox et une réglure colorée \vrule pour les numéros de ligne. C'est vraiment du bricolage de bas étage, mais c'est plus rapide et plus élégant que découper ce pauvre alogorithme en lignes comme le fait mframed.

J'ai un honte de publier ce code bricolé et mal ficelé qui force maladroitement un package à faire ce pour quoi il n'est pas conçu, mais tant pis :

Code : Tout sélectionner

\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}

\usepackage[linesnumbered,french,commentsnumbered]{algorithm2e}
\usepackage[usenames,dvipsnames,svgnames]{xcolor}
\SetAlFnt{\small\sffamily}
\SetAlCapFnt{\tiny \color{red}}
\SetAlCapNameSty{textsl}
\SetAlCapNameFnt{\tiny \color{blue}}
\DontPrintSemicolon
\SetAlgoNoLine
\renewcommand\CommentSty[1]{\textnormal{\texttt{\color{blue}#1}}\unskip}
\SetKwComment{Comment}{"}{\unskip"}
\SetKw{entrer}{\textcolor{DarkRed}{Entrer}}
\SetKw{afficher}{\textcolor{DarkRed}{Afficher}}
\SetKwIF{si}{sinonsi}{sinon}{\textcolor{DarkRed}{Si}}{\textcolor{DarkRed}{Alors}}{\textcolor{DarkRed}{SinonSi}}{\textcolor{DarkRed}{Sinon}}{\textcolor{DarkRed}{FinSi}}
\SetKwFor{tq}{\textcolor{DarkRed}{TantQue}}{\textcolor{DarkRed}{Faire}}{\textcolor{DarkRed}{FinTantQue}}
\newcommand*\printalgo[1]{%
	\begingroup
		\SetNlSkip{.75em}\fboxsep0pt
		\colorbox{yellow!40}{%
			{\color{lightgray}\vrule width1.33em\kern-1.33em }%
			\begin{algorithm}[H]#1\end{algorithm}}
	\endgroup
}
\pagestyle{empty}
\begin{document}
\printalgo{%
	\Comment*[l]{commentaire 1}
	$n \leftarrow 0$ \Comment*[l]{commentaire 2}
	$u \leftarrow 5$ \;
	\tq{$u \leq 100$}{
		$n \leftarrow n+1$ \;
		$u \leftarrow u*1,2$
		}
	\afficher{n}}
\end{document}
ezize
Utilisateur confirmé
Utilisateur confirmé
Messages : 80
Inscription : samedi 05 août 2006, 13:01

Re: [Algorithme2e] Plusieurs questions

Message par ezize »

Merci Arathorn pour votre aide !

Merci aussi à "un bon petit" pour votre explication et aussi pour la proposition de code (c'est au contraire une bonne idée) : En fait, en cherchant un peu partout, je suis tombé sur des bouts de codes (que je ne comprends pas tout c'est vrai !) et j'ai essayé de les bidouiller pour avoir un fond en couleur... Je pense que ça reste un choix qu'on peut adopter ou non suivant ses préférences... Pour les couleurs, c'est vrai que ce n'est pas terrible mais c'est fait pour que ça soit trop visible pour le test, je les changerai par la suite...

Merci donc d'avoir raccourci ce code. Mais je voudrais juste savoir comment faire apparaître le titre de l'algorithme avec \caption en bas de celui-ci ?

Merci encore une fois !
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 880
Inscription : vendredi 12 juin 2009, 22:35
Localisation : Chambéry

Re: [Algorithme2e] Plusieurs questions

Message par un bon petit »

ezize a écrit : samedi 06 mars 2021, 22:53 Merci donc d'avoir raccourci ce code. Mais je voudrais juste savoir comment faire apparaître le titre de l'algorithme avec \caption en bas de celui-ci ?
Comme ceci,; mais je connais déjà (!) votre prochaine requête : je parie que vous voulez que le titre ne soit pas dans la boite colorée.
Et bien, c'est impossible à faire simplement. Quand je dis simplement, c'est sans modifier les macros internes du package algorithm2e. Voilà pourquoi forcer les choses à tout prix n'est pas forcément une bonne démarche.

Code : Tout sélectionner

\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage[linesnumbered,french,commentsnumbered]{algorithm2e}
\usepackage[usenames,dvipsnames,svgnames]{xcolor}
\SetAlFnt{\small\sffamily}
\SetAlCapFnt{\tiny \color{red}}
\SetAlCapNameSty{textsl}
\SetAlCapNameFnt{\tiny \color{blue}}
\DontPrintSemicolon
\SetAlgoNoLine
\renewcommand\CommentSty[1]{\textnormal{\texttt{\color{blue}#1}}\unskip}
\SetKwComment{Comment}{"}{\unskip"}
\SetKw{entrer}{\textcolor{DarkRed}{Entrer}}
\SetKw{afficher}{\textcolor{DarkRed}{Afficher}}
\SetKwIF{si}{sinonsi}{sinon}{\textcolor{DarkRed}{Si}}{\textcolor{DarkRed}{Alors}}{\textcolor{DarkRed}{SinonSi}}{\textcolor{DarkRed}{Sinon}}{\textcolor{DarkRed}{FinSi}}
\SetKwFor{tq}{\textcolor{DarkRed}{TantQue}}{\textcolor{DarkRed}{Faire}}{\textcolor{DarkRed}{FinTantQue}}
\newcommand*\printalgo[2]{%
	\begingroup
		\SetNlSkip{.75em}\fboxsep0pt
		\colorbox{yellow!40}{%
			{\color{lightgray}\vrule width1.33em\kern-1.33em }%
			\begin{algorithm}[H]#2\caption{#1}\end{algorithm}}
	\endgroup
}
\pagestyle{empty}
\begin{document}
\printalgo{Mon titre}{%
	\Comment*[l]{commentaire 1}
	$n \leftarrow 0$ \Comment*[l]{commentaire 2}
	$u \leftarrow 5$ \;
	\tq{$u \leq 100$}{
		$n \leftarrow n+1$ \;
		$u \leftarrow u*1,2$
		}
	\afficher{n}}
\end{document}
ezize
Utilisateur confirmé
Utilisateur confirmé
Messages : 80
Inscription : samedi 05 août 2006, 13:01

Re: [Algorithme2e] Plusieurs questions

Message par ezize »

J'avais effectivement mis \caption dans le bloc \printalgo{...} et ça s'est retrouvé dans le cadre coloriée ce qui m'a poussé à demander comment la mettre endors du cadre ! Là j'ai remarqué que vous l'avez intégré au bloc de code que vous avez mis en place... c'est encore mieux !

Alors, comme ce n'est pas faisable facilement (j'ai compris ce que vous voulez dire), je me contenterai de ce résultat. J'ai juste rajouté :

Code : Tout sélectionner

\SetAlgoCaptionLayout{rightline}
pour avoir le titre à droite (et le bien dissocier ainsi de l'algo).

Merci infiniment pour votre disponibilité !
Dernière modification par ezize le jeudi 11 mars 2021, 19:34, modifié 1 fois.
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 880
Inscription : vendredi 12 juin 2009, 22:35
Localisation : Chambéry

Re: [Algorithme2e] Plusieurs questions

Message par un bon petit »

ezize a écrit : dimanche 07 mars 2021, 12:14Alors, comme ce n'est pas faisable facilement (j'ai compris ce que vous voulez dire), je me contenterai de ce résultat.
C'est faisable très facilement, il suffit de mettre un hook dans la macro privée \algocf@makethealgo. C'est juste que c'est pas une démarche satisfaisante : si un package veut pas faire un truc (à bon escient dans ce cas), il faut pas forcer à tout prix pour qu'il le fasse.

Code : Tout sélectionner

\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xpatch}
\usepackage[linesnumbered,french,commentsnumbered]{algorithm2e}
\usepackage[usenames,dvipsnames,svgnames]{xcolor}
\SetAlFnt{\small\sffamily}
\SetAlCapFnt{\tiny \color{red}}
\SetAlCapNameSty{textsl}
\SetAlCapNameFnt{\tiny \color{blue}}
\DontPrintSemicolon
\SetAlgoNoLine
\renewcommand\CommentSty[1]{\textnormal{\texttt{\color{blue}#1}}\unskip}
\SetKwComment{Comment}{"}{\unskip"}
\SetKw{entrer}{\textcolor{DarkRed}{Entrer}}
\SetKw{afficher}{\textcolor{DarkRed}{Afficher}}
\SetKwIF{si}{sinonsi}{sinon}{\textcolor{DarkRed}{Si}}{\textcolor{DarkRed}{Alors}}{\textcolor{DarkRed}{SinonSi}}{\textcolor{DarkRed}{Sinon}}{\textcolor{DarkRed}{FinSi}}
\SetKwFor{tq}{\textcolor{DarkRed}{TantQue}}{\textcolor{DarkRed}{Faire}}{\textcolor{DarkRed}{FinTantQue}}
\SetNlSkip{.75em}
\makeatletter
\def\color@rules{%
	\ifhmode\else\leavevmode\fi
	\rlap{\color{yellow!40}\vrule width\wd\algocf@algobox height\ht\algocf@algobox depth\dp\algocf@algobox}%
	\rlap{\color{lightgray}\vrule width1.33em height\ht\algocf@algobox depth\dp\algocf@algobox}%
}
\patchcmd\algocf@makethealgo{\box\algocf@algobox}{\color@rules\box\algocf@algobox}{}{}%
\makeatother
\pagestyle{empty}
\begin{document}
\begin{algorithm}[H]
	\Comment*[l]{commentaire 1}
	$n \leftarrow 0$ \Comment*[l]{commentaire 2}
	$u \leftarrow 5$ \;
	\tq{$u \leq 100$}{
		$n \leftarrow n+1$ \;
		$u \leftarrow u*1,2$
		}
	\afficher{n}
	\caption{Titre}
\end{algorithm}
\end{document}
ezize
Utilisateur confirmé
Utilisateur confirmé
Messages : 80
Inscription : samedi 05 août 2006, 13:01

Re: [Algorithme2e] Plusieurs questions

Message par ezize »

Bonsoir,
Merci bien pour cette nouvelle version. C'est mieux ! En plus, en ajoutant "boxed" comme option dans \usepackage{algorithm2e}, le cadre obtenu entoure mieux l'algo. Même s'il reste un petit espace en haut et en bas, ce n'est pas vraiment gênant.