Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
2_composition:texte:paragraphes:encadrer_du_texte [2002/09/30 01:34]
benjamin
2_composition:texte:paragraphes:encadrer_du_texte [2021/02/06 23:23] (Version actuelle)
jejust Ajout de deux exemples pour "tcolorbox". Réorganisation des sections.
Ligne 1: Ligne 1:
-\question{Comment encadrer du texte ?}+====== ​Comment encadrer du texte ? ======
  
-\reponse Une solution consiste à définir un tableau d'une seule +===== Avec la commande de base \fbox =====
-cellule.+
  
-\reponse On peut aussi utiliser ​+La commande ''​\fbox''​ met son argument dans une boîte (comme ''​\parbox''​) puis dessine un cadre autour ​: 
-\begin{noexemple+ 
-\fbox{ +<WRAP column 40ex> 
-\begin{minipage}{0.7\textwidth} +<code latex> 
-   Texte...+Je souhaite \fbox{encadrer} un mot 
 +dans un paragraphe. 
 +</​code>​ 
 +</​WRAP>​ 
 +<WRAP column 30ex> 
 +<​latexdoc>​ 
 +\documentclass{article} 
 +\usepackage[width=9cm,​height=1cm]{geometry} 
 +\pagestyle{empty} 
 +\begin{document
 +Je souhaite ​\fbox{encadrer} un mot dans un paragraphe. 
 +\end{document} 
 +</​latexdoc>​ 
 +</​WRAP>​ 
 +<WRAP clear /> 
 + 
 +Mais attention : tout le texte passé à la commande va se retrouver sur une seule ligne, sans coupure de mot possible ! 
 + 
 +Pour encadrer tout un paragraphe, une solution est de le placer dans un environnement ''​minipage''​ : 
 + 
 +<WRAP column 40ex> 
 +<code latex> 
 +\fbox{% 
 +\begin{minipage}{0.75\textwidth} 
 +   Je souhaite encadrer tout un 
 +   ​paragraphe,​ sur plusieurs lignes.
 \end{minipage} \end{minipage}
 } }
-\end{noexemple}+</​code>​ 
 +</​WRAP>​ 
 +<WRAP column 30ex> 
 +<​latexdoc>​ 
 +\documentclass{article} 
 +\usepackage[width=9cm,​height=7cm]{geometry} 
 +\usepackage{microtype} 
 +\pagestyle{empty} 
 +\begin{document}
  
-\reponse On peut également se définir son propre environnement. Voire +\fbox{% 
-le source~\vref{fmpage}.+\begin{minipage}{0.75\textwidth} 
 +   Je souhaite encadrer tout un 
 +   ​paragraphe,​ sur plusieurs lignes. 
 +\end{minipage} 
 +}
  
-\begin{file}{fmpage.sty}{fmpage+\end{document
-\newsavebox{\fmbox} +</​latexdoc>​ 
-\newenvironment{fmpage}[1] +</​WRAP>​ 
-    ​{\begin{lrbox}{\fmbox}\begin{minipage}{#​1}} +<WRAP clear/>
-    {\end{minipage}\end{lrbox}\fbox{\usebox{\fmbox}}} +
-\end{file}+
  
-\begin{inexemple}{Utilisation de l'environnement définit ​par \fichier{fmpage.sty}} +La commande ​\fbox est soumise à quelques paramètres : par exemple, ​l'épaisseur du trait et l'​espace entre le texte et le trait est défini respectivement ​par les longueurs ''​\fboxrule''​ et ''​\fnboxsep''​ : 
-\input{faq.fmpage.sty+ 
-\begin{fmpage}{3cm+<WRAP column 40ex> 
-   Texte à encadrer dans une boîte ​ne +<code latex> 
-   dépassant ​pas 3 centimètres de large+Je souhaite ​\fbox{encadrer} un mot 
-\end{fmpage+dans un paragraphe. 
-\end{inexemple}+ 
 +{% Cette paire d'​accolades permet 
 + % que la modification n'​ait 
 + % qu'un effet local. 
 + ​\setlength{\fboxrule}{2pt
 + Je souhaite ​\fbox{encadrer} un mot 
 + dans un paragraphe. 
 +
 + 
 +{% 
 + ​\setlength{\fboxsep}{1.5ex} 
 + Je souhaite \fbox{encadrer} un mot 
 + dans un paragraphe. 
 +
 +</​code>​ 
 +</​WRAP>​ 
 +<WRAP column 30ex> 
 +<​latexdoc>​ 
 +\documentclass{article} 
 +\usepackage[width=9cm,​height=7cm]{geometry} 
 +\pagestyle{empty
 +\begin{document} 
 + 
 +Je souhaite \fbox{encadrerun mot 
 +dans un paragraphe. 
 + 
 +{% Cette paire d'​accolades permet 
 + % que la modification n'​ait 
 + % qu'un effet local. 
 + ​\setlength{\fboxrule}{2pt} 
 + Je souhaite \fbox{encadrer} un mot 
 + dans un paragraphe. 
 +
 + 
 +{% 
 + ​\setlength{\fboxsep}{1.5ex} 
 + Je souhaite \fbox{encadrer} un mot 
 + dans un paragraphe. 
 +
 + 
 +\end{document} 
 +</​latexdoc>​ 
 +</​WRAP>​ 
 +<WRAP clear/>​ 
 + 
 +===== Avec l'​environnement tabular ===== 
 + 
 +Avoir du texte encadré revient à avoir un tableaau avec une unique cellule : 
 + 
 +<WRAP column 40ex> 
 +<code latex> 
 +\begin{tabular}{|p{5cm}|} 
 +\hline 
 +On ne dirait pas, mais il s'agit 
 +ici d'un tableau. \\ 
 +\hline 
 +\end{tabular} 
 +</​code>​ 
 +</​WRAP>​ 
 +<WRAP column 30ex> 
 +<​latexdoc>​ 
 +\documentclass{article} 
 +\usepackage[width=9cm,​height=7cm]{geometry} 
 +\pagestyle{empty} 
 +\begin{document} 
 + 
 +\begin{tabular}{|p{5cm}|} 
 +\hline 
 +On ne dirait ​pas, mais il s'agit ici d'un tableau\\ 
 +\hline 
 +\end{tabular} 
 + 
 +\end{document} 
 +</​latexdoc>​ 
 +</​WRAP>​ 
 +<WRAP clear/>​ 
 + 
 +===== Exemples avancés avec d'​autres extensions ===== 
 + 
 +Les méthodes ci-dessous fournissent des cadres d'​apparence très classique. 
 +D'​autres extensions dessinent des cadres adaptés à des documents 
 +au look plus moderne, avec couleurs et icônes. 
 + 
 +Certaines extensions permettent également d'​encadrer des pages entières,​ 
 +ou des blocs de texte s'​étendant sur plusieurs pages. 
 + 
 +==== L'​extension fancybox ==== 
 + 
 +L'​extension [[ctanpkg>​fancybox]] définit des commandes telles que ''​\shadowbox'',​ ''​\doublebox''​ et ''​\ovalbox'',​ qui fonctionnent de la même manière que ''​\fbox''​ ci-dessus :
  
-\reponse Il existe également le package \pack{fancybox},​ disponible sur +<WRAP column 40ex> 
-\ctan{macros/​latex/​contrib/​others/​seminar/​inputs/​},​ qui définit +<​code ​latex> 
-des fonctions telles que \cmd{shadowbox}, \cmd{doublebox},​ \cmd{ovalbox},​ +\usepackage{fancybox}
-etc.+
  
-\begin{noexemple} 
 \shadowbox{Texte ombré.} \shadowbox{Texte ombré.}
 \doublebox{Texte doublement encadré.} \doublebox{Texte doublement encadré.}
 \ovalbox{Texte dans un cadre \ovalbox{Texte dans un cadre
   aux coins arrondis.}   aux coins arrondis.}
-\end{noexemple}+</​code>​ 
 +</​WRAP>​ 
 +<WRAP column 30ex> 
 +<​latexdoc>​ 
 +\documentclass{article} 
 +\usepackage[width=9cm,​height=7cm]{geometry} 
 +\usepackage{fancybox} 
 +\pagestyle{empty} 
 +\begin{document}
  
-\reponse Le package \pack{boxedminipageest un vieux style \LaTeX2.09 +\shadowbox{Texte ombré.
-disponible sur \ctan{macros/​latex209/​contrib/​misc/​}.+\smallskip
  
-\reponse Voir également le package \pack{hhflxboxdisponible sur +\doublebox{Texte doublement encadré.
-\url{ftp://​ftp.fdn.fr/​pub/​not-on-CTAN/​macros/​latex/​contrib/​supported/​hh/​}.+\smallskip
  
-\reponse Le package \pack{niceframedisponible sur +\ovalbox{Texte dans un cadre 
-\ctan{macros/latex/​contrib/supported/​niceframe/​} permet de +  aux coins arrondis.
-définir des cadres pleine page.+\end{document} 
 +</latexdoc>​ 
 +</WRAP> 
 +<WRAP clear />
  
-\reponse Pour encadrer un texte pouvant s'étendre sur plusieurs pages, +==== L'extension awesomebox ====
-il existe le package \pack{eclbkbox} : source~\vref{eclbkbox}. +
-(Disponible à \url{ftp://​ftp.fdn.fr/​pub/​not-on-CTAN/​macros/​latex/​contrib/​other/​eclbkbox/​eclbkbox.sty})+
  
-\begin{file}{eclbkbox.sty}{eclbkbox} +L'​extension [[ctanpkg>​awesomebox]] ne dessine pas de cadres à proprement parler
-% eclbkbox.sty by Hideki Isozaki1992 +mais peut mettre en valeur un bloc de texte avec une icône et un filet coloré:
-% DateMay  28, 1993+
  
-\newbox\bk@bxb +<WRAP column 45ex> 
-\newbox\bk@bxa +<code latex> 
-\newif\if@bkcont +\documentclass{article} 
-\newif\ifbkcount +  \usepackage{awesomebox}
-\newcount\bk@lcnt+
  
-\def\breakboxskip{2pt} +\begin{document}
-\def\breakboxparindent{1.8em}+
  
-\def\breakbox{\vskip\breakboxskip\relax +\notebox{Notez bien ceci!} 
-\setbox\bk@bxb\vbox\bgroup +\smallskip
-\advance\linewidth -2\fboxrule +
-\advance\linewidth -2\fboxsep +
-\hsize\linewidth\@parboxrestore +
-\parindent\breakboxparindent\relax}+
  
-\@tempdimb: amount of vertical skip +\importantbox{Lisez bien ce paragraphe 
-% between the first line (\bk@bxa) and the rest (\bk@bxb) +avant de passer à la suite de ce document 
-\def\bk@split{% +sinon, vous risquez de perdre votre temps 
-\@tempdimb\ht\bk@bxb % height of original box +en considérations inutiles!} 
-\advance\@tempdimb\dp\bk@bxb +\end{document} 
-\setbox\bk@bxa\vsplit\bk@bxb to\z@ % split it +</​code>​ 
-\setbox\bk@bxa\vbox{\unvbox\bk@bxa}% recover height & depth of \bk@bxa +</​WRAP>​ 
-\setbox\@tempboxa\vbox{\copy\bk@bxa\copy\bk@bxb}% naive concatenation +<WRAP column 30ex> 
-\advance\@tempdimb-\ht\@tempboxa +<​latexdoc>​ 
-\advance\@tempdimb-\dp\@tempboxa}% gap between two boxes+\documentclass{article
 +  \usepackage[width=9cm,​height=7cm]{geometry
 +  \usepackage{awesomebox} 
 +  \pagestyle{empty}
  
-\@tempdima: height of the first line (\bk@bxa) + fboxsep +\begin{document}
-\def\bk@addfsepht{+
-    \setbox\bk@bxa\vbox{\vskip\fboxsep\box\bk@bxa}}+
  
-\def\bk@addskipht{% +\notebox{Notez bien ceci!} 
-    \setbox\bk@bxa\vbox{\vskip\@tempdimb\box\bk@bxa}}+\smallskip
  
-\@tempdima: depth of the first line (\bk@bxa) + fboxsep +\importantbox{Lisez bien ce paragraphe 
-\def\bk@addfsepdp{% +avant de passer à la suite de ce document 
-     \@tempdima\dp\bk@bxa +sinon, vous risquez de perdre votre temps 
-     \advance\@tempdima\fboxsep +en considérations inutiles!} 
-     ​\dp\bk@bxa\@tempdima}+\smallskip
  
-\@tempdima: depth of the first line (\bk@bxa) + vertical skip +\end{document} 
-\def\bk@addskipdp{% +</​latexdoc>​ 
-     \@tempdima\dp\bk@bxa +</​WRAP>​ 
-     \advance\@tempdima\@tempdimb +<WRAP clear/>
-     \dp\bk@bxa\@tempdima}+
  
-\def\bk@line{% +[[ctanpkg>​awesomebox|Awesomebox]] a cinq dessins de base, 
-    \hbox to \linewidth{\ifbkcount\smash{\llap{\the\bk@lcnt\ }}\fi +utilisables sous forme d'une commande ou d'un environnement:​
-    \vrule \@width\fboxrule\hskip\fboxsep +
-    \box\bk@bxa\hfil +
-    \hskip\fboxsep\vrule \@width\fboxrule}}+
  
-\def\endbreakbox{\egroup +^ Pour... ​  ^ Commande ​ ^ Environnement ​ ^ Exemple ​ ^ 
-\ifhmode\par\fi{\noindent\bk@lcnt\@ne +| Une note  | ''​\notebox''​ | ''​\begin{noteblock}''​...''​\end{noteblock}'' ​ | <​latexdoc>​\documentclass[6pt]{extarticle}\usepackage{awesomebox}\pagestyle{empty}\begin{document}\notebox{Marcel se couche de bonne heure.}\end{document}</​latexdoc> ​ | 
-\@bkconttrue\baselineskip\z@\lineskiplimit\z@ +| Une suggestion ​ | ''​\tipbox''​ | ''​\begin{tipblock}''​...''​\end{tipblock}'' ​ | <​latexdoc>​\documentclass[6pt]{extarticle}\usepackage{awesomebox}\pagestyle{empty}\begin{document}\tipbox{Marcel se couche de bonne heure.}\end{document}</​latexdoc> ​ | 
-\lineskip\z@\vfuzz\maxdimen +| Un avertissement ​ | ''​\warningbox''​ | ''​\begin{warningblock}''​...''​\end{warningblock}'' ​ | <​latexdoc>​\documentclass[6pt]{extarticle}\usepackage{awesomebox}\pagestyle{empty}\begin{document}\warningbox{Marcel se couche de bonne heure.}\end{document}</​latexdoc> ​ | 
-\bk@split\bk@addfsepht\bk@addskipdp +| Une mise en garde  | ''​\cautionbox''​ | ''​\begin{cautionblock}''​...''​\end{cautionblock}'' ​ | <​latexdoc>​\documentclass[6pt]{extarticle}\usepackage{awesomebox}\pagestyle{empty}\begin{document}\cautionbox{Marcel se couche de bonne heure.}\end{document}</​latexdoc> ​ | 
-\ifvoid\bk@bxb ​     % Only one line +| Une remarque importante ​ | ''​\importantbox''​ | ''​\begin{importantblock}''​...''​\end{importantblock}'' ​ | <​latexdoc>​\documentclass[6pt]{extarticle}\usepackage{awesomebox}\pagestyle{empty}\begin{document}\importantbox{Marcel se couche de bonne heure.}\end{document}</​latexdoc> ​ |
-\def\bk@fstln{\bk@addfsepdp +
-\vbox{\hrule\@height\fboxrule\bk@line\hrule\@height\fboxrule}}% +
-\else               % More than one line +
-\def\bk@fstln{\vbox{\hrule\@height\fboxrule\bk@line}\hfil +
-\advance\bk@lcnt\@ne +
-\loop +
- ​\bk@split\bk@addskipdp\leavevmode +
-\ifvoid\bk@bxb ​     % The last line +
- ​\@bkcontfalse\bk@addfsepdp +
- \vtop{\bk@line\hrule\@height\fboxrule}+
-\else               % 2,...,(n-1) +
- \bk@line +
-\fi +
- \hfil\advance\bk@lcnt\@ne +
-\if@bkcont\repeat}+
-\fi +
-\leavevmode\bk@fstln\par}\vskip\breakboxskip\relax}+
  
-\bkcountfalse +<note tip> 
-\end{file}+Il est également très facile de définir vos propres boîtes avec la commande 
 +''​\awesomebox''​. Les icônes peuvent être choisies parmi celles de l'​extension 
 +[[ctanpkg>​fontawesome5]],​ et vous pouvez mettre des filets horizontaux avant 
 +et/ou après votre bloc de texte: 
 +<WRAP clear />
  
-L'​encadrement du texte est obtenu par l'​environnement ​\env{breakbox}.+<code latex> 
 +\documentclass{article} 
 +  \usepackage{awesomebox}
  
-\cmd{bkcounttrue: les lignes sont numérotées.+\begin{document}
  
-\cmd{bkcountfalse: elles ne le sont pas (défaut).+\awesomebox[white][\abShortLine]{0pt}{\faGrinBeam[regular]}{pink}{Ceci va vous rendre heureux\dots}
  
-On peut emboîter des environnements ​\env{breakbox}.+\end{document} 
 +</​code>​ 
 +</​note>​
  
  
 +==== L'​extension tcolorbox ====
 +
 +L'​extension [[ctanpkg>​tcolorbox]] utilise [[ctanpkg>​tikz|TikZ/​PGF]]
 +pour dessiner ses cadres.
 +Si vous avez l'​habitude de Ti//k//Z, vous apprécierez la syntaxe clefs-valeurs
 +qui permet de paramétrer finement l'​apparence des cadres (couleurs, formes,
 +structures...).
 +
 +À cause de ses possibilités de configuration immenses, [[texdoc>​tcolorbox|sa documentation]]
 +fait plus de 500 pages (en anglais).
 +Mais les deux exemples ci-dessous montrent qu'il n'est vraiment pas compliqué
 +de dessiner des cadres déjà adaptés à pas mal de circonstances,​
 +et les nombreuses illustrations de la documentation devraient vous aider à aller plus loin:
 +
 +<WRAP column 50ex>
 +<code latex>
 +\documentclass{article}
 +  \usepackage{tcolorbox}
 +
 +\begin{document}
 +
 +\begin{tcolorbox}
 +Le cadre par défaut
 +\end{tcolorbox}
 +\smallskip
 +
 +\begin{tcolorbox}[colback=red!5!white,​
 +                  colframe=red!75!black,​
 +                  title=Cadre sexy
 +                 ]
 +Un autre cadre \textbf{plus coloré}, séparé
 +en deux parties, et portant un titre.
 +\tcblower
 +Demain, \textit{j'​enlève le bas}.
 +\end{tcolorbox}
 +
 +\end{document}
 +</​code>​
 +</​WRAP>​
 +<WRAP column 40ex>
 +<​latexdoc>​
 +\documentclass{article}
 +  \usepackage[width=6cm,​height=6cm]{geometry}
 +  \usepackage{microtype}
 +  \usepackage[french]{babel}
 +  \usepackage{tcolorbox}
 +  \pagestyle{empty}
 +
 +\begin{document}
 +
 +\begin{tcolorbox}
 +Le cadre par défaut
 +\end{tcolorbox}
 +\smallskip
 +
 +\begin{tcolorbox}[colback=red!5!white,​
 +                  colframe=red!75!black,​
 +                  title=Cadre sexy
 +                 ]
 +Un autre cadre \textbf{plus coloré}, séparé
 +en deux parties, et portant un titre.
 +\tcblower
 +Demain, \textit{j'​enlève le bas}.
 +\end{tcolorbox}
 +
 +\end{document}
 +</​latexdoc>​
 +</​WRAP>​
 +<WRAP clear />
 +
 +
 +==== L'​extension boites ====
 +
 +Pour encadrer un texte pouvant s'​étendre sur plusieurs pages, on peut utiliser l'​environnement ''​breakbox''​
 +de l'​extension [[ctanpkg>​boites]]. Cette extension définit également, par le biais du fichier
 +''​boites_exemples.sty''​ (à charger car [[ctanpkg>​boites]] ne le précharge pas),
 +des environnements qui proposent différentes méthodes d'​encadrement :
 +  * ''​boiteepaisseavecuntitre''​ ;
 +  * ''​boitenumeroteeavecunedoublebarre''​ ;
 +  * ''​boiteavecunelignequiondulesurlecote''​ ;
 +  * et ''​boitecoloriee''​.
 +
 +Ces environnements peuvent tous être modifiés par deux commandes ​  :
 +  * ''​bkcounttrue''​ qui numérote les lignes de ces boîtes ;
 +  * ''​bkcountfalse''​ qui ne les numérote plus (option par défaut).
 +
 +Il est également possible d'​emboîter ces environnements.
 +
 +
 +
 +==== L'​extension niceframe ====
 +
 +L'​extension [[ctanpkg>​niceframe]] permet de définir des cadres pleine page.
 +
 +FIXME Détailler [[ctanpkg>​nieframe]].
 +
 +==== L'​extension boxedminipage ====
 +
 +L'​extension [[ctanpkg>​boxedminipage]] correspond à un vieux style <​latex>​\LaTeX</​latex>​ 2.09 qui a été actualisé.
 +
 +FIXME Détailler [[ctanpkg>​boxedminipage]].
 +
 +==== L'​extension bclogo ====
 +
 +FIXME Détailler [[ctanpkg>​bclogo]].
 +
 +
 +===== Avec des environnements « faits maison » =====
 +
 +Les extensions présentées ci-dessus sont évidemment bien plus plus puissantes
 +mais, à titre pédagogique,​ voici un exemple d'​environnement « fait main »
 +pour encadrer des paragraphes de texte :
 +
 +<file latex fmpage.sty>​
 +\newsavebox{\fmbox}
 +\newenvironment{fmpage}[1]
 +    {\begin{lrbox}{\fmbox}\begin{minipage}{#​1}}
 +    {\end{minipage}\end{lrbox}\fbox{\usebox{\fmbox}}}
 +</​file>​
 +
 +Et voici un exemple d'​utilisation de ce fichier :
 +
 +<WRAP column 40ex>
 +<code latex>
 +\input{fmpage.sty}
 +
 +\begin{fmpage}{3cm}
 +   Texte à encadrer dans une boîte
 +   ne dépassant pas 3 centimètres
 +   de large.
 +\end{fmpage}
 +</​code>​
 +</​WRAP>​
 +<WRAP column 30x>
 +<​latexdoc>​
 +\documentclass{article}
 +\usepackage[width=6cm,​height=7cm]{geometry}
 +\pagestyle{empty}
 +
 +\newsavebox{\fmbox}
 +\newenvironment{fmpage}[1]
 +    {\begin{lrbox}{\fmbox}\begin{minipage}{#​1}}
 +    {\end{minipage}\end{lrbox}\fbox{\usebox{\fmbox}}}
 +
 +\begin{document}
 +
 +\begin{fmpage}{3cm}
 +   Texte à encadrer dans une boîte
 +   ne dépassant pas 3 centimètres
 +   de large.
 +\end{fmpage}
 +
 +\end{document}
 +</​latexdoc>​
 +</​WRAP>​
 +<WRAP clear/>
  
 +{{htmlmetatags>​metatag-keywords=(LaTeX,​entourer du texte,​mettre un cadre,​dessiner un cadre,​dessiner des filets)
 +metatag-og:​title=(Comment encadrer du texte)
 +metatag-og:​site_name=(FAQ LaTeX francophone)
 +}}
2_composition/texte/paragraphes/encadrer_du_texte.1033342443.txt.gz · Dernière modification: 2002/09/30 01:34 par benjamin
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0