J'ai appris à récupérer les coordonnées d'un nœud TikZ déterminé graphiquement : cela m'a servir à les afficher au sein de la figure elle-même.

Ouvrir dans l'éditeur Overleaf
\documentclass{standalone}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}[remember picture]
% Les axes
%% Abscisses
\draw[->] (-1, 0) -- (14, 0) ;
%% Ordonnées
\draw[->] (0, -1) -- (0, 2) ;
% La figure
\draw (0,0) .. controls (6,1) and (9,1) ..
    node[midway] (n2) {\Huge .} (12,0);
\pgfpointanchor{n2}{center}
\pgfgetlastxy{\macrox}{\macroy}
\pgfmathsetmacro\macrox{\macrox/1cm}
\pgfmathsetmacro\macroy{\macroy/1cm}
\draw[dotted] (\macrox, 0) node [below] {\macrox} -- (n2) -- (0, \macroy) node [left] {\macroy} ;
\end{tikzpicture}

\end{document}

Admettons que je veuille citer ces coordonnées dans le corps du texte. Si j'écris, en dehors de l'environnement tikzpicture, l'abscisse du point est \macrox, j'obtiens évidemment :

Ouvrir dans l'éditeur Overleaf
! Undefined control sequence.
l.20 L'abscisse est \macrox
                            .

Comment utiliser ces valeurs dans le corps du texte ?

Posée 02 Oct '17, 17:30

Pathe's gravatar image

Pathe ♦♦
7.4k28196245
Taux d'acceptation : 55%

fermé 05 Oct '17, 01:19

Quel est le problème de la réponse que j'ai donnée au question précédente ?!

(02 Oct '17, 18:02) touhami touhami's gravatar image

Votre réponse est très bien, mais elle ne fonctionne qu'au sein de l'environnement tikzpicture. Là, c'est dans le corps du texte que je cherche à me servir des valeurs obtenues.

(03 Oct '17, 15:50) Pathe ♦♦ Pathe's gravatar image

Dans le deuxième ECM vous pouvez noter que j'ai tapé \macrox juste avant \end{document}. En effet c'est pour ça que j'ai utilisé \xdef\macrox{\macrox} dans la définition de \getxy.

(03 Oct '17, 21:02) touhami touhami's gravatar image

Je n'avais pas vu non plus le deuxième exemple de @touhami, donc ma réponse n'est pas utile puisque c'est la même qui a déjà été donnée.

(03 Oct '17, 22:52) Nikopol Nikopol's gravatar image

@touhami : je n'avais pas vu. Mille excuses. Je pense ajouter un commentaire mettant l'ajout de xdef en valeur, dans le premier fil. Et supprimer celui-ci : qu'en dites-vous ? Et @Nikopol ?

(04 Oct '17, 23:51) Pathe ♦♦ Pathe's gravatar image

@Pathe il n'a pas besoin de s'excuser.

(05 Oct '17, 00:02) touhami touhami's gravatar image

@pathe, idem, j'ai déjà proposé de supprimer ma réponse qui est la même que celle qui à été fait par @touhami (je ne l'avais pas lu désolé) dans le fil précédent. Donc effectivement mettre en valeur la réponse de @touhami et supprimer ce fil me parait bien.

(05 Oct '17, 00:08) Nikopol Nikopol's gravatar image
Affichage de 5 parmi 7 Afficher 2 commentaire(s) en plus

La question a été fermée pour la raison suivante « Question doublon » par Pathe 05 Oct '17, 01:19


On pourrait mettre un\globaldevant \pgfgetlastxymais on aurait, les valeurs de \macrox et \macrox en point, ce qui n'est pas souhaité il me semble. On peut donc définir de façon globale deux macros, qui vont stocker ces coordonnées e, utilisant \xdef. \xdefest équivalent à \global\edef. \global pour que la portée de ces macros soit valable dans tout le document et \edef pour pour que \macroxsoit développée.

Ouvrir dans l'éditeur Overleaf
\documentclass{article}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}[remember picture]
% Les axes
%% Abscisses
\draw[->] (-1, 0) -- (14, 0) ;
%% Ordonnées
\draw[->] (0, -1) -- (0, 2) ;
% La figure
\draw (0,0) .. controls (6,1) and (9,1) ..
    node[midway] (n2) {\Huge .} (12,0);
\pgfpointanchor{n2}{center}
\pgfgetlastxy{\macrox}{\macroy}
\pgfmathsetmacro\macrox{\macrox/1cm}
\pgfmathsetmacro\macroy{\macroy/1cm}
\draw[dotted] (\macrox, 0) node [below] {\macrox} -- (n2) -- (0, \macroy) node [left] {\macroy} ;
\xdef\coordx{\macrox}
\xdef\coordy{\macroy}
\end{tikzpicture}
les coordonn\'ees du sommet sont (\coordx;\coordy)
\end{document}

PS: Si vos figures sont inclues dans le document, il vous faut inclure le code tikz et pas le pdf.

Lien permanent

Publiée 03 Oct '17, 18:12

Nikopol's gravatar image

Nikopol
1.0k614
Taux d'acceptation : 42%

Modifiée 03 Oct '17, 18:15

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.