Différences

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

Lien vers cette vue comparative

Prochaine révision
Révision précédente
composition:texte:paragraphes:encadrer_du_texte [2002/02/01 10:02] – créée benjamin3_composition:texte:paragraphes:encadrer_du_texte [2022/06/30 19:22] (Version actuelle) – [L'extension awesomebox] dbitouze
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}{Encadrer un texte avec \cmd{fbox}+ 
-\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.+\fbox{% 
 +\begin{minipage}{0.75\textwidth} 
 +   Je souhaite encadrer tout un 
 +   paragraphe, sur plusieurs lignes. 
 +\end{minipage} 
 +}
  
-\begin{file}{fmpage.sty+\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{noexemple}{Exemple d'utilisation de l'environnement \env{fmpage}} +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'' :
-\begin{fmpage}{3cm} +
-   Texte à encadrer dans une boîte ne dépassant pas 3 +
-   centimètres de large. +
-\end{fmpage} +
-\end{noexemple}+
  
-\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}, +Je souhaite \fbox{encadrer} un mot 
-etc.+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. 
 +
 +</code> 
 +</WRAP> 
 +<WRAP column 30ex> 
 +<latexdoc> 
 +\documentclass{article} 
 +\usepackage[width=9cm,height=7cm]{geometry} 
 +\pagestyle{empty} 
 +\begin{document} 
 + 
 +Je souhaite \fbox{encadrer} un 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 pasmais 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 pasmais 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 moderneavec 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 : 
 + 
 +<WRAP column 40ex> 
 +<code latex> 
 +\usepackage{fancybox}
  
-\begin{noexemple}{Utilisation des environnements du package \pack{fancybox}} 
 \shadowbox{Texte ombré.} \shadowbox{Texte ombré.}
 \doublebox{Texte doublement encadré.} \doublebox{Texte doublement encadré.}
-\ovalbox{Texte dans un cadre aux coins arrondis.} +\ovalbox{Texte dans un cadre 
-\end{noexemple}+  aux coins arrondis.
 +</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{hhdisponible sur +\doublebox{Texte doublement encadré.
-\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} : +
-\begin{file}{eclbkbox.sty} +
-% eclbkbox.sty by Hideki Isozaki, 1992 +
-% Date: May  28, 1993+
  
-\newbox\bk@bxb +L'extension [[ctanpkg>awesomebox]] ne dessine pas de cadres à proprement parler, 
-\newbox\bk@bxa +mais peut mettre en valeur un bloc de texte avec une icône et un filet coloré:
-\newif\if@bkcont +
-\newif\ifbkcount +
-\newcount\bk@lcnt+
  
-\def\breakboxskip{2pt+<WRAP column 45ex> 
-\def\breakboxparindent{1.8em}+<code latex> 
 +\documentclass{article
 +  \usepackage{awesomebox}
  
-\def\breakbox{\vskip\breakboxskip\relax +\begin{document}
-\setbox\bk@bxb\vbox\bgroup +
-\advance\linewidth -2\fboxrule +
-\advance\linewidth -2\fboxsep +
-\hsize\linewidth\@parboxrestore +
-\parindent\breakboxparindent\relax}+
  
-\@tempdimb: amount of vertical skip +\notebox{Notez bien ceci !
-% between the first line (\bk@bxa) and the rest (\bk@bxb) +\smallskip
-\def\bk@split{+
-\@tempdimb\ht\bk@bxb % height of original box +
-\advance\@tempdimb\dp\bk@bxb +
-\setbox\bk@bxa\vsplit\bk@bxb to\z@ % split it +
-\setbox\bk@bxa\vbox{\unvbox\bk@bxa}% recover height & depth of \bk@bxa +
-\setbox\@tempboxa\vbox{\copy\bk@bxa\copy\bk@bxb}% naive concatenation +
-\advance\@tempdimb-\ht\@tempboxa +
-\advance\@tempdimb-\dp\@tempboxa}% gap between two boxes+
  
-\@tempdima: height of the first line (\bk@bxa) + fboxsep +\importantbox{Lisez bien ce paragraphe 
-\def\bk@addfsepht{% +avant de passer à la suite de ce document 
-    \setbox\bk@bxa\vbox{\vskip\fboxsep\box\bk@bxa}}+sinon, vous risquez de perdre votre temps 
 +en considérations inutiles !} 
 +\end{document} 
 +</code> 
 +</WRAP> 
 +<WRAP column 30ex> 
 +<latexdoc> 
 +\documentclass{article} 
 +  \usepackage[width=9cm,height=7cm]{geometry} 
 +  \usepackage{awesomebox} 
 +  \pagestyle{empty}
  
-\def\bk@addskipht{+\begin{document}
-    \setbox\bk@bxa\vbox{\vskip\@tempdimb\box\bk@bxa}}+
  
-\@tempdima: depth of the first line (\bk@bxa) + fboxsep +\notebox{Notez bien ceci !} 
-\def\bk@addfsepdp{% +\smallskip
-     \@tempdima\dp\bk@bxa +
-     \advance\@tempdima\fboxsep +
-     \dp\bk@bxa\@tempdima}+
  
-\@tempdima: depth of the first line (\bk@bxa) + vertical skip +\importantbox{Lisez bien ce paragraphe 
-\def\bk@addskipdp{% +avant de passer à la suite de ce document 
-     \@tempdima\dp\bk@bxa +sinon, vous risquez de perdre votre temps 
-     \advance\@tempdima\@tempdimb +en considérations inutiles !} 
-     \dp\bk@bxa\@tempdima}+\smallskip
  
-\def\bk@line{+\end{document
-    \hbox to \linewidth{\ifbkcount\smash{\llap{\the\bk@lcnt\ }}\fi +</latexdoc> 
-    \vrule \@width\fboxrule\hskip\fboxsep +</WRAP> 
-    \box\bk@bxa\hfil +<WRAP clear/>
-    \hskip\fboxsep\vrule \@width\fboxrule}}+
  
-\def\endbreakbox{\egroup +[[ctanpkg>awesomebox|Awesomebox]] a cinq dessins de base
-\ifhmode\par\fi{\noindent\bk@lcnt\@ne +utilisables sous forme d'une commande ou d'un environnement:
-\@bkconttrue\baselineskip\z@\lineskiplimit\z@ +
-\lineskip\z@\vfuzz\maxdimen +
-\bk@split\bk@addfsepht\bk@addskipdp +
-\ifvoid\bk@bxb      % Only one line +
-\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 +^ Pour...   ^ Commande  ^ Environnement  ^ Exemple 
-\end{file}+| 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>  | 
 +| 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> 
 +| 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> 
 +| 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> 
 +| 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>  |
  
-L'encadrement du texte est obtenu par l'environnement \env{breakbox}.+<note tip> 
 +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 />
  
-\cmd{bkcounttrue: les lignes sont numérotées.+<code latex> 
 +\documentclass{article} 
 +  \usepackage{awesomebox}
  
-\cmd{bkcountfalse: elles ne le sont pas (défaut).+\begin{document}
  
-On peut emboîter des environnements \env{breakbox}.+\awesomebox[white][\abShortLine]{0pt}{\faGrinBeam[regular]}{pink}{Ceci va vous rendre heureux\dots} 
 + 
 +\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)
 +}}
  
3_composition/texte/paragraphes/encadrer_du_texte.1012557779.txt.gz · Dernière modification : 2002/02/01 10:02 de benjamin
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0