Soulignement crochet horizontal

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.
SB
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 243
Inscription : lundi 07 juillet 2008, 08:15

Soulignement crochet horizontal

Message par SB »

Bonjour,

je souhaiterais savoir comment on peut "souligner" une lettre, un chiffre (ou un mot) avec un crochet horizontal, comme dans les formulaires à compléter.

Merci pour l'aide que vous pourrez m'apporter,

SB

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

Re: soulignement crochet horizontal

Message par balf »

Il y a plusieurs possibilités. Ce serait pour du texte, une formule mathématique ? Cela tiendrait sur une seule ligne, ou plusieurs ? Un exemple de situation d'utilisation serait bienvenu !

B. A.

evariste_G
Utilisateur chevronné
Utilisateur chevronné
Messages : 1450
Inscription : vendredi 19 décembre 2008, 19:13
Localisation : Bordeaux

Re: soulignement crochet horizontal

Message par evariste_G »

Il y a sans doute moins "brutal", mais avec TiKZ :

Code : Tout sélectionner

\documentclass[a4paper]{article}
\usepackage{tikz}
\usetikzlibrary{calc}

\newcommand{\unders}[1]{%
\tikz[baseline=-0.25em]{\node[inner xsep=0pt, inner ysep=2pt] (a) {#1};
\draw ($(a.south west)+(0,3pt)$)--(a.south west)--(a.south east)--($(a.south east)+(0,3pt)$);}}

\begin{document}
Ceci est \unders{un simple essai} avec TiKZ.

\end{document}
qui donne :
Capture.PNG
On peut modifier les espaces à notre guise.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Mathématiques, LaTeX et Python : http://www.mathweb.fr

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

Re: soulignement crochet horizontal

Message par balf »

Sams aller jusqu'à sortir l'artillerie lourde, l'extension mathtools fournit de quoi faire:

Code : Tout sélectionner

\documentclass[a4paper]{article}
\usepackage{mathtools}
\newcommand*{\souscrochet}[1]{\ensuremath{\underbracket[0.4pt]{\text{#1}}}}

\begin{document}.

Le \souscrochet{formidable} (au sens étymologique) capitaine Crochet ; o)

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

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

Re: soulignement crochet horizontal

Message par un bon petit »

Mais pourquoi charger un package de plusieurs dizaines de milliers de lignes (tikz) ou de plus de 1500 lignes (mathtools) pour faire un truc qui est la base même de TeX et qui ne demande que quelques primitives ? Je sais bien que ma réponse ne sera pas retenue puisque la mode actuelle absurde (en laTeX et autres langages de programmation) et de charger des librairies absolument monumentales (qui elles-mêmes chargent d'autres librairies et ainsi de suite, c'est flippant) pour faire des trucs simples.

Code : Tout sélectionner

\documentclass{article}
\def\ub#1{%
	\leavevmode\hbox{%
		\setbox0\hbox{#1}\dp0 0pt
		\vrule height.5ex width.4pt depth.33333ex \kern-.4pt
		\vtop{\hbox{\kern.15em \box0\kern.15em}\kern.33333ex \hrule}%
		\kern-.4pt \vrule height.5ex width.4pt depth.33333ex \kern-.4pt
	}%
}
\begin{document}
Un \ub{mot} avec crochet horizontal\par
Nom : \ub K\ub n\ub u\ub t\ub h
\end{document}
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par un bon petit le vendredi 26 juillet 2019, 19:31, modifié 1 fois.

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

Re: soulignement crochet horizontal

Message par balf »

un bon petit a écrit :Mais pourquoi charger un package de plusieurs dizaines de milliers de lignes (tikz) ou de plus de 1500 lignes (mathtools) pour faire un truc qui est la base même de TeX et qui ne demande que quelques primitives ? Je sais bien que ma réponse ne sera pas retenue puisque la mode actuelle absurde (en laTeX et autres langages de programmation) et de charger des librairies absolument monumentales (qui elles-mêmes chargent d'autres librairies et ainsi de suite, c'est flippant) pour faire des trucs simples.
Je suis d'accord sur le principe·, mais en pratique, mathtools est déjà chargé, à cause des compléments particulièrement utiles qu'il apporte à amsmath., de sorte que, de mon point de vue, on ne charge rien de plus.

B. A.

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

Re: soulignement crochet horizontal

Message par un bon petit »

balf a écrit :Je suis d'accord sur le principe·, mais en pratique, mathtools est déjà chargé, à cause des compléments particulièrement utiles qu'il apporte à amsmath., de sorte que, de mon point de vue, on ne charge rien de plus.
Bien sûr, tu as raison, quoique cela suppose que amsmath soit chargé, ce qui doit être fréquent pour les utilisateurs d'un forum comme celui-là.

J'ajouterais pour finir que le soulignement par mathtools ne permet pas, à ma connaissance, de personnalisation tandis que la méthode avec les primitives te permet d'ajuster les réglures aussi finement que tu le souhaites, autant en position qu'en épaisseur.

gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2572
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: soulignement crochet horizontal

Message par gigiair »

Je propose une solution qui utilise le package picture et l'environnement picture
Le package picture me paraît bien adapté à ce genre de problème. Il permet de construire des dessins non nécessairement triviaux et consomme peu de ressources.
La solution que je propose est hautement paramétrable. Je ne la juge pas meilleure que les autres, c'est à chacun de voir ce qui lui convient.

Code : Tout sélectionner

\documentclass{article}

\usepackage[calc]{picture}
\begin{document}


 \newcommand\souscr[1]{%
   \begin{picture}(\widthof{#1},\heightof{#1})%
     \put (0,0){\makebox (0,0)[lb]{#1}}%
     \put (0,-\fboxsep*\real{.5}){\line (1,0){\widthof{#1}}}%
     \put (0,-\fboxsep*\real{.5}){\line (0,1){(\heightof{#1}+\fboxsep)*\real{.5}}}
     \put (\widthof{#1},-\fboxsep*\real{.5}){\line (0,1){(\heightof{#1}+\fboxsep)*\real{.5}}}
   \end{picture}}


 Toto \souscr{le roi} des totos

\end{document}

leroitoto.png
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
JJR.
LaTeXien migrateur.

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

Re: soulignement crochet horizontal

Message par un bon petit »

gigiair a écrit :Je propose une solution qui utilise le package picture et l'environnement picture
Le package picture me paraît bien adapté à ce genre de problème. Il permet de construire des dessins non nécessairement triviaux et consomme peu de ressources.
La solution que je propose est hautement paramétrable. Je ne la juge pas meilleure que les autres, c'est à chacun de voir ce qui lui convient.
Il y a un bug de non alignement sur la ligne de base si les caractères ont une profondeur. Essayez \souscr{le poids} et vous verrez...

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

Re: soulignement crochet horizontal

Message par balf »

un bon petit a écrit : J'ajouterais pour finir que le soulignement par mathtools ne permet pas, à ma connaissance, de personnalisation tandis que la méthode avec les primitives te permet d'ajuster les réglures aussi finement que tu le souhaites, autant en position qu'en épaisseur.
Ce n'est pas tout à fait exact : \underbracket peut accepter deux arguments optionnels: l'un pour l'épaisseur des traits (que j'utilise) et un second pour la longueur des lignes verticales aux deux extrémités. Il n'y a rien pour la distance verticale à laquelle est placé ce crochet, mais il serait extrêmement simple de rajouter cette possibilité dans le code que j'ai mitonné, encore que, je suppose, rajouter un simple \strut devrait la plupart du temps suffire.

B. A.

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

Re: soulignement crochet horizontal

Message par un bon petit »

balf a écrit :Ce n'est pas tout à fait exact : \underbracket peut accepter deux arguments optionnels: l'un pour l'épaisseur des traits (que j'utilise) et un second pour la longueur des lignes verticales aux deux extrémités. Il n'y a rien pour la distance verticale à laquelle est placé ce crochet, mais il serait extrêmement simple de rajouter cette possibilité dans le code que j'ai mitonné, encore que, je suppose, rajouter un simple \strut devrait la plupart du temps suffire.
J'ai été lire le code de \underbracket avant de répondre et j'ai bien vu que \MT_underbracket_II:w a 2 arguments optionnels. J'ai même réussi à comprendre quelles étaient leurs buts !

Mais les possibilités de personnalisations sont extrêmement restreintes, même si évidemment, on peut toujours les étendre en modifiant le code. Par exemple, les lignes ne sont pas toujours à la même hauteur et dépendent des profondeur des caractères, voir le résultat de \souscrochet{p}\souscrochet{a}\souscrochet{S}
Screenshot.png
Ensuite, les réglures verticales ne se superposent pas entre 2 caractères adjacents, leurs épaisseurs s'ajoutent et cela est moche.

Enfin, on ne peut pas décider où se situe le trait horizontale de soulignement : à une distance constante de la ligne de base ou bien (comme c'est le cas) à une distance constante du bas du caractère.

Je ne veux pas promouvoir ma solution, mais plutôt défendre l'idée qu'en apprenant les bases du langage TeX avant d'apprendre à utiliser toute une flopée de packages de haut niveau, on peut souvent se mitonner des solutions très performantes et hautement personnalisables.

Enfin, ceci sera mon dernier mot sur ce fil -- certains seront contents --, je citerai Nikita Tonsky :
Et les dépendances ? On en parle ? Les développeurs utilisent souvent des packages de solutions complètes pour résoudre les plus simples des problèmes, sans considérer leur coût. Et ces dépendances amènent d’autres dépendances. On finit avec un arbre entre histoire d’horreur (OMG, tellement énorme, et source de conflits) et comédie (il n’y a aucune raison d’inclure ça, et pourtant c’est là).
J'invite ceux qui ne connaissent pas cet article à le lire, même s'il est un peu long : https://blog.romainfallet.fr/desenchantement-logiciel/
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.

gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2572
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: soulignement crochet horizontal

Message par gigiair »

un bon petit a écrit :
gigiair a écrit :Je propose une solution qui utilise le package picture et l'environnement picture
Le package picture me paraît bien adapté à ce genre de problème. Il permet de construire des dessins non nécessairement triviaux et consomme peu de ressources.
La solution que je propose est hautement paramétrable. Je ne la juge pas meilleure que les autres, c'est à chacun de voir ce qui lui convient.
Il y a un bug de non alignement sur la ligne de base si les caractères ont une profondeur. Essayez \souscr{le poids} et vous verrez...
Exact, merci de la remarque. J'avoue ne pas trop maîtriser les boîtes. Les autres solutions proposées vont très bien. Je me suis inspiré de la documentation du package picture.

J'ai rectifié la macro

Code : Tout sélectionner

 \newcommand\souscr[1]{%
   \begin{picture}(\widthof{#1},\heightof{#1})%
     \put (0,0pt-\depthof{#1}){\makebox (0,0)[lb]{#1}}%
     \put (0,-\fboxsep){\line (1,0){\widthof{#1}}}%
     \put (0,-\fboxsep){\line (0,1){.5ex}}
     \put (\widthof{#1},-\fboxsep){\line (0,1){.5ex}}
   \end{picture}}
 
leroitoto-2.png
Ma macro avec l'exemple Ubp. Remarquez qu'avec ma macro l'espacement des caractères n'est pas modifié.
leroitoto-3.png
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par gigiair le samedi 27 juillet 2019, 17:58, modifié 4 fois.
JJR.
LaTeXien migrateur.

SB
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 243
Inscription : lundi 07 juillet 2008, 08:15

Re: soulignement crochet horizontal

Message par SB »

Bonjour,

je n'ai pas tout testé, là j'ai utilisé la solution d'un bon petit (dont j'ai repris la lecture de son magnifique livre).

Merci à tous en tout cas.