Encadrement d'un tabular par des pointillés

Tout ce qui concerne le langage LaTeX et ses variantes. Ce langage est supporté sur le forum via les balises tex.

Modérateur : gdm_tex

Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
pzorba75
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 201
Inscription : mardi 20 août 2013, 04:50
Localisation : Paris

[Résolu] Encadrement d'un tabular par des pointillés

Message par pzorba75 »

Bonjour à tous,
pour encadrer des algorithmes dans des sujets de mathématiques, les auteurs des livres des nouveaux programmes ont retenu des lignes en pointillés de couleur rouge.
Avec le code ci-dessous, je fais une présentation identique à celle des livres que j'utilise, sauf que je ne parviens à trouver d'exemples sur google où les lignes horizontales et verticales du cadre sont en pointillés et en rouge. J'ai écarté l'idée du package tcolorbox, beaucoup trop vaste pour ce besoin élémentaire.
MA question aux utilisateurs expérimentés des tableaux sous Latex / Commet faire en restant simple?

Code : Tout sélectionner

\begin{center}
\setlength{\fboxrule}{0pt}
\begin{tabular}{|l|}
\hline
Choisir un nombre positif\tabularnewline
Ajouter $\dfrac{1}{2}$\tabularnewline
Mettre au carré\tabularnewline
Soustraire le cube du nombre initial\tabularnewline
\hline
\end{tabular}
\end{center}
Bonne journée à tous.
Pierre
Dernière modification par pzorba75 le jeudi 24 octobre 2019, 17:00, modifié 1 fois.
On se lasse de tout, excepté d'apprendre.
Virgile

un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 792
Inscription : vendredi 12 juin 2009, 22:35
Localisation : Chambéry

Re: Encadrement d'un tabular par des pointillés

Message par un bon petit »

Pour continuer sur la lancée d'hier, je continue, comme à mon habitude, de ré-inventer la roue en TeX pur. Au moins, ça fait progresser et comprendre même si c'est plus lent à concevoir. Bien évidemment, il y a des solutions plus simples (en apparence seulement) en faisant appel à des packages plus ou moins obèses qui rendent la tâche facile.

Je propose une macro \fdash courte pour encadrer en pointillés rouges un contenu arbitraire :
dasedfbox.png

Code : Tout sélectionner

\documentclass{article}
\usepackage{amsmath,xcolor}
\newdimen\fdashwidth    \fdashwidth  = 0.8pt % épaisseur traits
\newdimen\fdashlength   \fdashlength = 0.5mm % longueur des pointillés et séparation entre pointillés
\newdimen\fdashsep      \fdashsep    = 3pt % séparateur entre contenu et traits
\def\fdash#1{%
	\leavevmode\begingroup
	\setbox0\hbox{#1}%
	\ifdim\fdashsep>0pt
		\setbox0\hbox{\vrule width0pt height\dimexpr\ht0+\fdashsep depth\dimexpr\dp0+\fdashsep\kern\fdashsep\unhbox0 \kern\fdashsep}%
	\fi
	\edef\hdash{\hbox to\the\wd0{\noexpand\color{red}\xleaders\hbox{\vrule height\fdashwidth width\fdashlength \kern\fdashlength}\hfil}}%
	\edef\vdash{\vbox to\the\dimexpr\ht0+\dp0{\noexpand\color{red}\xleaders\vbox{\hrule height\fdashlength width\fdashwidth \kern\fdashlength}\vfil}}%
	\hbox{%
		\vdash
		\vtop{\vbox{\offinterlineskip\hdash\hbox{\unhbox0 }\hdash}}%
		\vdash}%
	\endgroup
}
\begin{document}
Un algorithme :
\begin{center}
	\fdash{\begin{tabular}{l}
		Choisir un nombre positif\\
		Ajouter $\dfrac{1}{2}$\\
		Mettre au carré\\
		Soustraire le cube du nombre initial\\
		\end{tabular}}
\end{center}
\end{document}
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.

pzorba75
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 201
Inscription : mardi 20 août 2013, 04:50
Localisation : Paris

Re: Encadrement d'un tabular par des pointillés

Message par pzorba75 »

C'est magique quand on voit la solution, qui passe quand même bien au-dessus de mes cheveux grisonnants. Merci beaucoup.
On se lasse de tout, excepté d'apprendre.
Virgile

un bon petit
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 792
Inscription : vendredi 12 juin 2009, 22:35
Localisation : Chambéry

Re: Encadrement d'un tabular par des pointillés

Message par un bon petit »

pzorba75 a écrit :C'est magique quand on voit la solution, qui passe quand même bien au-dessus de mes cheveux grisonnants. Merci beaucoup.
C'est toujours les mêmes primitives de boites : \setbox, \hbox, \box, \copy, \unhbox, \vrule, \hrule, \vbox, \vtop
Et toujours les mêmes primitives de remplissages ; \kern, \hfil, \vfil, \[x]leaders

Ce n'est pourtant pas bien compliqué de les étudier une bonne fois pour toutes et d'apprendre à les manipuler. On réinvente la roue (meilleur moyen pour se former à un langage), mais au moins, on progresse et on comprend ce que l'on fait.

Ceci dit, l'embêtant avec \xleaders, c'est que le remplissage commence et finit par du blanc et donc les coins de l'encadrement sont « vides », ce qui est à mon avis très moche. En forçant le remplissage à commencer et finir par un trait plein, les coins sont tracés ce qui me semble plus esthétique.
[code]\def\fdash#1{%
\leavevmode\begingroup
\setbox0\hbox{#1}%
\def\hdash{\vrule height\fdashwidth width\fdashlength\relax}%
\def\vdash{\hrule height\fdashlength width\fdashwidth\relax}%
\def\dashblank{\kern\fdashlength}%
\ifdim\fdashsep>0pt
\setbox0\hbox{\vrule width0pt height\dimexpr\ht0+\fdashsep depth\dimexpr\dp0+\fdashsep\kern\fdashsep\unhbox0 \kern\fdashsep}%
\fi
\edef\hdash{\hbox to\the\wd0{\noexpand\color{red}\hdash\kern.5\fdashlength\xleaders\hbox{\hdash\dashblank}\hfil\hdash}}%
\edef\vdash{\vbox to\the\dimexpr\ht0+\dp0+2\fdashwidth{\noexpand\color{red}\vdash\kern.5\fdashlength\xleaders\vbox{\vdash\dashblank}\vfil\vdash}}%
\hbox{%
\vdash
\vtop{\vbox{\offinterlineskip\hdash\hbox{\unhbox0 }\hdash}}%
\vdash}%
\endgroup
}[/code]

balf
Utilisateur chevronné
Utilisateur chevronné
Messages : 3924
Inscription : mercredi 02 janvier 2008, 23:18

Re: Encadrement d'un tabular par des pointillés

Message par balf »

Il existe déjà l'extension dashbox, qui n'a pas prévu la couleur, mais il n'est pas bien compliqué d'en mettre:

Code : Tout sélectionner

    \documentclass{article}
    \usepackage{amsmath, nccmath}
    \usepackage[svgnames]{xcolor} 
    \usepackage{dashbox} 
 
    \begin{document}

    \begin{center}\setlength{\fboxrule}{1pt}
     \color{Coral} 
      \dashbox{\color{black}
      \begin{tabular}{l}
          Choisir un nombre positif\\
          Ajouter $\mfrac{1}{2}$\\
          Mettre au carré\\
          Soustraire le cube du nombre initial\\
          \end{tabular}}
    \end{center}

    \end{document} 
B. A.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.

pzorba75
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 201
Inscription : mardi 20 août 2013, 04:50
Localisation : Paris

Re: Encadrement d'un tabular par des pointillés

Message par pzorba75 »

Bonne solution avec dashbox. Pas facile à rertrouver avec google + "encadrement boite en pointillés latex".
Je conserve la solution également.
Merci pour l'aide apportée.
Pierre
On se lasse de tout, excepté d'apprendre.
Virgile