Como fazer uma figura como essa em LaTeX usando tikz?

Como fazer uma figura como essa em LaTeX usando tikz?

Eu gostaria de fazer esta figura em LaTeX usando tikz (a figura é de um livro):

insira a descrição da imagem aqui

Eu realmente não tenho ideia por onde começar e como fazer isso. Obrigado pela ajuda.

Responder1

Como sempre acontece com o TikZ, existem muitas maneiras de construir esse diagrama. Aqui estão dois apenas com funcionalidades básicas do TikZ.

Ambos usam dois loops PGFFor, mas o primeiro usa um sistema de coordenadas de rotação onde o canto inferior direito é onª linha e no canto inferior esquerdo é okª coluna (ver at (\k, -\n)especificação). Porém, isso significa que o primeiro valor do índice precisa ser avaliado comok+n+ 1 que pode ser feito com \intevalou a countchave do PGFFor (veja count = \knp from \npo que significa \knpcontagem crescente a partir den+ 1 para cadak).

O segundo diagrama constrói o diagrama com um sistema de coordenadas não transformado onde as linhas estão horizontalmente, mas okcolunas permanecem na direção inferior esquerda, o que exigiu um cálculo para oxvalor do posicionamento do nó: 2k-n.

A condição de quando desenhar uma seta da linha/coluna anterior agora é um pouco mais complicada, assim como antes.

As condições são avaliadas com a sequência de controle primitiva do TeX, \ifnum…\fida qual não gosto, mas são a ferramenta mais direta neste caso, especialmente em combinação com \intevaluma vez que permite o cálculo de números inteiros em tempo real.

Código

\documentclass[tikz]{standalone}
\usetikzlibrary{arrows.meta, quotes}
\begin{document}
\tikzset{% settings common to both solutions
  anchor=base,        % nodes are aligned at their base
  auto=right,         % nodes along lines are placed to the right
                      % (all arrows are drawn reversed)
  >={Stealth[round]}, % shorthand arrow tip
  outer sep=+.1em,    % lines connecting nodes are further away
  every edge quotes/.append style={% quotes nodes are closer to the line
    inner sep=+.15em, outer sep=auto}}

\tikz[x=(-45:1.5cm), y=(45:1.5cm)] % rotate and scale the coordinate system
\foreach[count/.list={\np from 1, \nm from -1}] \n in {0, ..., 5}
  \foreach[count/.list={\kp from 1, \km from -1, \knp from \np}]
                                                  \k in {0, ..., \inteval{5-\n}}
    \node (\k-\n) at (\k, -\n) {$A_{\knp, \k}$} % \knp = \inteval{\k+\n+1}
    \ifnum\n=0
      node[gray] at (\k, 1) {$k=\k$}
    \fi
    \ifnum\k=0
      node[gray] at (-1, -\n-1) {$n=\np$}
    \fi
    \ifnum\inteval{\k*\n}>0
      edge[<-, "$\cdot\kp$"] (\k -\nm)
      edge[<-, "$\cdot\np$"] (\km-\n )
    \fi;

\tikz[scale=1.5/sqrt 2] % same scale as in the previous diagram
\foreach[count/.list={\np from 2, \nm from 0}] \n in {1, ..., 6}
  \foreach[count/.list={\kp from 1, \km from -1}] \k in {0, ..., \inteval{\n-1}}
    \node (\k-\n) at (2*\k-\n,-\n) {$A_{\n, \k}$}
      \ifnum\k=0
        node[gray] at (-\n-2, -\n) {$n=\n$}
      \fi
      \ifnum\n=\inteval{\k+1}
        node[gray] at (2*\k-\n+1, -\n+1) {$k=\k$}
      \fi
      \ifnum\n>2 \ifnum\k>0 \ifnum\k<\inteval{\n-1}
        edge[<-, "$\cdot\kp$"]             (\k -\nm)
        edge[<-, "$\cdot\inteval{\n-\k}$"] (\km-\nm)
      \fi\fi\fi;
\end{document}

Saída

insira a descrição da imagem aqui

informação relacionada