Boite avec titre

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.
albenic

[Résolu] Boite avec titre

Message non lu par albenic »

Bonjour,

Mon objectif est de construire une commande qui crée une boite avec un titre pour présenter mes cours. J'ai parcouru le web et trouvé différentes solutions. Évidemment aucune ne me convient parfaitement. Donc, en partant, d'un exemple j'ai modifié et complété pour arriver à ce que je voulais :

Code : Tout sélectionner

\documentclass[french,11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{babel}
\usepackage{calc}
\usepackage{pstricks,pst-plot,pst-text,pst-tree,pst-eps,pst-fill,pst-node,pst-math}
\usepackage[a4paper,left=1cm,right=1cm,top=1cm,bottom=2cm]{geometry}

\parindent=0pt

\newpsstyle{boiteinterieure}{framearc=0.2,fillstyle=solid,fillcolor=white,framesep=5mm}
\newpsstyle{boitetitre}{fillstyle=solid,fillcolor=white}
\newsavebox\boitetitre
\newsavebox\boiteint
\def\boite#1#2{%
 \sbox\boiteint{\psframebox[style=boiteinterieure]{%
 \begin{minipage}{0.95\linewidth}%
  #2%
 \end{minipage}}}%
 \sbox\boitetitre{\psframebox[style=boitetitre]{%
  #1%
  }}%
  %\newlength{\hauteurmax}%
  %\setlength{\hauteurmax}{\real{0.5}+\ht\boitetitre*\real{0.5}}%
  %\newlength{\yminboitetitre}%
  %\setlength{\yminboitetitre}{-\ht\boitetitre}%
 \begin{pspicture}(0,-\ht\boiteint)(\wd\boiteint,1.5\ht\boiteint)%\psgrid
   \rput[l](0,0){\usebox\boiteint}
   \rput[l](5\fboxsep,\ht\boiteint){\usebox\boitetitre}
 \end{pspicture}%
}

\begin{document}

\boite{Définition}{
L'écriture $z = x + i y$ est appelée forme algébrique du nombre complexe $z$.
\begin{enumerate}
 \item $x$ est appelé partie réelle de $z$ et est noté 
 \item $y$ est appelé partie imaginaire de $z$ et est noté 
\end{enumerate}
}

\boite{Remarque}{\vspace{10cm}\hspace{15cm}}

%\boite{avec saut de lignes}{
%
%Essai avec saut de ligne
%
%}

\end{document}
Mais plusieurs petits soucis subsistent.

Le premier est que la taille des arrondis de mes boites dépend des dimensions de celle-ci (lu dans la doc pstricks) et du coup le rendu est très laid. Je souhaiterais un rayon fixe, mais je ne sais pas comment faire.

Le deuxième est que j'aimerais placer finement le titre par rapport à la boite. Pour cela j'utilise le package calc pour faire des calculs savants à partir des dimensions de mes deux boites (le titre et le contenu). Le hic c'est que cela ne marche pas. Là je n'ai aucune certitude mais je pense que cela vient de la commande \ht qui permet de récupérer la hauteur d'une boite mais qui ne doit être reconnu que dans l'environnement pspicture. La question est donc comment récupérer les hauteurs de mes boites définies par \sbox et m'en servir ensuite ?

Le troisième est qu'en utilisant ma commande, je ne peux insérer aucun saut de ligne (voir le dernier essai que j'ai commenté). C'est réellement handicapant pour la lisibilité du fichier tex. Et là soyons franc, je n'ai aucune idée tant sur ce qui pose problème que sur la solution.

Si l'un d'entre vous peut me faire avancer dans mon apprentissage de latex et par la même occasion apporter une nouvelle "boite avec titre" à la communauté, je lui en serai gré.

Cordialement, Benoît.
Dernière modification par albenic le lundi 27 décembre 2010, 14:02, modifié 1 fois.
albenic

Re: Boite avec titre

Message non lu par albenic »

Je me réponds à moi-même,

Le deuxième point est réglé. Voici le nouveau code de la commande boite avec titre :

Code : Tout sélectionner

\newpsstyle{boiteinterieure}{framearc=0.2,fillstyle=solid,fillcolor=white,framesep=5mm}
\newpsstyle{boitetitre}{fillstyle=solid,fillcolor=white}
\newsavebox\boitetitre
\newsavebox\boiteint
\newlength{\hauteurboitetitre}%
\newlength{\hauteurboiteint}%
\newlength{\ymaxboitetitre}%
\newlength{\hauteurmax}%
\newlength{\xminboitetitre}%
\def\boite#1#2{%
 \sbox\boiteint{\psframebox[style=boiteinterieure]{%
 \begin{minipage}{0.95\linewidth}%
  #2%
 \end{minipage}}}%
 \sbox\boitetitre{\psframebox[style=boitetitre]{%
  #1%
  }}%
  \settoheight{\hauteurboitetitre}{\usebox{\boitetitre}}%
  \settoheight{\hauteurboiteint}{\usebox{\boiteint}}%
  \setlength{\ymaxboitetitre}{\hauteurboiteint+\hauteurboitetitre*\real{0.5}}%
  \setlength{\hauteurmax}{\ymaxboitetitre+3mm}%
  \setlength{\xminboitetitre}{20pt}%
 \begin{pspicture}(0,-\ht\boiteint)(\wd\boiteint,\hauteurmax)%\psgrid
   \rput[l](0,0){\usebox\boiteint}
   \rput[tl](\xminboitetitre,\ymaxboitetitre){\usebox\boitetitre}
 \end{pspicture}%
}
Les autres points sont encore à résoudre.... Mais j'y arriverai un jour...
albenic

Re: Boite avec titre

Message non lu par albenic »

Re bonsoir,

Le premier point est tombé. En lisant une autre doc anglaise, j'ai trouvé les bonnes options. Voici la nouvelle version :

Code : Tout sélectionner

\newpsstyle{boiteinterieure}{cornersize=absolute,linearc=0.2,fillstyle=solid,fillcolor=white,framesep=5mm}
\newpsstyle{boitetitre}{fillstyle=solid,fillcolor=white}
\newsavebox\boitetitre
\newsavebox\boiteint
\newlength{\hauteurboitetitre}%
\newlength{\hauteurboiteint}%
\newlength{\ymaxboitetitre}%
\newlength{\hauteurmax}%
\newlength{\xminboitetitre}%
\def\boite#1#2{%
 \sbox\boiteint{\psframebox[style=boiteinterieure]{%
 \begin{minipage}{0.95\linewidth}%
  #2%
 \end{minipage}}}%
 \sbox\boitetitre{\psframebox[style=boitetitre]{%
  #1%
  }}%
  \settoheight{\hauteurboitetitre}{\usebox{\boitetitre}}%
  \settoheight{\hauteurboiteint}{\usebox{\boiteint}}%
  \setlength{\ymaxboitetitre}{\hauteurboiteint+\hauteurboitetitre*\real{0.5}}%
  \setlength{\hauteurmax}{\ymaxboitetitre+3mm}%
  \setlength{\xminboitetitre}{20pt}%
 \begin{pspicture}(0,-\ht\boiteint)(\wd\boiteint,\hauteurmax)%\psgrid
   \rput[l](0,0){\usebox\boiteint}
   \rput[tl](\xminboitetitre,\ymaxboitetitre){\usebox\boitetitre}
 \end{pspicture}%
}
Il reste le dernier point, celui que je crains le plus...
evariste_G
Utilisateur chevronné
Utilisateur chevronné
Messages : 1481
Inscription : vendredi 19 décembre 2008, 19:13
Statut actuel : Enseignant
Localisation : Bordeaux
Contact :

Re: Boite avec titre

Message non lu par evariste_G »

Bonsoir ... Je ne vais pas t'aider à résoudre ton problème, mais as-tu regardé du côté du package :

Code : Tout sélectionner

\usepackage{fancybox}
Il y a quand-même des boîtes qui semblent faire ce que tu veux (en termes d'arrondis).
Mathématiques, LaTeX et Python : https://www.mathweb.fr
Cours particuliers de maths par webcam: https://courspasquet.fr
Trouver un vrai prof pour des cours particuliers: https://lesvraisprofs.mathweb.fr/
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 995
Inscription : vendredi 12 juin 2009, 22:35
Statut actuel : Enseignant
Localisation : Chambéry
Contact :

Re: Boite avec titre

Message non lu par un bon petit »

J'ai un truc dans mes cartons qui pourrait te convenir.

Il s'agit d'environnements qui peuvent s'étendre sur plusieurs pages (ce qui est bien pratique) et qui tracent des boites à coins arrondis ou droits. Pour les coins arrondis, il s'agit de l'environnement "roundedtitlebox" dont l'argument optionnel est le rayon des arcs de cercle. Pour les coins droits, c'est l'environnement "titlebox".

Par choix, je n'ai utilisé ni tikz (Alain pourrait me le reprocher) ni pstricks (je me le reproche). Mais il est très facile de remplacer les instructions de dessin par celles de l'un de ces deux packages. Bref, je me suis contenté du dessin avec le package "pict2e" qui est le minimum syndical pour qui veut dessiner des trucs simples.

Voici le code :

Code : Tout sélectionner

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{boites}
\usepackage{pict2e}
\makeatletter
\newenvironment{roundedtitlebox}[2][5pt]{%
	\fboxrule0.4pt
	\unitlength1pt \linethickness{0.4pt}% réglage des arrondis
	\let\breakboxparindent\z@
	\def\bkvz@bottom{%
		\hbox{\kern\dimexpr\linewidth/2\put(0,0){\oval(\strip@pt\dimexpr\linewidth-0.4pt,\strip@pt\dimexpr#1*2)[b]}}%
		\vskip#1\relax}%
	\let\bkvz@before@breakbox\medbreak
	\def\bkvz@set@linewidth{\advance\linewidth\dimexpr-2\fboxrule-2\fboxsep}%
	\def\bkvz@left{\vrule\@width\fboxrule\hskip\fboxsep}%
	\def\bkvz@right{\hskip\fboxsep\vrule\@width\fboxrule}%
	\def\bkvz@top{\hbox to \hsize{%
		\put(\strip@pt\dimexpr#1+\fboxrule/2,\strip@pt\dimexpr-#1+\fboxrule/2){\oval(\strip@pt\dimexpr#1*2,\strip@pt\dimexpr#1*2)[lt]}\kern#1
		\leaders\hrule\@height\fboxrule\hskip1cm % <-- 1cm = espace avant le cadre du titre
		\begingroup
			\fboxsep1pt
			\setbox\z@\hbox{\kern0.5ex #2\kern0.5ex }%
			\setbox\z@\hbox{\lower\dimexpr(\ht\z@-\dp\z@)/2\hbox{\fbox{\box\z@}}}%
			\dp\z@\z@\ht\z@\z@\box\z@% encombrement vertical nul
		\endgroup
		\leaders\hrule\@height\fboxrule\hskip0pt plus 1fil
		\kern#1 \put(-\strip@pt\dimexpr#1+\fboxrule/2,\strip@pt\dimexpr-#1+\fboxrule/2){\oval(\strip@pt\dimexpr#1*2,\strip@pt\dimexpr#1*2)[rt]}%
		}}%
	\breakbox\vskip\dimexpr#1/2\relax}\endbreakbox

\newenvironment{titlebox}[1]{%
	\fboxrule0.4pt
	\let\breakboxparindent\z@
	\def\bkvz@bottom{\hrule\@height\fboxrule}%
	\let\bkvz@before@breakbox\medbreak
	\def\bkvz@set@linewidth{\advance\linewidth\dimexpr-2\fboxrule-2\fboxsep}%
	\def\bkvz@left{\vrule\@width\fboxrule\hskip\fboxsep}%
	\def\bkvz@right{\hskip\fboxsep\vrule\@width\fboxrule}%
	\def\bkvz@top{\hbox to \hsize{%
		\vrule\@width\fboxrule\@height\fboxrule
		\leaders\hrule\@height\fboxrule\hskip1cm % <-- 1cm = espace avant le cadre du titre
		\begingroup
			\fboxsep1pt
			\setbox\z@\hbox{\kern0.5ex #1\kern0.5ex }%
			\setbox\z@\hbox{\lower\dimexpr(\ht\z@-\dp\z@)/2\hbox{\fbox{\box\z@}}}%
			\dp\z@\z@\ht\z@\z@\box\z@% encombrement vertical nul
		\endgroup
		\leaders\hrule\@height\fboxrule\hskip0pt plus 1fil
		\vrule\@width\fboxrule\@height\fboxrule}}%
	\breakbox\kern1.5ex\relax}\endbreakbox
\makeatother

\begin{document}
\parindent0pt
Début
\begin{roundedtitlebox}[3mm]{Propriétés}
Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.
\end{roundedtitlebox}
Suite
\begin{roundedtitlebox}{Définition}
Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.
Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.
Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.
Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.
Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.
Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.
Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.
\end{roundedtitlebox}
\textbf{Et la suite avec des boites rectangulaires}
\begin{titlebox}{Propriétés}
Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.
\end{titlebox}
Suite
\begin{titlebox}{Définition}
Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.
Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.
Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.
Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.
Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.
Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.
Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.
\end{titlebox}
fin
\end{document}
Programmer en TeX, TeXpérimental
balf
Modérateur spécialisé
Modérateur spécialisé
Messages : 4065
Inscription : mercredi 02 janvier 2008, 23:18

Re: Boite avec titre

Message non lu par balf »

Il me semble inutile de se compliquer la vie à tout réinventer : dans la mesure où il s'agit, si j'ai bien compris, d'environnements de type "theorem", l'extension ntheorem définit des environnements framed theorem ou shaded theorem, qui font tout cela en supportant les changements de page. Cette extension collabore avec framed, qui permet d'utiliser n'importe quelle commande d'encadrement (p. ex. une de celles de fancybox).
Je conseille de regarder la documentation de ntheorem, qui fournit quelques exemples très intéressants.

B.A.
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 995
Inscription : vendredi 12 juin 2009, 22:35
Statut actuel : Enseignant
Localisation : Chambéry
Contact :

Re: Boite avec titre

Message non lu par un bon petit »

balf a écrit :Il me semble inutile de se compliquer la vie à tout réinventer : dans la mesure où il s'agit, si j'ai bien compris, d'environnements de type "theorem", l'extension ntheorem définit des environnements framed theorem ou shaded theorem, qui font tout cela en supportant les changements de page. Cette extension collabore avec framed, qui permet d'utiliser n'importe quelle commande d'encadrement (p. ex. une de celles de fancybox).
Je conseille de regarder la documentation de ntheorem, qui fournit quelques exemples très intéressants.
Ben voilà comment on se fait refroidir :oops:

Quelques remarques juste en passant :
  • qui a dit que je me compliquais la vie ? Ce code est dans mes archives prêt à servir !
  • pourquoi, puisque c'est si simple, ne donnes-tu pas un ECM montrant les possibilités de ntheorem et répondant à la question posée en début de fil ?
  • plein de bonne volonté, je tape "texdoc ntheorem" et je tombe sur la "documentation" de ce package. En anglais, hum, mauvais point déjà... Et il faut vraiment chercher les exemples pour les trouver. Nulle part je n'ai vu de boites qui s'étendait sur plusieurs pages (si c'est possible, pourquoi ne le montrent-ils pas ?). Je hais ces documentations toutes théoriques où il faut se taper la lecture en détail pour commencer à comprendre un peu.
  • je n'ai pas vu non plus d'exemples où le titre était sur la ligne supérieure comme le demande l'initiateur de ce fil. S'il faut en plus lire la doc d'un autre package pour y arriver, on va commencer à devenir fou.
Voilà ma petite réaction à chaud. Je ne cherchais pourtant qu'à aider celui qui avait posé la question.

Christian
Programmer en TeX, TeXpérimental
balf
Modérateur spécialisé
Modérateur spécialisé
Messages : 4065
Inscription : mercredi 02 janvier 2008, 23:18

Re: Boite avec titre

Message non lu par balf »

@ un bon petit : je suis désolé de t'avoir froissé, ce n'était pas du tout dans mes intentions. Simplement, ma philosophie particulière en matière de macros ou de fichiers de style est d'abord de chercher si ce que je veux réaliser ne peut pas l'être avec ce qui existe déjà. Je pense que les extensions faites par des spécialistes (pas comme moi) sont en principe bien faites (je veux dire que, p.ex., il n'y a pas d'effets de bord plus ou moins imprévisibles). Et je préfère bien sûr ce qui me permet de paramétrer à ma guise.
Pour ntheorem lui-même, que j'utilise depuis au bas mot une douzaine d'année, la collaboration avec framed n'a été introduite que dans la dernière version. Pour la documentation en anglais... je ne connais pas beaucoup de documentations en français, sauf pour des extensions écrites par des Français. Et encore, vu les auteurs, elle aurait pu être en allemand...

pour les exemples de boîtes, honnêtement, je n'en utilise pas moi-même. Je me suis fié à la documentation de framed (qui ne comporte pas d'exemple). Mais dès que j'ai un peu de temps pour expérimenter, je vérifierai.

B.A.
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 995
Inscription : vendredi 12 juin 2009, 22:35
Statut actuel : Enseignant
Localisation : Chambéry
Contact :

Re: Boite avec titre

Message non lu par un bon petit »

balf a écrit :@ un bon petit : je suis désolé de t'avoir froissé, ce n'était pas du tout dans mes intentions.
Froissé est un bien grand mot. Je n'étais quand même pas au bord du suicide !
balf a écrit :Simplement, ma philosophie particulière en matière de macros ou de fichiers de style est d'abord de chercher si ce que je veux réaliser ne peut pas l'être avec ce qui existe déjà.
Moi aussi, sauf quand je sais que j'ai un truc dans mes répertoires qui répond à la question.
balf a écrit :Je pense que les extensions faites par des spécialistes (pas comme moi) sont en principe bien faites (je veux dire que, p.ex., il n'y a pas d'effets de bord plus ou moins imprévisibles).
Et bien, tu penses mal. Les "spécialistes" font beaucoup d'erreurs. Il n'y a qu'à voir les fréquentes mises à jour disponibles sur le CTAN pour s'apercevoir que les "spécialistes" commettent des bugs et provoquent des incompatibilités entre packages (ce qui est tout à fait normal d'ailleurs, personne ne peut coder un truc parfait, à part Knuth, et même lui ne l'a pas fait du premier coup, et de loin).
balf a écrit :Et je préfère bien sûr ce qui me permet de paramétrer à ma guise.
Dans ce cas, rien de tel qu'un code que tu as fait toi même.
balf a écrit :Pour ntheorem lui-même, que j'utilise depuis au bas mot une douzaine d'année, la collaboration avec framed n'a été introduite que dans la dernière version. Pour la documentation en anglais... je ne connais pas beaucoup de documentations en français, sauf pour des extensions écrites par des Français. Et encore, vu les auteurs, elle aurait pu être en allemand...

pour les exemples de boîtes, honnêtement, je n'en utilise pas moi-même. Je me suis fié à la documentation de framed (qui ne comporte pas d'exemple). Mais dès que j'ai un peu de temps pour expérimenter, je vérifierai.
Oui, je te laisse cette tâche ingrate. Je trouve les documentations de ntheorem et frames très peu pédagogiques en ce sens qu'elle ne comportent pas d'exemples. C'est à croire que certains auteurs de doc se drappent le plus possible dans la théorie et le verbiage, quitte à être particulièrement chiants (alors que lire une doc "normale" est déjà très pénible en soi). Je ne comprendrai jamais cette attitude...

Bref, connaissant framed, j'ai préféré le package "boites", écrit par un français qui parle français (oui, il y a des français qui écrivent des docs uniquement en anglais, les fous, ils ne se rendent même pas compte de ce qu'il font). De plus, le code est abondamment commenté en français et qu'il est très instructif de lire !
Programmer en TeX, TeXpérimental
albenic

Re: Boite avec titre

Message non lu par albenic »

Bonjour,

Je me sens mal à l'aise, je ne voulais absolument pas créé une polémique.

Pour répondre en vrac.

Il est évident que je ne veux pas réinventer le fil à couper le beurre, je cherche juste à présenter mes théorèmes et autres définitions selon mon goût.

Pour l'historique, le voici.

En premier lieu, j'ai trouvé une solution via tikz mais celui-ci était en conflit avec framed dont j'avais besoin en parallèle. Donc je l'ai lâché.

Ensuite je suis tombé sur fancybox que j'ai aussi laissé tombé mais je ne sais plus pourquoi (de mémoire soit un conflit soit un problème dans les arrondis des boites)

Mes recherches sur le web m'ont ramené vers pstricks avec un code que je comprenais !!! C'était inespéré. Je l'ai donc adopté et modifié pour arriver à ce que je voulais.

Maintenant sur ntheorem, il est très complet, très paramétrable mais il me semble qu'il ne permet pas de faire des onglets comme je voudrais. Le code étant hors de mes capacités, je ne me sens pas de le modifier pour obtenir ce que je veux.

Voila l'historique. Il se peut que j'ai réinventé la roue mais honnêtement j'ai pas mal cherché sur le web et je n'ai rien trouvé de tout de suite exploitable à mon goût.

Cordialement, Benoît.

PS : Et pour ces problèmes de saut de lignes, vous n'auriez pas une idée ? ;-)
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 995
Inscription : vendredi 12 juin 2009, 22:35
Statut actuel : Enseignant
Localisation : Chambéry
Contact :

Re: Boite avec titre

Message non lu par un bon petit »

albenic a écrit :PS : Et pour ces problèmes de saut de lignes, vous n'auriez pas une idée ? ;-)
Je n'ai pas très bien compris ce que tu entends par "saut de lignes".

Peux tu me dire ce qui ne se fait pas concernant ces "sauts de lignes" dans le code que je t'ai donné ?
Programmer en TeX, TeXpérimental
Francky
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 681
Inscription : dimanche 11 avril 2010, 14:01

Re: Boite avec titre

Message non lu par Francky »

Pour tes problèmes d'arrondis avec fancybox, il s'agit peut-être du visionneur pdf en cause.
J'ai déjà vu ça, et je garde fancybox pour mes boîtes arrondies, je choisis un bon lecteur - imprimeur. (evince (léger) et reader (lourd))

Tu pourrais réessayer, c'est simple.
Linux Mint | TeXLive - TexMaker - asymptote | Python3 & C - Geany - Project Euler - SPOJ
Entia non sunt multiplicanda praeter necessitatem
albenic

Re: Boite avec titre

Message non lu par albenic »

Bonjour,
un bon petit a écrit : Je n'ai pas très bien compris ce que tu entends par "saut de lignes".
En fait dans les exemples que tu m'as fourni, tu fais des sauts de lignes

Code : Tout sélectionner


Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.

ton environnement les gère bien. Si dans ma commande, je fais la même chose, j'ai une erreur à la compilation. Je suis obligé de faire :

Code : Tout sélectionner

Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.\\
Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.\\
Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla.\\
pour que cela fonctionne.
un bon petit a écrit :Peux tu me dire ce qui ne se fait pas concernant ces "sauts de lignes" dans le code que je t'ai donné ?
Merci pour ce code. Je viens de faire des essais. Il est parfait. Le seul hic c'est que je n'y comprends pas grand-chose...

En fait, le problème de fond est là : je ne sais pas programmer correctement mes commandes et autres environnements. Je bidouille. Pour l'usage que j'en fais cela est suffisant mais je ne suis pas à l'abri de rencontrer un cas plus complexe où ma commande ne fonctionnnera plus car trop simpliste. Existe t-il un livre qui aborde cela ou un tuto sur le web ?

Quoi qu'il en soit merci pour ce code, je fais tacher de le cerner et l'utiliser, Benoît.
albenic

Re: Boite avec titre

Message non lu par albenic »

Bonsoir,
Francky a écrit :Pour tes problèmes d'arrondis avec fancybox, il s'agit peut-être du visionneur pdf en cause.
J'ai déjà vu ça, et je garde fancybox pour mes boîtes arrondies, je choisis un bon lecteur - imprimeur. (evince (léger) et reader (lourd))

Tu pourrais réessayer, c'est simple.
Je suis sous linux et j'utilise evince. En refouillant dans mon code et avec l'expérience de l'essai avec pstricks, j'ai trouvé une solution presque parfaite :

Code : Tout sélectionner

\newcommand{\boite}[2]{%
  \boxput*(-0.9,1){\colorbox{white}{\fbox{#1}}}%
  {\setlength{\fboxsep}{12pt}%
  \cornersize*{2.5mm}%
    \Ovalbox{%
    \begin{minipage}{0.95\linewidth}
    #2%
    \end{minipage}
    }}}


Il faut les packages color et fancybox et cela s'utilise avec la commande :

Code : Tout sélectionner

\boite{titre}{mon texte}
Le seul hic est la jonction du filet supérieur avec la boite contenant le titre.

Je me doute qu'il y a une solution simple mais je cherche encore.
c-top

Re: Boite avec titre

Message non lu par c-top »

un bon petit a écrit :Je hais ces documentations toutes théoriques où il faut se taper la lecture en détail pour commencer à comprendre un peu.
Je rigole :lol: :lol: :lol:
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 995
Inscription : vendredi 12 juin 2009, 22:35
Statut actuel : Enseignant
Localisation : Chambéry
Contact :

Re: Boite avec titre

Message non lu par un bon petit »

c-top a écrit :Je rigole :lol: :lol: :lol:
Puis-je te demander pourquoi ?
Programmer en TeX, TeXpérimental
albenic

Re: Boite avec titre

Message non lu par albenic »

Bonjour,

Le dernier point est tombé (les sauts de ligne sont désormais possible). C'était juste une erreur dans la façon de déclarer la commande. Voici le code qui va bien pour ceux que cela intéresse (ce code utilise juste pstricks :

Code : Tout sélectionner

\newpsstyle{boiteinterieure}{cornersize=absolute,linearc=0.2,fillstyle=solid,fillcolor=white,framesep=5mm}
\newpsstyle{boitetitre}{fillstyle=solid,fillcolor=white}
\newsavebox\boitetitre
\newsavebox\boiteint
\newlength{\hauteurboitetitre}%
\newlength{\hauteurboiteint}%
\newlength{\ymaxboitetitre}%
\newlength{\hauteurmax}%
\newlength{\xminboitetitre}%
\newcommand{\boite}[2]{%
 \sbox\boiteint{\psframebox[style=boiteinterieure]{%
 \begin{minipage}{0.95\linewidth}%
  #2%
 \end{minipage}}}%
 \sbox\boitetitre{\psframebox[style=boitetitre]{%
  #1%
  }}%
  \settoheight{\hauteurboitetitre}{\usebox{\boitetitre}}%
  \settoheight{\hauteurboiteint}{\usebox{\boiteint}}%
  \setlength{\ymaxboitetitre}{\hauteurboiteint+\hauteurboitetitre*\real{0.5}}%
  \setlength{\hauteurmax}{\ymaxboitetitre+3mm}%
  \setlength{\xminboitetitre}{20pt}%
 \begin{pspicture}(0,-\ht\boiteint)(\wd\boiteint,\hauteurmax)%\psgrid
   \rput[l](0,0){\usebox\boiteint}
   \rput[tl](\xminboitetitre,\ymaxboitetitre){\usebox\boitetitre}
 \end{pspicture}%
}
On l'utilise comme suit :

Code : Tout sélectionner

\boite{Définition}{Contenu de la définition}
Benoît.
un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 995
Inscription : vendredi 12 juin 2009, 22:35
Statut actuel : Enseignant
Localisation : Chambéry
Contact :

Re: Boite avec titre

Message non lu par un bon petit »

albenic a écrit :Voici le code qui va bien pour ceux que cela intéresse (ce code utilise juste pstricks
Si je peux me permettre, ce code utilise aussi le package calc me semble t-il. De plus, le code est inutilement compliqué.
Je propose cette solution un peu plus simple :

Code : Tout sélectionner

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{pstricks}
\makeatletter
\def\body@sep{5pt}% marge entre texte et traits de la boite principale
\def\body@width{0.8pt}% épaisseur des traits de la boite principale
\def\title@sep{3pt}% marge entre titre et traits de la boite de titre
\def\title@width{0.5pt}% épaisseur des traits de la boite de titre
\def\title@bottom{3pt}% espace vertical entre boite de titre et texte principal
\newcommand\boite[2]{%
	\medbreak\noindent
	\setbox\z@\vtop{\hsize\dimexpr\linewidth-\body@sep*2-\body@width*2
			\setbox\@ne\hbox{#1}%
			\xdef\title@midht{\the\dimexpr(\dp\@ne+\ht\@ne)/2+\title@sep+\title@width}%
			\vskip\dimexpr\title@midht-\body@sep+\title@bottom\relax
			\parindent\z@% pas d'indentation dans la boite principale
			#2}%
	\pspicture(0,-\dimexpr\ht\z@+\dp\z@+\body@sep+\body@width)(0,\title@midht)%
		\rput[tl](0,0){\psframebox[cornersize=absolute,linearc=0.2,fillstyle=solid,fillcolor=white,framesep=\body@sep,linewidth=\body@width]{\box\z@}}%
		\rput[l](20pt,0){\psframebox[fillstyle=solid,fillcolor=white,framesep=\title@sep,linewidth=\title@width]{#1}}%
	\endpspicture
	\vskip\dimexpr\body@sep+\body@width\relax}
\makeatother
\begin{document}
Du texte au dessus. Du texte au dessus. Du texte au dessus. Du texte au dessus. Du texte au dessus. Du texte au dessus. Du texte au dessus. Du texte au dessus. Du texte au dessus. Du texte au dessus. Du texte au dessus. Du texte au dessus. Du texte au dessus. Du texte au dessus. Du texte au dessus.
\boite{Définition}{Contenu de la boite principale. Contenu de la boite principale. Contenu de la boite principale. Contenu de la boite principale. Contenu de la boite principale. Contenu de la boite principale. Contenu de la boite principale. Contenu de la boite principale. Contenu de la boite principale. Contenu de la boite principale.}
Du  texte au dessous. Du  texte au dessous. Du  texte au dessous. Du  texte au dessous. Du  texte au dessous. Du  texte au dessous. Du  texte au dessous. Du  texte au dessous. Du  texte au dessous. Du  texte au dessous. Du  texte au dessous. Du  texte au dessous. Du  texte au dessous. Du  texte au dessous.
\end{document}
Programmer en TeX, TeXpérimental
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message