====== Comment encadrer du texte? ======

===== Avec la commande de base \fbox =====

La commande ''\fbox'' met son argument dans une boîte (comme ''\parbox'') puis dessine un cadre autour :

<WRAP column 40ex>
<code latex>
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}
}
</code>
</WRAP>
<WRAP column 30ex>
<latexdoc>
\documentclass{article}
\usepackage[width=9cm,height=7cm]{geometry}
\usepackage{microtype}
\pagestyle{empty}
\begin{document}

\fbox{%
\begin{minipage}{0.75\textwidth}
   Je souhaite encadrer tout un
   paragraphe, sur plusieurs lignes.
\end{minipage}
}

\end{document}
</latexdoc>
</WRAP>
<WRAP clear/>

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'' :

<WRAP column 40ex>
<code latex>
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.
}
</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 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 :

<WRAP column 40ex>
<code latex>
\usepackage{fancybox}

\shadowbox{Texte ombré.}
\doublebox{Texte doublement encadré.}
\ovalbox{Texte dans un cadre
  aux coins arrondis.}
</code>
</WRAP>
<WRAP column 30ex>
<latexdoc>
\documentclass{article}
\usepackage[width=9cm,height=7cm]{geometry}
\usepackage{fancybox}
\pagestyle{empty}
\begin{document}

\shadowbox{Texte ombré.}
\smallskip

\doublebox{Texte doublement encadré.}
\smallskip

\ovalbox{Texte dans un cadre
  aux coins arrondis.}
\end{document}
</latexdoc>
</WRAP>
<WRAP clear />

==== L'extension awesomebox ====

L'extension [[ctanpkg>awesomebox]] ne dessine pas de cadres à proprement parler,
mais peut mettre en valeur un bloc de texte avec une icône et un filet coloré:

<WRAP column 45ex>
<code latex>
\documentclass{article}
  \usepackage{awesomebox}

\begin{document}

\notebox{Notez bien ceci !}
\smallskip

\importantbox{Lisez bien ce paragraphe
avant de passer à la suite de ce document
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}

\begin{document}

\notebox{Notez bien ceci !}
\smallskip

\importantbox{Lisez bien ce paragraphe
avant de passer à la suite de ce document
sinon, vous risquez de perdre votre temps
en considérations inutiles !}
\smallskip

\end{document}
</latexdoc>
</WRAP>
<WRAP clear/>

[[ctanpkg>awesomebox|Awesomebox]] a cinq dessins de base,
utilisables sous forme d'une commande ou d'un environnement:

^ Pour...   ^ Commande  ^ Environnement  ^ Exemple  ^
| 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>  |

<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 />

<code latex>
\documentclass{article}
  \usepackage{awesomebox}

\begin{document}

\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)
}}
