Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
composition:texte:paragraphes:encadrer_du_texte [2002/03/17 18:13] – benjamin | 3_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 ?} | + | ====== |
- | \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 '' |
- | \begin{noexemple} | + | |
- | \fbox{ | + | <WRAP column 40ex> |
- | \begin{minipage}{0.7\textwidth} | + | <code latex> |
- | Texte... | + | Je souhaite \fbox{encadrer} un mot |
+ | dans un paragraphe. | ||
+ | </ | ||
+ | </ | ||
+ | <WRAP column 30ex> | ||
+ | < | ||
+ | \documentclass{article} | ||
+ | \usepackage[width=9cm, | ||
+ | \pagestyle{empty} | ||
+ | \begin{document} | ||
+ | Je souhaite | ||
+ | \end{document} | ||
+ | </ | ||
+ | </ | ||
+ | <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 '' | ||
+ | |||
+ | <WRAP column 40ex> | ||
+ | <code latex> | ||
+ | \fbox{% | ||
+ | \begin{minipage}{0.75\textwidth} | ||
+ | Je souhaite encadrer tout un | ||
+ | | ||
\end{minipage} | \end{minipage} | ||
} | } | ||
- | \end{noexemple} | + | </ |
+ | </ | ||
+ | <WRAP column 30ex> | ||
+ | < | ||
+ | \documentclass{article} | ||
+ | \usepackage[width=9cm, | ||
+ | \usepackage{microtype} | ||
+ | \pagestyle{empty} | ||
+ | \begin{document} | ||
- | \reponse On peut également se définir son propre environnement. Voire | + | \fbox{% |
- | le source~\ref{fmpage}. | + | \begin{minipage}{0.75\textwidth} |
+ | Je souhaite encadrer tout un | ||
+ | | ||
+ | \end{minipage} | ||
+ | } | ||
- | \begin{file}{fmpage.sty}{fmpage} | + | \end{document} |
- | \newsavebox{\fmbox} | + | </ |
- | \newenvironment{fmpage}[1] | + | </ |
- | | + | <WRAP clear/> |
- | {\end{minipage}\end{lrbox}\fbox{\usebox{\fmbox}}} | + | |
- | \end{file} | + | |
- | \begin{inexemple}{Utilisation de l'environnement définit | + | La commande |
- | \input{faq.fmpage.sty} | + | |
- | \begin{fmpage}{3cm} | + | <WRAP column 40ex> |
- | Texte à encadrer dans une boîte | + | <code latex> |
- | dépassant | + | Je souhaite |
- | \end{fmpage} | + | dans un paragraphe. |
- | \end{inexemple} | + | |
+ | {% Cette paire d' | ||
+ | % que la modification n' | ||
+ | % qu'un effet local. | ||
+ | | ||
+ | Je souhaite | ||
+ | dans un paragraphe. | ||
+ | } | ||
+ | |||
+ | {% | ||
+ | | ||
+ | Je souhaite \fbox{encadrer} un mot | ||
+ | dans un paragraphe. | ||
+ | } | ||
+ | </ | ||
+ | </ | ||
+ | <WRAP column 30ex> | ||
+ | < | ||
+ | \documentclass{article} | ||
+ | \usepackage[width=9cm, | ||
+ | \pagestyle{empty} | ||
+ | \begin{document} | ||
+ | |||
+ | Je souhaite \fbox{encadrer} un mot | ||
+ | dans un paragraphe. | ||
+ | |||
+ | {% Cette paire d' | ||
+ | % que la modification n' | ||
+ | % qu'un effet local. | ||
+ | | ||
+ | Je souhaite \fbox{encadrer} un mot | ||
+ | dans un paragraphe. | ||
+ | } | ||
+ | |||
+ | {% | ||
+ | | ||
+ | Je souhaite \fbox{encadrer} un mot | ||
+ | dans un paragraphe. | ||
+ | } | ||
+ | |||
+ | \end{document} | ||
+ | </ | ||
+ | </ | ||
+ | <WRAP clear/> | ||
+ | |||
+ | ===== Avec l' | ||
+ | |||
+ | 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} | ||
+ | </ | ||
+ | </ | ||
+ | <WRAP column 30ex> | ||
+ | < | ||
+ | \documentclass{article} | ||
+ | \usepackage[width=9cm, | ||
+ | \pagestyle{empty} | ||
+ | \begin{document} | ||
+ | |||
+ | \begin{tabular}{|p{5cm}|} | ||
+ | \hline | ||
+ | On ne dirait | ||
+ | \hline | ||
+ | \end{tabular} | ||
+ | |||
+ | \end{document} | ||
+ | </ | ||
+ | </ | ||
+ | <WRAP clear/> | ||
+ | |||
+ | ===== Exemples avancés avec d' | ||
+ | |||
+ | Les méthodes ci-dessous fournissent des cadres d' | ||
+ | D' | ||
+ | au look plus moderne, avec couleurs et icônes. | ||
+ | |||
+ | Certaines extensions permettent également d' | ||
+ | ou des blocs de texte s' | ||
+ | |||
+ | ==== L' | ||
+ | |||
+ | L' | ||
- | \reponse Il existe également le package \pack{fancybox}, | + | <WRAP column 40ex> |
- | \ctan{macros/ | + | < |
- | des fonctions telles que \cmd{shadowbox}, \cmd{doublebox}, | + | \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} | + | </ |
+ | </ | ||
+ | <WRAP column 30ex> | ||
+ | < | ||
+ | \documentclass{article} | ||
+ | \usepackage[width=9cm, | ||
+ | \usepackage{fancybox} | ||
+ | \pagestyle{empty} | ||
+ | \begin{document} | ||
- | \reponse Le package \pack{boxedminipage} est un vieux style \LaTeX2.09 | + | \shadowbox{Texte ombré.} |
- | disponible sur \ctan{macros/ | + | \smallskip |
- | \reponse Voir également le package \pack{hhflxbox} disponible sur | + | \doublebox{Texte doublement encadré.} |
- | \url{ftp:// | + | \smallskip |
- | \reponse Le package \pack{niceframe} disponible sur | + | \ovalbox{Texte dans un cadre |
- | \ctan{macros/latex/ | + | 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~\ref{eclbkbox}. | + | |
- | (Disponible à \url{ftp:// | + | |
- | \begin{file}{eclbkbox.sty}{eclbkbox} | + | L' |
- | % eclbkbox.sty by Hideki Isozaki, 1992 | + | mais peut mettre en valeur un bloc de texte avec une icône et un filet coloré: |
- | % Date: May 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 | + | </ |
- | \setbox\bk@bxa\vbox{\unvbox\bk@bxa}% recover height & depth of \bk@bxa | + | </ |
- | \setbox\@tempboxa\vbox{\copy\bk@bxa\copy\bk@bxb}% naive concatenation | + | <WRAP column 30ex> |
- | \advance\@tempdimb-\ht\@tempboxa | + | < |
- | \advance\@tempdimb-\dp\@tempboxa}% gap between two boxes | + | \documentclass{article} |
+ | \usepackage[width=9cm, | ||
+ | \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 !} |
- | | + | \smallskip |
- | % \@tempdima: depth of the first line (\bk@bxa) + vertical skip | + | \end{document} |
- | \def\bk@addskipdp{% | + | </ |
- | \@tempdima\dp\bk@bxa | + | </ |
- | \advance\@tempdima\@tempdimb | + | <WRAP clear/> |
- | \dp\bk@bxa\@tempdima} | + | |
- | \def\bk@line{% | + | [[ctanpkg> |
- | \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... |
- | \ifhmode\par\fi{\noindent\bk@lcnt\@ne | + | | Une note | '' |
- | \@bkconttrue\baselineskip\z@\lineskiplimit\z@ | + | | Une suggestion |
- | \lineskip\z@\vfuzz\maxdimen | + | | Un avertissement |
- | \bk@split\bk@addfsepht\bk@addskipdp | + | | Une mise en garde | '' |
- | \ifvoid\bk@bxb | + | | Une remarque importante |
- | \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 | + | |
- | | + | |
- | \ifvoid\bk@bxb | + | |
- | | + | |
- | \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 |
+ | '' | ||
+ | [[ctanpkg> | ||
+ | et/ou après votre bloc de texte: | ||
+ | <WRAP clear /> | ||
- | L' | + | <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} |
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== L' | ||
+ | |||
+ | L' | ||
+ | pour dessiner ses cadres. | ||
+ | Si vous avez l' | ||
+ | qui permet de paramétrer finement l' | ||
+ | structures...). | ||
+ | |||
+ | À cause de ses possibilités de configuration immenses, [[texdoc> | ||
+ | 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' | ||
+ | \end{tcolorbox} | ||
+ | |||
+ | \end{document} | ||
+ | </ | ||
+ | </ | ||
+ | <WRAP column 40ex> | ||
+ | < | ||
+ | \documentclass{article} | ||
+ | \usepackage[width=6cm, | ||
+ | \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' | ||
+ | \end{tcolorbox} | ||
+ | |||
+ | \end{document} | ||
+ | </ | ||
+ | </ | ||
+ | <WRAP clear /> | ||
+ | |||
+ | |||
+ | ==== L' | ||
+ | |||
+ | Pour encadrer un texte pouvant s' | ||
+ | de l' | ||
+ | '' | ||
+ | des environnements qui proposent différentes méthodes d' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * et '' | ||
+ | |||
+ | Ces environnements peuvent tous être modifiés par deux commandes | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | Il est également possible d'emboîter | ||
+ | |||
+ | |||
+ | |||
+ | ==== L' | ||
+ | |||
+ | L' | ||
+ | |||
+ | FIXME Détailler [[ctanpkg> | ||
+ | |||
+ | ==== L' | ||
+ | |||
+ | L' | ||
+ | |||
+ | FIXME Détailler [[ctanpkg> | ||
+ | |||
+ | ==== L' | ||
+ | |||
+ | FIXME Détailler [[ctanpkg> | ||
+ | |||
+ | |||
+ | ===== Avec des environnements | ||
+ | |||
+ | Les extensions présentées ci-dessus sont évidemment bien plus plus puissantes | ||
+ | mais, à titre pédagogique, | ||
+ | pour encadrer des paragraphes de texte : | ||
+ | |||
+ | <file latex fmpage.sty> | ||
+ | \newsavebox{\fmbox} | ||
+ | \newenvironment{fmpage}[1] | ||
+ | {\begin{lrbox}{\fmbox}\begin{minipage}{# | ||
+ | {\end{minipage}\end{lrbox}\fbox{\usebox{\fmbox}}} | ||
+ | </ | ||
+ | |||
+ | Et voici un exemple d' | ||
+ | |||
+ | <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} | ||
+ | </ | ||
+ | </ | ||
+ | <WRAP column 30x> | ||
+ | < | ||
+ | \documentclass{article} | ||
+ | \usepackage[width=6cm, | ||
+ | \pagestyle{empty} | ||
+ | |||
+ | \newsavebox{\fmbox} | ||
+ | \newenvironment{fmpage}[1] | ||
+ | {\begin{lrbox}{\fmbox}\begin{minipage}{# | ||
+ | {\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} | ||
+ | </ | ||
+ | </ | ||
+ | <WRAP clear/> | ||
+ | {{htmlmetatags> | ||
+ | metatag-og: | ||
+ | metatag-og: | ||
+ | }} | ||