J'ai fait une macro comme suit :

Ouvrir dans l'éditeur Overleaf
\newcommand\boite[1]{\fbox{\begin{minipage}{0.96\linewidth}#1\end{minipage}}}

Comment faire pour que la dimension passée à l'environnement minipage (ici 0.96\linewidth) permette d'avoir une boîte encadrée (en tenant compte du fbox) qui fasse exactement la largeur de la page disponible ?

Posée 17 Déc '18, 18:30

ged's gravatar image

ged
5112
Taux d'acceptation : 0%

Modifiée 17 Déc '18, 18:32

denis's gravatar image

denis ♦♦
7.3k1510

@ged Les formules de politesse et les signatures sont à éviter : celle(s) de votre contribution a (ont) été supprimée(s). Et attention ! Les contre-obliques (\) saisies telles quelles dans les contributions ne sont visibles que si elles sont insérées en tant que ⟨code⟩. Pour insérer du ⟨code⟩, notamment des commandes LaTeX, cf. la FAQ Comment mettre en forme ma contribution ?. Merci de corriger votre contribution si cela n'a pas déjà été fait.

(17 Déc '18, 18:33) denis ♦♦ denis's gravatar image

Pourquoi pas \textwidth, au lieu de 0.96\linewidth ? Ou alors voulez-vous aussi inclure la marge ?

(17 Déc '18, 18:40) joseph-tux joseph-tux's gravatar image
1

@joseph-tux La dimension \textwidth (largeur globale de la zone de texte) serait trop grande (pour cause de doubles \fboxsep et \fboxrule) et, même réduite de doubles \fboxsep et \fboxrule, serait trop grande par exemple dans l'item d'une liste où \linewidth, la largeur de la ligne en cours, est strictement inférieure à \textwidth (cf. code actualisé de ma réponse). OK, avec \linewidth, la boîte encadrée n'est pas toujours de même largeur que celle de la page, mais du moins atteint-elle exactement la marge de droite (ce que, je pense, souhaite @ged).

(17 Déc '18, 18:52) denis ♦♦ denis's gravatar image

Pourquoi ne pas utiliser l'extension framed et l'environnement éponyme ? Il a en outre l'avantage d'être compatible avec les changements de page, et peut être personnalisé. Voici deux exemples :

Ouvrir dans l'éditeur Overleaf
\documentclass [a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{lipsum}
\usepackage[showframe]{geometry}%
\usepackage[svgnames]{xcolor} 
\usepackage{framed}
\colorlet{framecolor}{OrangeRed}
\colorlet{shadecolor}{Seashell}
\renewenvironment{shaded*}{%
\def\FrameCommand{\fboxrule=\FrameRule\fboxsep=\FrameSep \fcolorbox{framecolor}{shadecolor}}%
\MakeFramed {\advance\hsize-\width \FrameRestore}}%
{\endMakeFramed}

\begin{document}

Text text text text text text text text text text text text text text text text text text text text. text text text text text

\begin{framed}
\lipsum[1-2]
\end{framed}

\begin{shaded*}
\lipsum[3-4]
\end{shaded*}

\end{document}

alt text

Lien permanent

Publiée 18 Déc '18, 01:21

Bernard's gravatar image

Bernard
4.6k15
Taux d'acceptation : 35%

Modifiée 18 Déc '18, 01:22

Excellente suggestion ! Dans le genre, les packages bclogo et tcolorbox valent aussi le détour.

(18 Déc '18, 03:03) denis ♦♦ denis's gravatar image

Merci! Je ne connais pas bien bclogo, mais framed a l'avantage pour des encadrements simples d'être plus facile à utiliser que tcolorbox.

(18 Déc '18, 03:35) Bernard Bernard's gravatar image

Lorsqu’on indique la longueur \linewidth à l’environnement minipage, c’est la largeur de la minipage qui va être égale à l’empagement. Or la commande \fbox ajoute des espacements autour du matériel encadré : il y a un espacement de largeur \fboxsep de chaque côté de la minipage. L’épaisseur des deux traits verticaux, donnée par la longueur \fboxrule, contribue également au débordement. Il convient donc de retirer deux fois ces deux longueurs à la largeur d’empagement pour obtenir ce qui est souhaité. On peut utiliser le package calc pour faciliter la saisie des calculs.

Il convient aussi de s'assurer que la minipage ne débute pas après un retrait d'alinéa, d'où la commande \noindent.

Ouvrir dans l'éditeur Overleaf
\documentclass{article}
\usepackage{calc}
\usepackage[a4paper,showframe]{geometry}
\usepackage{lipsum}
\newcommand\boite[1]{\noindent\fbox{\begin{minipage}{\linewidth-2\fboxsep-2\fboxrule}#1\end{minipage}}}
\begin{document}
\boite{\lipsum[1]}
\begin{itemize}
\item \lipsum[1] \boite{\lipsum[1]}
\end{itemize}
\end{document}
Lien permanent

Publiée 17 Déc '18, 18:45

denis's gravatar image

denis ♦♦
7.3k1510
Taux d'acceptation : 53%

Modifiée 17 Déc '18, 18:54

Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.