Tikz: dubbi diagrammi ad albero

  • Creatore
    Topic
  • #89957
    Up
    0
    Down
    ::


    Questo è il mio codice:
    `\begin{minipage}[t]{0.3\columnwidth}
    \begin{enumerate}
    \item $E \to E+T$
    \item $E \to T$
    \item $T \to T * F$
    \item $T \to F$
    \item $F \to ( E )$
    \item $F \to i$
    \end{enumerate}
    \end{minipage}
    \begin{minipage}[t]{0.35\columnwidth}
    \begin{enumerate}
    \item \begin{tikzpicture}[level distance=10mm] \node{$E$} child{node{$E$}} child{node{$+$}} child{node{$T$}} ; \end{tikzpicture}
    \item \begin{tikzpicture}[level distance=10mm] \node{$E$} child{node{$T$}}; \end{tikzpicture}
    \item \begin{tikzpicture}[level distance=10mm] \node{$T$} child{node{$T$}} child{node{$*$}} child{node{$F$}} ; \end{tikzpicture}
    \end{enumerate}
    \end{minipage}
    \begin{minipage}[t]{0.35\columnwidth}
    \begin{enumerate}
    \setcounter{enumi}{3}
    \item \begin{tikzpicture}[level distance=10mm] \node{$T$} child{node{$F$}} ; \end{tikzpicture}
    \item \begin{tikzpicture}[level distance=10mm] \node{$F$} child{node{$($}} child{node{$E$}} child{node{$)$}} ; \end{tikzpicture}
    \item \begin{tikzpicture}[level distance=10mm] \node{$F$} child{node{$i$}} ; \end{tikzpicture}
    \end{enumerate}
    \end{minipage}`

    Perchè gli alberi con tre figli si sviluppano (correttamente) verso il basso mentre quelli con un solo figlio si sviluppano verso l’alto?

    Il paragrafo serve per spiegare come tradurre le regole in alberi sintattici, il mio codice è un po’ triviale quindi accetto anche suggerimenti su come rendere graficamente meglio il tutto (a parte lo stile degli alberi che è standardizzato). Grazie!

Visualizzazione 4 filoni di risposte
  • Autore
    Risposte
    • #89958
      Up
      0
      Down
      ::

      deepsea” post=89496Questo è il mio codice:
      `\begin{minipage}[t]{0.3\columnwidth}
      \begin{enumerate}
      \item $E \to E+T$
      \item $E \to T$
      \item $T \to T * F$
      \item $T \to F$
      \item $F \to ( E )$
      \item $F \to i$
      \end{enumerate}
      \end{minipage}
      \begin{minipage}[t]{0.35\columnwidth}
      \begin{enumerate}
      \item \begin{tikzpicture}[level distance=10mm] \node{$E$} child{node{$E$}} child{node{$+$}} child{node{$T$}} ; \end{tikzpicture}
      \item \begin{tikzpicture}[level distance=10mm] \node{$E$} child{node{$T$}}; \end{tikzpicture}
      \item \begin{tikzpicture}[level distance=10mm] \node{$T$} child{node{$T$}} child{node{$*$}} child{node{$F$}} ; \end{tikzpicture}
      \end{enumerate}
      \end{minipage}
      \begin{minipage}[t]{0.35\columnwidth}
      \begin{enumerate}
      \setcounter{enumi}{3}
      \item \begin{tikzpicture}[level distance=10mm] \node{$T$} child{node{$F$}} ; \end{tikzpicture}
      \item \begin{tikzpicture}[level distance=10mm] \node{$F$} child{node{$($}} child{node{$E$}} child{node{$)$}} ; \end{tikzpicture}
      \item \begin{tikzpicture}[level distance=10mm] \node{$F$} child{node{$i$}} ; \end{tikzpicture}
      \end{enumerate}
      \end{minipage}`

      Perchè gli alberi con tre figli si sviluppano (correttamente) verso il basso mentre quelli con un solo figlio si sviluppano verso l’alto?

      Il paragrafo serve per spiegare come tradurre le regole in alberi sintattici, il mio codice è un po’ triviale quindi accetto anche suggerimenti su come rendere graficamente meglio il tutto (a parte lo stile degli alberi che è standardizzato). Grazie!

      Il tuo codice non si può compilare: mancano preambolo e ambiente [tt]document[/tt].

      Ciao
      Tommaso

    • #89959
      Up
      0
      Down
      ::


      Non li ho inseriti per brevità.

      Questo è il preambolo in ogni caso:
      `
      \documentclass{report}
      \usepackage[T1]{fontenc}
      \usepackage[utf8]{inputenc}
      \usepackage[italian]{babel}
      \usepackage{amsmath}
      \usepackage{amssymb}
      \usepackage{braket} %comando \Set{} e \Braket{}
      \usepackage{booktabs}
      \usepackage{stackrel} %necessario per ampliare \stackrel standard e scrivere sotto gli operatori
      \usepackage{tikz}
      `

    • #89960
      Up
      0
      Down
      ::


      Non è vero che gli alberi con 3 foglie si sviluppano verso il basso mentre quelli con 1 verso l’alto. Il problema è causato dal metodo usato: due minipage con ambienti itemize. Ho intuito che la “scatola” con la figura non veniva allineata con un minimo di criterio e di cui sospetto il problema sia dato da una combinazione fra l’allineamento desiderato (t) e l’algoritmo che fisicamente decide il posizionamento in base l’altezza della minipage e il numero di items , ma non mi è chiaro il motivo della differenza del numero di foglie. Quello che c’è di vero è che gli alberi sono sempre sviluppati con approccio top-bottom, ma qualcuno viene allineato rispetto la radice, altri rispetto alle foglie. Tutto qui.

      In ogni caso non è così che si deve presentare questo tipo di figure, ma con un’opportuna matrice o a mano. La soluzione “a mano”: `
      \documentclass[a4paper,11pt]{article}
      \usepackage{tikz}
      \usetikzlibrary{trees}

      \begin{document}
      \begin{tikzpicture}[level distance=10mm]
      % Riga n. 1
      \node[label={above:$E \to E+T$}]{$E$} child{node{$E$}} child{node{$+$}} child{node{$T$}};

      \begin{scope}[xshift=4cm]
      \node[label={above:$E \to T$}]{$E$} child{node{$T$}};
      \end{scope}

      \begin{scope}[xshift=8cm]
      \node[label={above:$T \to T * F$}]{$T$} child{node{$T$}} child{node{$*$}} child{node{$F$}} ;
      \end{scope}

      % Riga n. 2
      \begin{scope}[yshift=-3cm]
      \node[label={above:$T \to F$}]{$T$} child{node{$F$}} ;

      \begin{scope}[xshift=4cm]
      \node[label={above:$F \to ( E )$}]{$F$} child{node{$($}} child{node{$E$}} child{node{$)$}} ;
      \end{scope}

      \begin{scope}[xshift=8cm]
      \node[label={above:$F \to i$}]{$F$} child{node{$i$}} ;
      \end{scope}
      \end{scope}

      \end{tikzpicture}

      \end{document}
      `

      Ciao
      Claudio

    • #89961
      Up
      0
      Down
      ::


      Soluzione perfetta!
      Riguardo a spaziature e allineamenti, è altrettanto errato racchiudere in ambienti center le tikzpicture?

      ps: nel codice la libreria trees per cosa viene utilizzata?

    • #89962
      Up
      0
      Down
      ::

      deepsea” post=89503Soluzione perfetta!
      Riguardo a spaziature e allineamenti, è altrettanto errato racchiudere in ambienti center le tikzpicture?

      Dipende come lavori.

      Io opterei per ambienti flottanti, quindi racchiuderei ogni figura in un ambiente figure, così: `
      \begin{figure}
      \centering
      \begin{tikzpicture}

      \end{tikzpicture}
      \end{figure}
      ` Ovviamente si dovrebbero inserire anche un’etichetta e la didascalia.

      Quando ricopiavo solo appunti universitari non amavo particolarmente gli ambienti flottanti. Siccome conoscevo a priori l’organizzazione del testo, inserivo le figure con: `
      \begin{center}
      \begin{tikzpicture}

      \end{tikzpicture}
      \end{center}
      ` senza didascalia o etichetta. Questo perché non avevo bisogno di fare riferimento alla figura 2 in pagina 89 e ho sempre saputo calcolare ad occhio le dimensioni di una figura, quindi le pagine “brutte” sono poche. Siccome l’algoritmo di LaTeX è migliore del calcolo ad occhio è sempre preferibile usare l’ambiente [tt]figure[/tt].

      deepsea” post=89503
      ps: nel codice la libreria trees per cosa viene utilizzata?

      Nulla in effetti, ma visto che non avevi inserito il preambolo ho preferito andare sul sicuro e caricarla evitando il possibile, banale, errore “la libreria bla bla bla è mancante”.

      Ciao
      Claudio

Visualizzazione 4 filoni di risposte
  • Devi essere connesso per rispondere a questo topic.

Go to top