[Résolu] [Tikz] Ecrire du texte à la verticale

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.

[Résolu] [Tikz] Ecrire du texte à la verticale

Messagepar benc » Mardi 12 Août 2008, 10:47

Bonjour,

Je cherche désespérément à écrire un texte à la verticale dans un dessin réalisé avec tikz. Je ne veux pas un texte incliné à 90° mais je voudrais conserver les caractères dans le sens normal et les placer les uns en dessous des autres.

Merci de m'indiquer comment faire.

Ben.
Dernière édition par benc le Mercredi 13 Août 2008, 13:28, édité 1 fois.
benc
Utilisateur
 
Messages: 5
Inscription: Mardi 12 Août 2008, 10:43
Statut actuel: Post-bac | Doctorat

Publicité

Re: [Tikz] Ecrire du texte à la verticale

Messagepar masiuxus » Mardi 12 Août 2008, 12:03

Une petite idée en passant, sans que je l'aie testé :

Code: Tout sélectionner
\begin{tikzpicture}
\node {
\begin{minipage}{'largeur d'un caractère'}
phrase à écrire
\end{minipage}
};
\end{tikzpicture}
masiuxus
 

Re: [Tikz] Ecrire du texte à la verticale

Messagepar François D. » Mardi 12 Août 2008, 12:26

Dans le genre à peine plus rustique : superposer l'image et le résultat de ce que donne ceci :

Code: Tout sélectionner
\begin{obeylines}
t
e
x
t
e

v
e
r
t
i
c
a
l
\end{obeylines}
François D.
Téra-utilisateur
 
Messages: 1370
Inscription: Dimanche 30 Juillet 2006, 09:04
Localisation: Alsace
Statut actuel: Actif et salarié | Enseignant

Re: [Tikz] Ecrire du texte à la verticale

Messagepar benc » Mardi 12 Août 2008, 13:24

Merci pour vos réponses,

Je me suis inspiré de l'idée de masiuxus, a savoir :

Code: Tout sélectionner
\node at (1.5,3) [text width = 1pt] {\fontsize{10pt}{8pt}\selectfont9\\x\\0\\0\\0\\};


Sauf que l'espace entre deux caractères dépend beaucoup du caractère lui même, ici par exemple les espaces sont tous égaux sauf celui avant le 'x'.
Mais bon, c'est suffisant pour ce que je veux faire.

Merci encore
benc
Utilisateur
 
Messages: 5
Inscription: Mardi 12 Août 2008, 10:43
Statut actuel: Post-bac | Doctorat

Re: [Tikz] Ecrire du texte à la verticale

Messagepar pg » Mardi 12 Août 2008, 14:00

Voici une autre solution qui permet d'avoir un espacement uniforme :

vertical_text.png
vertical_text.png (1.08 Kio) Vu 6352 fois


Code: Tout sélectionner
\documentclass{article}
\usepackage{tikz}

\def\y#1{\rotatebox[origin=b]{90}{#1}}
\makeatletter
\def\x#1{\@tfor \@tempa := #1 \do {\kern2pt\y{\@tempa}}}
\makeatother
\def\verticaltext#1{\rotatebox[origin=c]{-90}{\x{#1}}}

\begin{document}

\begin{tikzpicture}
\node at (0,0) {\verticaltext{9x000.M}};
\end{tikzpicture}

\end{document}
pg
Modérateur
 
Messages: 2583
Inscription: Jeudi 14 Juin 2007, 23:31

Re: [Tikz] Ecrire du texte à la verticale

Messagepar MB » Mardi 12 Août 2008, 14:14

Belle solution de pg encore une fois. :D
Sinon, elle est documentée où la commande \@tfor ?
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6781
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Re: [Tikz] Ecrire du texte à la verticale

Messagepar pg » Mardi 12 Août 2008, 14:25

Je l'ai trouvée en cherchant dans les archives de comp.text.tex : Repeating command in LaTeX.
pg
Modérateur
 
Messages: 2583
Inscription: Jeudi 14 Juin 2007, 23:31

Re: [Tikz] Ecrire du texte à la verticale

Messagepar MB » Mardi 12 Août 2008, 14:29

D'accord. Mais ya rien dans TeX by Topic par exemple sur cette commande.
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6781
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Re: [Tikz] Ecrire du texte à la verticale

Messagepar pg » Mercredi 13 Août 2008, 08:54

Il faudrait plutôt un LaTeX by Topic. En fait, la commande est succinctement décrite dans le fichier source2e.pdf disponible dans le fil sur la documentation. L'explication de la commande est page 35 tandis que le code source est page 37.
pg
Modérateur
 
Messages: 2583
Inscription: Jeudi 14 Juin 2007, 23:31

Re: [Tikz] Ecrire du texte à la verticale

Messagepar benc » Mercredi 13 Août 2008, 10:58

Je n'ai que deux mots à dire :

1/ MERCI
2/ PARFAIT
benc
Utilisateur
 
Messages: 5
Inscription: Mardi 12 Août 2008, 10:43
Statut actuel: Post-bac | Doctorat

Re: [Tikz] Ecrire du texte à la verticale

Messagepar MB » Mercredi 13 Août 2008, 17:56

pg a écrit:Il faudrait plutôt un LaTeX by Topic.


Ah, je pensais que c'était du TeX en effet. Merci.
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6781
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Re: [Résolu] [Tikz] Ecrire du texte à la verticale

Messagepar MB » Mercredi 13 Août 2008, 20:24

Il semble que la commande \@tfor ne détecte pas très bien les espacements et produise un petit décalage horizontal pour certaines lettres (par exemple le g là). Voir l'image suivante provenant de :

Code: Tout sélectionner
\verticaltext{abcd ef.gh}


tfor_1.png
tfor_1.png (889 Octets) Vu 6252 fois


Par ailleurs, j'ai testé le code suivant (plus simple) qui aligne correctement toutes les lettres mais produit des espaces un peu plus importants entre chaque lettre. Par contre, toujours par de gestion des espaces bien sûr.

Code: Tout sélectionner
\makeatletter
\def\verticaltext#1{\@tfor \@tempa := #1 \do {\kern0pt\hbox{\@tempa}}}
\makeatother
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6781
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Re: [Résolu] [Tikz] Ecrire du texte à la verticale

Messagepar pg » Mercredi 13 Août 2008, 22:32

Le décalage du g est dû au fait que j'ai utilisé par erreur \rotatebox[origin=b] au lieu de \rotatebox[origin=B].

Sinon, concernant les espaces, on peut changer localement la signification de l'espace (ce qui fait un code plus long à taper) :

Code: Tout sélectionner
\documentclass{article}
\usepackage{graphicx}

\def\singleletter#1{\rotatebox[origin=B]{90}{#1}}
\makeatletter
\def\parseletters#1{\@tfor \@tempa := #1 \do {\kern2pt\singleletter{\@tempa}}}
\makeatother
\def\verticaltext#1{\rotatebox[origin=c]{-90}{\parseletters{#1}}}

\begin{document}

\begingroup\catcode` =\active\relax\edef {\vbox to 0.33em{}}
\verticaltext{abcd ef.gh}
\endgroup

\end{document}


Alternativement, si on tape les espaces avec des ~, on peut obtenir facilement la gestion automatique des espaces directement à l'intérieur de \verticaltext :

Code: Tout sélectionner
\documentclass{article}
\usepackage{graphicx}

\def\singleletter#1{\rotatebox[origin=B]{90}{#1}}
\makeatletter
\def\parseletters#1{\@tfor \@tempa := #1 \do {\kern2pt\singleletter{\@tempa}}}
\makeatother
\def\verticaltext#1{\rotatebox[origin=c]{-90}{\catcode`\~=13\def~{\vbox to 0.33em{}}\parseletters{#1}}}

\begin{document}

\verticaltext{abcd~ef.gh}

\end{document}


texte_vertical.png
texte_vertical.png (1.44 Kio) Vu 6229 fois
pg
Modérateur
 
Messages: 2583
Inscription: Jeudi 14 Juin 2007, 23:31


Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Bing [Bot], Grapeshot [Crawler], Proximic [Spider] et 14 invités