Soulignement crochet horizontal

Tout ce qui concerne l'utilisation ou l'installation de LaTeX.

Modérateur: gdm_tex

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

Soulignement crochet horizontal

Messagepar SB » Vendredi 26 Juillet 2019, 07:44

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
SB
Kilo-utilisateur
 
Messages: 238
Inscription: Lundi 07 Juillet 2008, 07:15
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: soulignement crochet horizontal

Messagepar balf » Vendredi 26 Juillet 2019, 09:49

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.
balf
Zetta-utilisateur
 
Messages: 3858
Inscription: Mercredi 02 Janvier 2008, 23:18
Statut actuel: Actif et salarié | Maître de conférence

Re: soulignement crochet horizontal

Messagepar evariste_G » Vendredi 26 Juillet 2019, 13:12

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
Capture.PNG (5.28 Kio) Vu 535 fois


On peut modifier les espaces à notre guise.
Mathématiques, LaTeX et Python : http://www.mathweb.fr
Cours particuliers de maths et de NSI : https://cours-particuliers-bordeaux.fr/
evariste_G
Téra-utilisateur
 
Messages: 1433
Inscription: Vendredi 19 Décembre 2008, 19:13
Localisation: Bordeaux
Statut actuel: Actif et salarié | Enseignant

Re: soulignement crochet horizontal

Messagepar balf » Vendredi 26 Juillet 2019, 16:03

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.
Fichiers joints
Crochet.png
Crochet.png (7.66 Kio) Vu 529 fois
balf
Zetta-utilisateur
 
Messages: 3858
Inscription: Mercredi 02 Janvier 2008, 23:18
Statut actuel: Actif et salarié | Maître de conférence

Re: soulignement crochet horizontal

Messagepar un bon petit » Vendredi 26 Juillet 2019, 18:09

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}
Fichiers joints
capture.png
Dernière édition par un bon petit le Vendredi 26 Juillet 2019, 18:31, édité 1 fois.
un bon petit
Giga-utilisateur
 
Messages: 748
Inscription: Vendredi 12 Juin 2009, 21:35
Localisation: Chambéry
Statut actuel: Actif et salarié | Enseignant

Re: soulignement crochet horizontal

Messagepar balf » Vendredi 26 Juillet 2019, 18:28

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.
balf
Zetta-utilisateur
 
Messages: 3858
Inscription: Mercredi 02 Janvier 2008, 23:18
Statut actuel: Actif et salarié | Maître de conférence

Re: soulignement crochet horizontal

Messagepar un bon petit » Vendredi 26 Juillet 2019, 18:33

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.
un bon petit
Giga-utilisateur
 
Messages: 748
Inscription: Vendredi 12 Juin 2009, 21:35
Localisation: Chambéry
Statut actuel: Actif et salarié | Enseignant

Re: soulignement crochet horizontal

Messagepar gigiair » Vendredi 26 Juillet 2019, 21:19

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
leroitoto.png (1.95 Kio) Vu 498 fois
JJR.
LaTeXien migrateur.
gigiair
Exa-utilisateur
 
Messages: 2447
Inscription: Samedi 08 Juillet 2006, 19:56
Localisation: Saint Bonnet Elvert
Statut actuel: Actif et salarié

Re: soulignement crochet horizontal

Messagepar un bon petit » Vendredi 26 Juillet 2019, 21:38

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...
un bon petit
Giga-utilisateur
 
Messages: 748
Inscription: Vendredi 12 Juin 2009, 21:35
Localisation: Chambéry
Statut actuel: Actif et salarié | Enseignant

Re: soulignement crochet horizontal

Messagepar balf » Vendredi 26 Juillet 2019, 21:54

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.
balf
Zetta-utilisateur
 
Messages: 3858
Inscription: Mercredi 02 Janvier 2008, 23:18
Statut actuel: Actif et salarié | Maître de conférence

Re: soulignement crochet horizontal

Messagepar un bon petit » Vendredi 26 Juillet 2019, 22:22

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
Screenshot.png (9.52 Kio) Vu 481 fois


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/
un bon petit
Giga-utilisateur
 
Messages: 748
Inscription: Vendredi 12 Juin 2009, 21:35
Localisation: Chambéry
Statut actuel: Actif et salarié | Enseignant

Re: soulignement crochet horizontal

Messagepar gigiair » Vendredi 26 Juillet 2019, 22:27

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
leroitoto-2.png (2.98 Kio) Vu 437 fois


Ma macro avec l'exemple Ubp. Remarquez qu'avec ma macro l'espacement des caractères n'est pas modifié.
leroitoto-3.png
leroitoto-3.png (4.43 Kio) Vu 437 fois
Dernière édition par gigiair le Samedi 27 Juillet 2019, 16:58, édité 4 fois.
JJR.
LaTeXien migrateur.
gigiair
Exa-utilisateur
 
Messages: 2447
Inscription: Samedi 08 Juillet 2006, 19:56
Localisation: Saint Bonnet Elvert
Statut actuel: Actif et salarié

Re: soulignement crochet horizontal

Messagepar SB » Samedi 27 Juillet 2019, 08:20

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.
SB
Kilo-utilisateur
 
Messages: 238
Inscription: Lundi 07 Juillet 2008, 07:15
Statut actuel: Actif et salarié | Enseignant


Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Ahrefs [Bot], gigiair, Google [Bot], Google Adsense [Bot] et 7 invités