[RISOLTO] Schema con Tikz

  • Creatore
    Topic
  • #71455
    Up
    0
    Down
    ::


    Ciao a tutti,

    vorrei realizzare un schema a blocchi con tikz. Dopo aver letto un po’ il manuale, sono riuscito a scrivere questo codice:
    `\documentclass[a5paper,10pt,extrafontsizes,openright]{memoir}

    \usepackage{etextools}
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage[greek,italian]{babel}
    \usepackage{microtype}

    \begin{document}

    \pgfdeclarelayer{background}
    \pgfdeclarelayer{foreground}
    \pgfsetlayers{background,main,foreground}

    \begin{figure}[p]
    \centering
    \begin{tikzpicture}
    \begin{pgfonlayer}{background}
    \fill[gray!30] (0,0) rectangle (\textwidth,\textheight);
    \end{pgfonlayer}

    \begin{pgfonlayer}{background}
    \fill[white] (1,1) rectangle (3,8);
    \draw (2,4.5) node{\rotatebox{90}{Frase di prova}};
    \draw (2.5,4.5) node{\rotatebox{90}{Frase di prova 2}};
    \end{pgfonlayer}

    \end{tikzpicture}
    \end{figure}

    \end{document}`
    Il mio problema, è quello di centrare tutto il testo nel rettangolo bianco in entrambe le direzioni. È possibile farlo?

    Grazie e buona giornata,
    Marco.

Visualizzazione 7 filoni di risposte
  • Autore
    Risposte
    • #71456
      Up
      0
      Down
      ::

      Marco87″ post=70604Ciao a tutti,

      vorrei realizzare un schema a blocchi con tikz. Dopo aver letto un po’ il manuale, sono riuscito a scrivere questo codice:
      `\documentclass[a5paper,10pt,extrafontsizes,openright]{memoir}

      \usepackage{etextools}
      \usepackage[T1]{fontenc}
      \usepackage[utf8]{inputenc}
      \usepackage[greek,italian]{babel}
      \usepackage{microtype}

      \begin{document}

      \pgfdeclarelayer{background}
      \pgfdeclarelayer{foreground}
      \pgfsetlayers{background,main,foreground}

      \begin{figure}[p]
      \centering
      \begin{tikzpicture}
      \begin{pgfonlayer}{background}
      \fill[gray!30] (0,0) rectangle (\textwidth,\textheight);
      \end{pgfonlayer}

      \begin{pgfonlayer}{background}
      \fill[white] (1,1) rectangle (3,8);
      \draw (2,4.5) node{\rotatebox{90}{Frase di prova}};
      \draw (2.5,4.5) node{\rotatebox{90}{Frase di prova 2}};
      \end{pgfonlayer}

      \end{tikzpicture}
      \end{figure}

      \end{document}`
      Il mio problema, è quello di centrare tutto il testo nel rettangolo bianco in entrambe le direzioni. È possibile farlo?

      Grazie e buona giornata,
      Marco.

      Ciao, io ho solamente spostato le coordinate del testo: ora sono centrate. L’esempio minimo non è compilabile subito perché mancano i pacchetti tikz e pgf.

      Il codice:

      `
      \documentclass[a5paper,10pt,extrafontsizes,openright]{memoir}

      \usepackage{etextools}
      \usepackage[T1]{fontenc}
      \usepackage[utf8]{inputenc}
      \usepackage[greek,italian]{babel}
      \usepackage{microtype,pgf,tikz}

      \begin{document}

      \pgfdeclarelayer{background}
      \pgfdeclarelayer{foreground}
      \pgfsetlayers{background,main,foreground}

      \begin{figure}[p]
      \centering
      \begin{tikzpicture}
      \begin{pgfonlayer}{background}
      \fill[gray!30] (0,0) rectangle (\textwidth,\textheight);
      \end{pgfonlayer}

      \begin{pgfonlayer}{background}
      \fill[white] (1,1) rectangle (3,8);
      \draw (1.75,4.5) node{\rotatebox{90}{Frase di prova}};
      \draw (2.25,4.5) node{\rotatebox{90}{Frase di prova 2}};
      \end{pgfonlayer}

      \end{tikzpicture}
      \end{figure}

      \end{document}
      `

      Ciao
      Claudio

    • #71457
      Up
      0
      Down
      ::


      Ciao Claudio,

      intanto grazie della risposta! Mi sono dimenticato di caricare il pacchetto tikz (il pgf non l’ho caricato nemmeno in quello che compilo io. Carico pgfplots; può darsi che questo carichi pgf). Se ritieni sia il caso, modifico il mio primo messaggio.

      Per quanto riguarda la soluzione che hai proposto, il risultato è quello che volevo. Mi sarebbe piaciuto avere qualcosa di più “automatizzato”, ma direi che va più che bene anche così.

      Grazie mille! e buona giornata,
      Marco.

    • #71458
      claudio
      Partecipante
        Up
        0
        Down
        ::


        se vuoi avere una aiuto visivo per scrivere codice tikz guarda questo post o questo
        ciao
        claudio

      • #71459
        Liverpool
        Partecipante
          Up
          0
          Down
          ::

          Marco87″ post=70608Mi sarebbe piaciuto avere qualcosa di più “automatizzato”, ma direi che va più che bene anche così.

          Così?
          `
          \draw (2,4.5) node[align=center, rotate=90]{Frase di prova\\Frase di prova 2};
          `

        • #71460
          Up
          0
          Down
          ::


          Ciao a tutti,

          grazie delle vostre risposte!

          LiverpoolCosì?
          `\draw (2,4.5) node[align=center, rotate=90]{Frase di prova\\Frase di prova 2};`

          Esatto è proprio quello che cercavo! Rimarrebbe solo una cosa da sistemare: l’interlinea. Come posso decidere quanto vale? Infatti se scrivo:

          `\draw (2,4.5) node[align=center, rotate=90]{\scriptsize Frase di prova\\ \scriptsize Frase di prova 2};`

          Ottengo le due frasi scritte in \scriptsize, ma con un’interlinea uguale a quella che si ha con \normalsize.

          Grazie e ciao,
          Marco.

        • #71461
          Liverpool
          Partecipante
            Up
            0
            Down
            ::


            Per l’interlinea basta scrivere banalmente una misura tra parentesi quadre dopo \\ (es.: [tt]\\[1em][/tt]).
            Visto che la soluzione di prima ti è piaciuta, probabilmente ti piacerà ancora di più questa completamente automatica (devi aggiungere [tt]\usetikzlibrary{calc}[/tt] nel preambolo dopo la chiamata di tikz):
            `\begin{pgfonlayer}{background}
            \coordinate (A) at (1,1);
            \coordinate (C) at (3,8);
            \fill[white] (A) rectangle (C);
            \draw ($(A)!0.5!(C)$) node[align=center, rotate=90] {Frase di prova\\[0.2ex]Frase di prova 2};
            \end{pgfonlayer}`
            Ciao

          • #71462
            Up
            0
            Down
            ::


            Ciao Liverpool,

            non so che dire… grazie davvero! 😀 Ora il mio problema è stato risolto. Se però ti va, avrei ancora una “domandina” per curiosità: Come hai fatto a scrivere \tikzlibrary{calc} in quel modo?

            Grazie mille e buona serata!
            Marco.

          • #71463
            Liverpool
            Partecipante
              Up
              0
              Down
              ::

              Marco87″ post=70647Come hai fatto a scrivere \tikzlibrary{calc} in quel modo?

              Vedi qui e il messaggio successivo.

              Buona serata anche a te.

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

          Go to top