Box décalée dans un environnement à puces itemize

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 membres 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.
marco56
Utilisateur chevronné
Utilisateur chevronné
Messages : 1058
Inscription : jeudi 25 novembre 2010, 22:10

[Résolu] Box décalée dans un environnement à puces itemize

Message non lu par marco56 »

Bonjour,
J'ai un petit souci avec des environnements de listings (Python, Arduino, ou autres).
Ils sont définis de la façon suivante :

Code : Tout sélectionner

\newlength\largeurboxlisting
\newsavebox{\pythonbox}%

\lstnewenvironment{python_cons}[1][5]{%
	\begingroup \lrbox{\pythonbox}%
	\lstset{style=mypython}}{%
	\endlrbox\endgroup
	\settowidth{\largeurboxlisting}{\usebox\pythonbox}
	\tikz\node[%
	drop shadow={shadow xshift=3pt, shadow yshift=-3pt},
	rounded corners = 3pt, 
	line width = 1pt, 
	draw = green!80, 
	fill = green!10, 
	inner sep = 4mm,
	] {
		\begin{minipage}{\dimexpr\largeurboxlisting+#1mm}
			\hspace*{#1mm}\usebox\pythonbox
		\end{minipage}
	};
}
Je ne détaille pas le reste sauf demande, je pense que c'est inutile.
Mon problème est le suivant : lorsque je mets cela dans des item de itemize, le texte se trouve décalé de la boite et déborde à gauche. Y a-t-il un moyen simple pour que cela ne déborde pas ?
Merci et bon dimanche.
Dernière modification par marco56 le lundi 06 décembre 2021, 20:28, modifié 1 fois.
marco56
Utilisateur chevronné
Utilisateur chevronné
Messages : 1058
Inscription : jeudi 25 novembre 2010, 22:10

Re: Box décalée dans un environnement à puces itemize

Message non lu par marco56 »

Un ecm pour illustrer mon problème :

Code : Tout sélectionner

\documentclass [fleqn,a4paper,openany]{book}

\usepackage[utf8]{inputenc}
\usepackage[a4paper]{geometry}
\geometry{lmargin=3cm,rmargin=3cm,tmargin=2cm,bmargin=1.5cm}
\usepackage{tikz}
\usetikzlibrary{arrows,shadows}

%\input{preambule_21-22/preambule11Pssindexssanim}

\usepackage{listingsutf8}
\usepackage[breakable]{tcolorbox}
\usepackage{xcolor}

\colorlet{stringcolour}{red!80!black}
\colorlet{keywordcolour}{magenta!90!black}
\colorlet{exceptioncolour}{yellow!80!red}
\colorlet{commandcolour}{blue!60!black}
\colorlet{numpycolour}{blue!80!green}
\colorlet{literatecolour}{magenta!90!black}
\colorlet{promptcolour}{red!80!black}
\colorlet{specmethodcolour}{red}
\colorlet{commentcolour}{green!60!black}

\makeatletter
\newsavebox{\lstb@x}

\newlength\largeurboxlisting
\newsavebox{\pythonbox}%

\lstdefinestyle{mypython}{
%\lstset{
%keepspaces=true,
inputencoding=utf8,
language=python,
showtabs=true,
tab=,
tabsize=2,
basicstyle=\ttfamily\footnotesize, %\setstretch{.5},
stringstyle=\color{stringcolour},
showstringspaces=false,
keepspaces=true,
alsoletter={1234567890},
otherkeywords={\%, \}, \{, \&, \|},
morekeywords={as},
keywordstyle=\color{keywordcolour}\bfseries,
emph={and,break,class,continue,def,yield,del,elif ,else,%
except,exec,finally,for,from,global,if,import,in,%
lambda,not,or,pass,print,raise,return,try,while,assert,with},
emphstyle=\color{blue}\bfseries,
emph={[2]True, False, None},
emphstyle=[2]\color{keywordcolour},
emph={[3]object,type,isinstance,copy,deepcopy,zip,enumerate,reversed,list,len,dict,tuple,xrange,append,execfile,real,imag,reduce,str,repr},
emphstyle=[3]\color{commandcolour},
emph={Exception,NameError,IndexError,SyntaxError,TypeError,ValueError,OverflowError,ZeroDivisionError},
emphstyle=\color{exceptioncolour}\bfseries,
morecomment=[s]{"""}{"""},
commentstyle=\color{commentcolour}\slshape,
emph={[4]ode, fsolve, sqrt, exp, sin, cos,arctan, arctan2, arccos, pi,  array,
norm, solve, dot, arange, , isscalar, max, sum, flatten, shape, reshape, find,
any, all, abs, plot, show, linspace, legend, quad, polyval,polyfit, hstack,
concatenate,vstack,column_stack,empty,zeros,ones,rand,vander,grid,pcolor,eig,
eigs,eigvals,svd,qr,tan,det,logspace,roll,min,mean,cumsum,cumprod,diff,vectorize
,lstsq,cla,eye,xlabel,ylabel,squeeze},
emphstyle=[4]\color{numpycolour},
emph={[5]__init__,__add__,__mul__,__div__,__sub__,__call__,__getitem__,__setitem__,__eq__,__ne__,__nonzero__,__rmul__,__radd__,__repr__,__str__,__get__,__truediv__,__pow__,__name__,__future__,__all__},
emphstyle=[5]\color{specmethodcolour},
emph={[6]assert,yield},
emphstyle=[6]\color{keywordcolour}\bfseries,
emph={[7]range},
emphstyle={[7]\color{keywordcolour}\bfseries},
escapeinside={<@}{@>},
literate=
{é}{{\'e}}{1}%
{è}{{\`e}}{1}%
{à}{{\`a}}{1}%
{â}{{\^a}}{1}%
{ç}{{\c{c}}}{1}%
{æ}{{\ae}}{1}%
{œ}{{\oe}}{1}%
{ù}{{\`u}}{1}%
{É}{{\'E}}{1}%
{È}{{\`E}}{1}%
{À}{{\`A}}{1}%
{Ç}{{\c{C}}}{1}%
{Æ}{{\AE}}{1}%
{Œ}{{\OE}}{1}%
{Ê}{{\^E}}{1}%
{ê}{{\^e}}{1}%
{î}{{\^i}}{1}%
{ï}{{\"i}}{1}%
{ô}{{\^o}}{1}%
{û}{{\^u}}{1}%
{²}{{$^2$}}1
{³}{{$^3$}}1
{⁴}{{$^4$}}1
{⁵}{{$^5$}}1
{⁶}{{$^6$}}1
{⁷}{{$^7$}}1
{⁸}{{$^8$}}1
{⁹}{{$^9$}}1
,
breaklines=true%
}

\lstnewenvironment{python_cons}[1][5]{%
\begingroup \lrbox{\pythonbox}%
\lstset{style=mypython}}{%
\endlrbox\endgroup
\settowidth{\largeurboxlisting}{\usebox\pythonbox}
\tikz\node[%
drop shadow={shadow xshift=3pt, shadow yshift=-3pt},
rounded corners = 3pt, 
line width = 1pt , 
draw = green!80 , 
fill = green!10 , 
inner sep = 4mm,
] {
\begin{minipage}{\dimexpr\largeurboxlisting+#1mm}
\hspace*{#1mm}\usebox\pythonbox
\end{minipage}
};
}
\makeatother

\begin{document}

\begin{python_cons}
from pyfirmata import Arduino
# choix du port de la carte Aduino
carte = Arduino('/dev/ttyACM0')
\end{python_cons}

\begin{itemize}
\item Blabla

\begin{python_cons}
from pyfirmata import Arduino
# choix du port de la carte Aduino
carte = Arduino('/dev/ttyACM0')
\end{python_cons}

\end{itemize}

\end{document}
Un peu long, je peux épurer si besoin encore.
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 913
Inscription : vendredi 12 juin 2009, 22:35
Localisation : Chambéry

Re: Box décalée dans un environnement à puces itemize

Message non lu par un bon petit »

Exécuter \csname @parboxrestore\endcsname au tout début de la \lrbox.
marco56
Utilisateur chevronné
Utilisateur chevronné
Messages : 1058
Inscription : jeudi 25 novembre 2010, 22:10

Re: Box décalée dans un environnement à puces itemize

Message non lu par marco56 »

Merci, mais je ne parviens pas à faire fonctionner cette option.
MB
Administrateur
Administrateur
Messages : 7649
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Re: Box décalée dans un environnement à puces itemize

Message non lu par MB »

Code : Tout sélectionner

\lstnewenvironment{python_cons}[1][5]{%
\begingroup \lrbox{\pythonbox}\csname @parboxrestore\endcsname%
\lstset{style=mypython}}{%
\endlrbox\endgroup
\settowidth{\largeurboxlisting}{\usebox\pythonbox}
\tikz\node[%
drop shadow={shadow xshift=3pt, shadow yshift=-3pt},
rounded corners = 3pt, 
line width = 1pt , 
draw = green!80 , 
fill = green!10 , 
inner sep = 4mm,
] {
\begin{minipage}{\dimexpr\largeurboxlisting+#1mm}
\hspace*{#1mm}\usebox\pythonbox
\end{minipage}
};
}
MB. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
marco56
Utilisateur chevronné
Utilisateur chevronné
Messages : 1058
Inscription : jeudi 25 novembre 2010, 22:10

Re: Box décalée dans un environnement à puces itemize

Message non lu par marco56 »

Super ! Merci beaucoup. J'étais persuadé avoir essayé cette solution mais j'ai dû me tromper.