Page 1 sur 2

boites, encore des boites

Posté : mar. 16 avr. 2013, 18:19
par zariski
Bonsoir !
Je me tourne vers vous (même si Asymptote n'est pas de prime abord concerné, quoique ..).
J'aimerais savoir s'il est possible de faire un environnement tel que celui présenté dans mon code (avec tikz) avec asymptote; c'est à dire une jolie boite en couleur surmonté d'un petit cadre.
Ultime difficulté: je souhaiterais que la boite se coupe automatiquement lors d'un changement de page.
Oui je sais, j'ai des exigences ! :oops:
merci !
Je précise que mon code n'est qu'un exemple.


Code : Tout sélectionner


\documentclass[12pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}

\usepackage[upright]{fourier}
\usepackage{amsmath,amsfonts,amssymb,amstext,pifont,amsthm}
\usepackage{longtable}
\usepackage{color}
\usepackage[table,x11names,dvipsnames,svgnames]{xcolor}
\usepackage{array}
\usepackage{graphicx}
\usepackage{multirow}
\usepackage{empheq}
\usepackage{fancybox}


\usepackage{enumitem}
\frenchbsetup{StandardLists=true}

%%%%%%% MISE EN PAGE  %%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\setlength{\voffset}{-1in}
\setlength{\topmargin}{0.0cm}
\setlength{\headheight}{0.0cm}
\setlength{\headsep}{0.5cm}
\setlength{\topskip}{0cm}
\setlength{\textheight}{28cm}
\setlength{\footskip}{0.6cm}


\setlength{\hoffset}{-1cm}
\setlength{\marginparwidth}{0pt}
\setlength{\oddsidemargin}{0pt}
\setlength{\evensidemargin}{0pt}
\setlength{\marginparsep}{0pt}
\setlength{\textwidth}{18.5cm}
%%%%%%% FIN MISE EN PAGE  %%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\definecolor{paille}{cmyk}{0,0,0.1,0}

\setlength{\parindent}{0pt}

\usepackage{titlesec}
\usepackage{tikz}
   \usetikzlibrary{decorations}
   \usetikzlibrary{decorations.pathmorphing}
   \usetikzlibrary{decorations.pathreplacing}
   \usetikzlibrary{decorations.shapes}
   \usetikzlibrary{decorations.text}
   \usetikzlibrary{decorations.markings}
   \usetikzlibrary{decorations.fractals}
   \usetikzlibrary{decorations.footprints}
   \usetikzlibrary{calc}
   \usetikzlibrary{arrows,fadings}


%%%%%%%%%%%%%%%  Code Définition %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%Utilisation : \begin{defi}{Définition \textbf{(Norme)}} ...\end{defi} %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\tikzset{
mybox/.style={draw=Green,
              fill=paille,
              very thick,
              rectangle,
              rounded corners,
              inner sep=5pt,
              inner ysep=10pt,
              text width= \linewidth-2*5pt-\pgflinewidth
             },
title/.style={draw=black,
              fill=blue!10,
              thick,
              rectangle,
              rounded corners,
              inner sep=1em,
              inner ysep=.5ex,
             },
}

\newenvironment{defi}[1]{%
                         \vspace{10pt}
                         \noindent%
                         \def\title{#1}%
                         \tikzpicture
                         \node[mybox,minimum width=15cm](box)
                         \bgroup\rule{0pt}{2pt}
                        }%
                        {\egroup;
                          \node[title, right=10pt] at (box.north west)
                          {\title};
                         \endtikzpicture
                        }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%  Fin Code Définition %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%





\begin{document}
\definecolor{gris}{rgb}{0.84,0.84,0.84}
  \begin{center}
   \fcolorbox{black}{gris}{\huge\textsc{ESPACE VECTORIEL NORME}}
  \end{center}
\textcolor[rgb]{0.00,0.00,1.00}{\tableofcontents}


\newpage


Dans ce chapitre, $\mathbb{K}$ désigne le corps $\mathbb{R}$ ou le corps $\mathbb{C}$, et $E$ un $K$-espace vectoriel de dimension finie ou non.

\section{Un peu de vocabulaire}
\subsection{Norme et distance}
\begin{defi}{Définition \textbf{(Norme)}}
On appelle \textbf{norme} sur le $K$-espace vectoriel $E$, toute application $N : E \longrightarrow [0;+\infty[ $ vérifiant : $\forall x, y \in E $ et $\forall \lambda \in K$ :
        \begin{itemize}
           \item $N(x)=0  \Longleftrightarrow x=0 $
                        \hspace{1.8cm}  \emph{ axiome de séparation};
           \item $N(\lambda x)=|\lambda |N(x)$
                        \hspace{2.2cm} \emph{ axiome d'homogénéité};
           \item $N(x+y)\leq N(x) + N(y)$
                        \hspace{1cm}\emph{ inégalité triangulaire}.
        \end{itemize}
On dit que $(E,N)$ est un \textbf{espace vectoriel normé}.


On appelle \textbf{norme} sur le $K$-espace vectoriel $E$, toute application $N : E \longrightarrow [0;+\infty[ $ vérifiant : $\forall x, y \in E $ et $\forall \lambda \in K$ :
        \begin{itemize}
           \item $N(x)=0  \Longleftrightarrow x=0 $
                        \hspace{1.8cm}  \emph{ axiome de séparation};
           \item $N(\lambda x)=|\lambda |N(x)$
                        \hspace{2.2cm} \emph{ axiome d'homogénéité};
           \item $N(x+y)\leq N(x) + N(y)$
                        \hspace{1cm}\emph{ inégalité triangulaire}.
        \end{itemize}
On dit que $(E,N)$ est un \textbf{espace vectoriel normé}.

On appelle \textbf{norme} sur le $K$-espace vectoriel $E$, toute application $N : E \longrightarrow [0;+\infty[ $ vérifiant : $\forall x, y \in E $ et $\forall \lambda \in K$ :
        \begin{itemize}
           \item $N(x)=0  \Longleftrightarrow x=0 $
                        \hspace{1.8cm}  \emph{ axiome de séparation};
           \item $N(\lambda x)=|\lambda |N(x)$
                        \hspace{2.2cm} \emph{ axiome d'homogénéité};
           \item $N(x+y)\leq N(x) + N(y)$
                        \hspace{1cm}\emph{ inégalité triangulaire}.
        \end{itemize}
On dit que $(E,N)$ est un \textbf{espace vectoriel normé}.


On appelle \textbf{norme} sur le $K$-espace vectoriel $E$, toute application $N : E \longrightarrow [0;+\infty[ $ vérifiant : $\forall x, y \in E $ et $\forall \lambda \in K$ :
        \begin{itemize}
           \item $N(x)=0  \Longleftrightarrow x=0 $
                        \hspace{1.8cm}  \emph{ axiome de séparation};
           \item $N(\lambda x)=|\lambda |N(x)$
                        \hspace{2.2cm} \emph{ axiome d'homogénéité};
           \item $N(x+y)\leq N(x) + N(y)$
                        \hspace{1cm}\emph{ inégalité triangulaire}.
        \end{itemize}
On dit que $(E,N)$ est un \textbf{espace vectoriel normé}.
\end{defi}


\end{document}

Re: boites, encore des boites

Posté : mar. 16 avr. 2013, 23:30
par GM
Bonsoir,

zariski a écrit :J'aimerais savoir s'il est possible de faire un environnement tel que celui présenté dans mon code (avec tikz) avec asymptote

Je ne sais pas comment résoudre ton problème du saut de page... mais je sais par contre, que si j'avais ce genre de choses à réaliser... c'est bien avec tex et/ou tikz que je chercherais à le faire.
Je te déconseille Asymptote pour ce genre de chose.

Re: boites, encore des boites

Posté : mer. 17 avr. 2013, 00:21
par GM
J'ai fouillé dans ma partition Z (Z comme Zone... mon "Area 51" des expérimentations diverses et variées de ces dernières années :-) et j'ai retrouvé cela :

Code : Tout sélectionner

% !TEX TS-program = latexmk
% !TEX encoding = latin1
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}
\usepackage{lmodern}

\usepackage[a4paper,%
            hmargin={1cm,1cm},%
            vmargin={1cm,1cm},%
            noheadfoot]{geometry}

\usepackage{xspace}
\usepackage[cm]{fullpage}

\usepackage{xargs}
\usepackage{tikz}
\usepackage{xcolor}

\definecolor{myblue}{RGB}{30,30,255}
\definecolor{mygreen}{RGB}{0,100,0}

\usepackage{adjustbox}

\newsavebox{\mysavebox}
\newlength{\reste}
\newlength{\myrest}

\usetikzlibrary{shadows,calc,fadings}

\pgfdeclarelayer{background layer}
\pgfsetlayers{background layer,main}

\newcounter{enonce}[section]
\renewcommand{\theenonce}{\thesection.\arabic{enonce}}

\newenvironmentx{enonce}[3][3=]
  {
  \begin{trivlist}\item
   \refstepcounter{enonce}
  \noindent
   \begin{lrbox}{\mysavebox}%
   \begin{tikzpicture}
    \node[inner sep=4pt] (textbox) {\iffalse`}\fi
     \hspace{4pt}\begin{minipage}{\dimexpr\textwidth-4pt-4pt-4pt-0.4pt-0.4pt-0.4pt}
     \hspace{-4pt}\begin{tikzpicture}
     \node[inner sep=4pt] (titlebox) {%
       \begin{minipage}{\dimexpr\linewidth-4pt}
       \bfseries
       #1~\theenonce\ifcat$\detokenize{#3}$\else\space: \textit{\mdseries#3}\fi
       \end{minipage}\hspace{4pt}};
     \begin{pgfonlayer}{background layer}
     \fill[rounded corners, left color=#2!20, right color=#2!0,draw=white]
        (titlebox.south west) [rounded corners] --
        (titlebox.north west) --
        (titlebox.north east) [rounded corners] --
        (titlebox.south east) -- cycle;
     \end{pgfonlayer}
      \end{tikzpicture}
      }
  {\end{minipage}\egroup;
   \draw[gray!20] (textbox.south west) [rounded corners] --
         (textbox.north west) --
         (textbox.north east) [rounded corners=0pt] --
         (textbox.south east) -- cycle;
     \draw[gray!30,line width=2pt] ($(textbox.south west)+(-3pt,-3pt)$) [rounded corners=7pt] --
         ($(textbox.north west)+(-3pt,3pt)$) --
         ($(textbox.north east)+(3pt,3pt)$) [rounded corners=0pt] --
         ($(textbox.south east)+(3pt,-3pt)$) -- cycle;
   \end{tikzpicture}
            \end{lrbox}%
%
\setlength{\reste}{\dimexpr\pagegoal-\pagetotal-\baselineskip\relax} % mesure la hauteur restante dans la page
\ifdim\ht\mysavebox>\reste
    \setlength{\myrest}{\ht\mysavebox}%
    \loop\ifdim\myrest>\reste
         \clipbox{0 {\myrest-\reste} 0 {\ht\mysavebox-\myrest}}{\par\noindent\usebox{\mysavebox}}%
        \addtolength{\myrest}{-\reste}%
          \setlength{\reste}{\textheight}
    \repeat
    \newpage\par\noindent
    \clipbox{0 0 0 {\ht\mysavebox-\myrest}}{\usebox{\mysavebox}}%
\else
    \usebox{\mysavebox}
    %
\fi
\end{trivlist}
}

\newenvironment{definition}
  {\enonce{D\'efinition}{myblue}}
  {\endenonce}

\newenvironment{remarque}
  {\enonce{Remarque}{mygreen}}
  {\endenonce}

\newenvironment{exemple}
  {\enonce{Exemple}{gray}}
  {\endenonce}
 
\newcommand{\boxbreak}{\vfill \ \\}  %pour couper proprement les lignes entre deux pages dans une box

\usepackage{lipsum}

\begin{document}

%\setcounter{chapter}{4}
%\chapter{Titre du chapitre}

\setcounter{section}{2}
\section{Titre de la section}

\lipsum[1]

\begin{definition}[un titre]
\lipsum[1]
\end{definition}

\lipsum[1]

\begin{remarque}
\lipsum[1]
\end{remarque}

\lipsum[1]

\begin{exemple}
\lipsum[1-3]
\end{exemple}

\lipsum[1]
\end{document}


Il y a un problème de ligne à moitié sur une page et à moitié sur une autre...

... mais cela peut donner des idées... ou te permettre peut-être de compléter ta demande sur Mathematex : il y a quelques pointures en TeX qui seront davantage capables de t'aider qu'ici, me semble t-il.
Je dis cela mais un membre de ce forum va peut-être nous surprendre... et sortir une solution qui règle le problème. :-)

Re: boites, encore des boites

Posté : mer. 17 avr. 2013, 14:33
par zariski
merci tout de même.
J'ai au moins un conseil positif: ne pas utiliser Asymptote pour cela ...
Sinon côté Mathematex, on me conseil le package mdframed .
Pffiou encore en l'anglais !

Re: boites, encore des boites

Posté : mer. 17 avr. 2013, 14:43
par zariski
euh je viens de me relire ! bravo : zéro en français !!!! :oops:
pinaise j'aime pas ça !

Re: boites, encore des boites

Posté : mer. 17 avr. 2013, 14:48
par GM
zariski a écrit :euh je viens de me relire ! bravo : zéro en français !!!! :oops:

Je te rappelle que tu as un bouton "Editer" pour rectifier ! ;-)

Re: boites, encore des boites

Posté : mer. 17 avr. 2013, 14:55
par maurice
zariski a écrit :Sinon côté Mathematex, on me conseil le package mdframed .
Pffiou encore en l'anglais !


Salut, sinon, il y a la paquet bclogo qui utilise mdframed et qui doit gérer les coupures de pages (à vérifier).
Je ne sais pas si le rendu te plaira mais en tout cas la doc est en français !!!

Bruno

Re: boites, encore des boites

Posté : mer. 17 avr. 2013, 15:10
par GM
maurice a écrit :... bclogo qui utilise mdframed et qui doit gérer les coupures de pages (à vérifier).

Je ne pense pas que bclogo permette un démarrage de boite sur une page et la fin sur la suivante.
Ou alors, j'ai raté une mise à jour.

Re: boites, encore des boites

Posté : mer. 17 avr. 2013, 15:21
par zariski
j'ai vu ça aussi !
cela semble sympa.
Merci

Re: boites, encore des boites

Posté : mer. 17 avr. 2013, 23:29
par maurice
GM a écrit :
maurice a écrit :... bclogo qui utilise mdframed et qui doit gérer les coupures de pages (à vérifier).

Je ne pense pas que bclogo permette un démarrage de boite sur une page et la fin sur la suivante.
Ou alors, j'ai raté une mise à jour.


J'ai lu ça dans l'historique de bclogo :

Code : Tout sélectionner

bclogo v3.0 (15 octobre 2011): utilisation du paquet mdframed
    permettant les coupures de boîtes en fin de page.


dans le document source de bclogo.

Bruno