Re: Il disegno programmato nell’Arte di scrivere con LaTeX

#72833
lorenzo.pantieri
Partecipante
    Up
    0
    Down
    ::


    Ciao a tutti. Con TikZ una cosa si può fare in più e più modi. Per esempio, voglio disegnare un quadrato con ciascun vertice contrassegnato da un cerchietto ed etichettato. Il codice che userei io è molto ingenuo:
    `\begin{tikzpicture}
    \draw [help lines] (0,0) grid (2,2);
    \coordinate (c1) at (1,0);
    \coordinate (c2) at (0,1);
    \coordinate (c3) at (1,2);
    \coordinate (c4) at (2,1);

    \node at (c1) [below] {$c_1$};
    \node at (c2)

    {$c_2$};
    \node at (c3) [above] {$c_3$};
    \node at (c4)

    {$c_4$};

    \draw (c1) circle (2pt);
    \draw (c2) circle (2pt);
    \draw (c3) circle (2pt);
    \draw (c4) circle (2pt);

    \draw (c1) — (c2) — (c3) — (c4) — cycle;
    \end{tikzpicture}`
    Insomma:
    1. definisco sulla tela le 4 coordinate, una alla volta ;
    2. inserisco, in corrispondenza di queste coordinate, le 4 etichette, una alla volta;
    3. disegno i 4 cerchietti, uno alla volta (sempre usando le coordinate);
    4. disegno il quadrato (sempre usando le coordinate).

    Comprensibilissimo, ma tutte quelle istruzioni ripetute sono bruttine.

    Ecco un codice più elegante:
    `\begin{tikzpicture}
    \draw [help lines] (0,0) grid (2,2);
    \path (1,0) coordinate (c1)
    (0,1) coordinate (c2)
    (1,2) coordinate (c3)
    (2,1) coordinate (c4);
    \draw (c1) — (c2) — (c3) — (c4) — cycle;
    \draw (c1) circle (2pt)
    (c2) circle (2pt)
    (c3) circle (2pt)
    (c4) circle (2pt)
    (c1) node [below] {$c_1$}
    (c2) node

    {$c_2$}
    (c3) node [above] {$c_3$}
    (c4) node

    {$c_4$};
    \end{tikzpicture} `
    Quello che si fa qui è:
    1. si traccia un “cammino invisibile” con il solo scopo di definire le coordinate dei vertici;
    2. si disegna il quadrato (usando le coordinate);
    3. si disegnano cerchietti ed etichette, usando un’unica istruzione \draw.

    Questo secondo codice è elegante, ma lo trovo meno intuitivo. Mi date qualche delucidazione in più?

    In particolare, è vero che se devo disegnare due oggetti diversi posso sempre farlo con un’unica istruzione \draw?
    Per esempio.
    `\begin{tikzpicture}
    \draw [help lines] (0,0) grid (3,3);
    \draw (0,0) rectangle (1,1)
    (0,2) rectangle (1,3)
    (2,2) rectangle (3,3)
    (2,0) rectangle (3,1);
    \end{tikzpicture}
    `
    è uguale al più goffo (ma per me più intuitivo)
    `\begin{tikzpicture}
    \draw [help lines] (0,0) grid (3,3);
    \draw (0,0) rectangle (1,1);
    \draw (0,2) rectangle (1,3);
    \draw (2,2) rectangle (3,3);
    \draw (2,0) rectangle (3,1);
    \end{tikzpicture}`
    Mi illuminate?

    Grazie!

    Go to top