[Tikz] Tableau et flèche

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.

[Tikz] Tableau et flèche

Messagepar zariski63 » Mercredi 28 Août 2019, 07:52

Bonjour !
Je souhaiterais mettre une flèche comme indiquée dans l'ecm MAIS que faut-il ajouter ou changer pour que cette flèche garde sa position lors d'un changement de format du document (du 12pt au 10pt par exemple) ?
Je remercie d'avance toutes les âmes de bonne volonté qui se pencheront sur mon problème.

Code: Tout sélectionner
\documentclass[12pt]{article}
%\documentclass[20pt]{extarticle}%8pt; 9pt; 10pt; 11pt; 12pt; 14pt; 17pt; 20pt
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}

\usepackage[a4paper,
            left=10ex,
            right=10ex,
            bottom=2.5ex,
            footskip=4ex,
            top=3ex,
            marginparwidth=0ex,
            marginparsep = 0ex,
            showframe,
            ]{geometry}
\setlength{\parindent}{0ex}

\usepackage{xcolor}
\usepackage{array}

\usepackage{tikz}
   \usetikzlibrary{arrows.meta} % les flèches


\begin{document}
\begin{tikzpicture}
% Création du tableau dans un noeud
  \node(Tb){%
    %<---------- Tableau ------------------------------------->
   {\renewcommand{\arraystretch}{1.5}
     \begin{tabular}{|*{5}{>{\centering}m{2em}|}}
      \hline
       fois  & A   & B  &  C  &  D  \tabularnewline
      \hline
       A     & 1   & 2  &  3  &  4  \tabularnewline
      \hline
       B     & 5   & 6  &  7  &  8  \tabularnewline
      \hline
       C     & 9   & 10 &  11 &  12  \tabularnewline
      \hline
       D     & 13  & 14 &  15 &  16  \tabularnewline
      \hline
     \end{tabular}
    }
   %<--------------------------------------------------------->
   };
  \fill[red] (Tb) circle (0.2em) ;
  \draw[-Stealth,line width=0.08em,red](-6.35em,2.65em)--(-6.35em,3.6em);
  \draw[-Stealth,line width=0.08em,red](-5.3em,4em)--(-3.6em,4em);
\end{tikzpicture}
Fichiers joints
Essai.pdf
(7.01 Kio) Téléchargé 21 fois
zariski63
Méga-utilisateur
 
Messages: 319
Inscription: Jeudi 14 Octobre 2010, 08:20
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: tikz

Messagepar un bon petit » Mercredi 28 Août 2019, 08:06

Mauvaise approche : il faut créer le tableau en dehors d'un environnement tikz, mettre des noeuds dans les cellules du tableau et après la fin du tableau, tracer des flèches entre les noeuds avec un environnement tikzpicture muni de l'option "remember picture".
un bon petit
Giga-utilisateur
 
Messages: 748
Inscription: Vendredi 12 Juin 2009, 21:35
Localisation: Chambéry
Statut actuel: Actif et salarié | Enseignant

Re: tikz

Messagepar zariski63 » Mercredi 28 Août 2019, 08:09

houla chaud pour moi !
zariski63
Méga-utilisateur
 
Messages: 319
Inscription: Jeudi 14 Octobre 2010, 08:20
Statut actuel: Actif et salarié | Enseignant

Re: tikz

Messagepar pg » Mercredi 28 Août 2019, 08:24

Lorsqu'on fabrique un node tikz avec l'option [remember picture] et qu'on lui donne un nom, on peut accéder à ce nom dans une autre tikzpicture.

Donc par exemple si on appelle une case Tab11 et une autre Tab12 on peut ensuite faire un simple \node (Tab11) -- (Tab12); pour les relier, indépendamment de leur position sur la page.

Pour simplifier le nommage des cases, j'ai fait une fonction \absolutenode dont le premier argument est le nom du node (par exemple "Tab11") et le deuxième argument est le nom qui doit s'afficher (par exemple "fois").

Ne pas oublier de compiler deux fois pour que les positions soient correctes :

Code: Tout sélectionner
\documentclass[10pt]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}

\usepackage[a4paper,
            left=10ex,
            right=10ex,
            bottom=2.5ex,
            footskip=4ex,
            top=3ex,
            marginparwidth=0ex,
            marginparsep = 0ex,
            showframe,
            ]{geometry}
\setlength{\parindent}{0ex}

\usepackage{xcolor}
\usepackage{array}

\usepackage{tikz}
   \usetikzlibrary{arrows.meta} % les flèches

\newcommand{\absolutenode}[2]{
    % #1 = nom tikz
    % #2 = texte
    \tikz[remember picture,baseline=(#1.base),inner sep=1pt] \node (#1) {#2};
}

\begin{document}
\fontsize{10pt}{12pt}\selectfont
%\fontsize{12pt}{14pt}\selectfont
%\fontsize{14pt}{16pt}\selectfont
%\fontsize{17pt}{21pt}\selectfont
%\fontsize{20pt}{24pt}\selectfont

\renewcommand{\arraystretch}{1.5}
\begin{tabular}{|*{5}{>{\centering}m{2em}|}}
 \hline
  \absolutenode{Tab11}{fois} & \absolutenode{Tab12}{A}  & B  &  C  &  D  \tabularnewline
 \hline
  \absolutenode{Tab21}{A} & 1   & 2  &  3  &  4  \tabularnewline
 \hline
  B     & 5   & \absolutenode{Tab33}{6}  &  7  &  8  \tabularnewline
 \hline
  C     & 9   & 10 &  11 &  12  \tabularnewline
 \hline
  D     & 13  & 14 &  15 &  16  \tabularnewline
 \hline
\end{tabular}

\begin{tikzpicture}[remember picture,overlay]
\fill[red] (Tab33) circle (0.2em) ;
\draw[-Stealth,line width=0.08em,red] (Tab21) -- (Tab11);
\draw[-Stealth,line width=0.08em,red] (Tab11) -- (Tab12);
\end{tikzpicture}

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

Re: tikz

Messagepar un bon petit » Mercredi 28 Août 2019, 08:27

zariski63 a écrit:houla chaud pour moi !

Je vois, vous voulez le code prêt-à-l'mploi :roll:

Le voici. De rien !
Code: Tout sélectionner
\documentclass[a4paper,12pt]{article}
\usepackage{geometry,array,tikz}
\usetikzlibrary{arrows.meta}
\def\makenode{\tikz[anchor=base,baseline,remember picture]\node}
\begin{document}
\renewcommand\arraystretch{1.5}
\begin{tabular}{|*{5}{>{\centering\arraybackslash}m{2em}|}}\hline
   fois  & \makenode(a){A};   & B  &  C  &  D\\\hline
   A     & 1   & 2  &  3  &  4\\\hline
   B     & 5   & 6  &  7  &  8\\\hline
   C     & 9   & 10 &  11 &  \makenode(b){12};\\\hline
   D     & 13  & 14 &  15 &  16\\\hline
\end{tabular}
\begin{tikzpicture}[overlay,remember picture]
   \draw[-Stealth,line width=0.08em,red](a)--(b);
\end{tikzpicture}
\end{document}
un bon petit
Giga-utilisateur
 
Messages: 748
Inscription: Vendredi 12 Juin 2009, 21:35
Localisation: Chambéry
Statut actuel: Actif et salarié | Enseignant

Re: tikz

Messagepar zariski63 » Mercredi 28 Août 2019, 08:31

:D :D pas faux mais je venais de regarder du côté des "remember,etc." et, j'avoue, la tâche allait me prendre du temps.
Toujours admiratif de l'étendue de vos connaissance sur Latex et compagnie.
zariski63
Méga-utilisateur
 
Messages: 319
Inscription: Jeudi 14 Octobre 2010, 08:20
Statut actuel: Actif et salarié | Enseignant

Re: tikz

Messagepar zariski63 » Mercredi 28 Août 2019, 08:39

cela semble marcher du feu de dieu pourvu que l'on fasse 2 compilations à priori.
Je vais faire de multiples essais mais d'ores et déjà je vous remercie vivement !!!
zariski63
Méga-utilisateur
 
Messages: 319
Inscription: Jeudi 14 Octobre 2010, 08:20
Statut actuel: Actif et salarié | Enseignant

Re: tikz

Messagepar zariski63 » Mercredi 28 Août 2019, 09:01

Juste un truc de maniaque, après avoir agrémenté votre ecm à ma convenance, ma flèche verticale ne semble pas être si verticale, je ne m'explique pas cela ….

Code: Tout sélectionner
\documentclass[a4paper,12pt]{article}
\usepackage{geometry,array,tikz}
\usetikzlibrary{arrows.meta}

\def\makenode{\tikz[anchor=base,baseline,remember picture]\node}

\begin{document}

{\renewcommand\arraystretch{2}
\begin{tabular}{|*{5}{>{\centering\arraybackslash}m{2em}|}}
\hline
   \makenode(c){fois};  & \makenode(b){A};   & B  &  C  &  D  \\
   \hline
   \makenode(a){A};   & 1   & 2  &  3  &  4  \\
   \hline
   B     & 5   & 6  &  7  &  8               \\
   \hline
   C     & 9   & 10 &  11 &  12              \\
   \hline
   D     & 13  & 14 &  15 &  16            \\
   \hline
\end{tabular}
}

\begin{tikzpicture}[overlay,remember picture]
   \draw[-Stealth,line width=0.08em,red](a)--(c);
   \draw[-Stealth,line width=0.08em,red](c)--(b);
\end{tikzpicture}

\end{document}
zariski63
Méga-utilisateur
 
Messages: 319
Inscription: Jeudi 14 Octobre 2010, 08:20
Statut actuel: Actif et salarié | Enseignant

Re: tikz

Messagepar un bon petit » Mercredi 28 Août 2019, 15:17

zariski63 a écrit:Juste un truc de maniaque, après avoir agrémenté votre ecm à ma convenance, ma flèche verticale ne semble pas être si verticale, je ne m'explique pas cela ….

Exact, c'est le "inner sep" qui met un peu le bazar.
Il vaut mieux le rendre nul :
Code: Tout sélectionner
\def\makenode{\tikz[inner sep=0pt,outer sep=3pt,anchor=base,baseline,remember picture]\node}
un bon petit
Giga-utilisateur
 
Messages: 748
Inscription: Vendredi 12 Juin 2009, 21:35
Localisation: Chambéry
Statut actuel: Actif et salarié | Enseignant

Re: tikz

Messagepar zariski63 » Mercredi 28 Août 2019, 16:38

Merci beaucoup x 100 !
zariski63
Méga-utilisateur
 
Messages: 319
Inscription: Jeudi 14 Octobre 2010, 08:20
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: Google Adsense [Bot], Grapeshot [Crawler] et 27 invités