Input condizionale TikZ

  • Creatore
    Topic
  • #68244
    Andrea
    Partecipante
      Up
      0
      Down
      ::


      Salve a tutti,
      sto realizzando un corposo documento con molti file scritti con TikZ. Per ottenere una compilazione più rapida, ho pensato di creare uno swich per compilare le versioni provvisorie usando versioni .pdf delle immagini TikZ (cosa che permette anche di avere una versione draft con l’opzione omonima della classe book) e includere il vero file TikZ (con estensione .tex) solo a documento ultimato. La soluzione che ho realtzzato è un insieme di alcune soluzioni trovate su internet che combinano uno switch e il pacchetto standalone.

      Un esempio di main file
      `
      \documentclass[a4paper, %
      openany, %
      %draft %
      ]{book}
      %Togliere openany e draft e decommentare \finaltrue

      \usepackage[T1]{fontenc}
      \usepackage[sc]{mathpazo}
      \linespread{1.05} % Palatino needs more leading (space between lines)

      \usepackage[utf8]{inputenc} %Codifica font input
      \usepackage[italian,english]{babel} %Lingua inglese
      \usepackage{microtype} %Miglior riempimento riga

      %Includere file esterni con preambolo
      \usepackage{standalone}

      \usepackage{tikz,pgfplots} %Grafici vettoriali

      \newif\iffinal % introduce a switch for draft vs. final document

      \iffinal
      \newcommand{\inputTikZ}[1]{%
      \input{#1}%
      }
      \else
      \newcommand{\inputTikZ}[1]{%
      \includegraphics{#1}
      }
      \fi

      %\finaltrue % use this to compile the final document

      %Opzioni TikZx
      \usetikzlibrary{ %
      circuits.ee.IEC, % For electric circuits
      }

      \begin{document}
      Prova
      \begin{figure}
      \centering
      \inputTikZ{resist}
      \caption{Resistenze.}
      \label{fig:resist}
      \end{figure}
      \end{document}
      `

      e un esempio di file TikZ
      `
      \documentclass{standalone}

      \usepackage{tikz,pgfplots} %Grafici vettoriali

      %Librerie TikZ
      \usetikzlibrary{ % for chains
      circuits.ee.IEC, %
      }

      %Comandi
      \newcommand{\pedi}[2]{_{\mathrm{#1}#2}} %Doppio pedice

      \begin{document}
      \begin{tikzpicture}[%
      circuit ee IEC,
      set resistor graphic=var resistor IEC graphic,
      set make contact graphic= var make contact IEC graphic,
      ]
      \matrix[row sep=.5cm,column sep=1cm] {
      & & \node (conv)[resistor,label={$R\pedi{conv}{}$}] {}; & &\\
      \node(tf)[]{$\overline{T}\pedi{f}{,j}$}; & \node(p1)[contact]{}; & & \node(p2)[contact]{}; & \node(steam){$T\pedi{st}{}$};\\
      & & \node (rad)[resistor,label={below:$R\pedi{rad}{}$}] {}; & &\\
      };

      \draw (tf) — (p1) |- (conv) -| (p2) — (steam);
      \draw (p1) |- (rad) -| (p2);

      \end{tikzpicture}
      \end{document}
      `

      Ora, tutto funziona in apparenza regolarmente, ma provando a de-commentare l’opzione \finaltrue e a cancellare il .pdf dell’immagine (per essere sicuro che funzioni) il comando \inputTikZ non trova il file da immettere (io vorrei che inserisse il .tex). Aggiungere l’estensione desiderata all’interno della definizione dello switch non cambia il comportamento.

      Come posso fare? e fattibile fare ciò che chiedo?

      Grazie in anticipo
      Andrea

    Visualizzazione 1 filone di risposte
    • Autore
      Risposte
      • #68245
        Up
        0
        Down
        ::

        Iovem” post=67258Salve a tutti,
        sto realizzando un corposo documento con molti file scritti con TikZ. Per ottenere una compilazione più rapida, ho pensato di creare uno swich per compilare le versioni provvisorie usando versioni .pdf delle immagini TikZ (cosa che permette anche di avere una versione draft con l’opzione omonima della classe book) e includere il vero file TikZ (con estensione .tex) solo a documento ultimato. La soluzione che ho realtzzato è un insieme di alcune soluzioni trovate su internet che combinano uno switch e il pacchetto standalone.

        Un esempio di main file
        `
        \documentclass[a4paper, %
        openany, %
        %draft %
        ]{book}
        %Togliere openany e draft e decommentare \finaltrue

        \usepackage[T1]{fontenc}
        \usepackage[sc]{mathpazo}
        \linespread{1.05} % Palatino needs more leading (space between lines)

        \usepackage[utf8]{inputenc} %Codifica font input
        \usepackage[italian,english]{babel} %Lingua inglese
        \usepackage{microtype} %Miglior riempimento riga

        %Includere file esterni con preambolo
        \usepackage{standalone}

        \usepackage{tikz,pgfplots} %Grafici vettoriali

        \newif\iffinal % introduce a switch for draft vs. final document

        \iffinal
        \newcommand{\inputTikZ}[1]{%
        \input{#1}%
        }
        \else
        \newcommand{\inputTikZ}[1]{%
        \includegraphics{#1}
        }
        \fi

        %\finaltrue % use this to compile the final document

        %Opzioni TikZx
        \usetikzlibrary{ %
        circuits.ee.IEC, % For electric circuits
        }

        \begin{document}
        Prova
        \begin{figure}
        \centering
        \inputTikZ{resist}
        \caption{Resistenze.}
        \label{fig:resist}
        \end{figure}
        \end{document}
        `

        e un esempio di file TikZ
        `
        \documentclass{standalone}

        \usepackage{tikz,pgfplots} %Grafici vettoriali

        %Librerie TikZ
        \usetikzlibrary{ % for chains
        circuits.ee.IEC, %
        }

        %Comandi
        \newcommand{\pedi}[2]{_{\mathrm{#1}#2}} %Doppio pedice

        \begin{document}
        \begin{tikzpicture}[%
        circuit ee IEC,
        set resistor graphic=var resistor IEC graphic,
        set make contact graphic= var make contact IEC graphic,
        ]
        \matrix[row sep=.5cm,column sep=1cm] {
        & & \node (conv)[resistor,label={$R\pedi{conv}{}$}] {}; & &\\
        \node(tf)[]{$\overline{T}\pedi{f}{,j}$}; & \node(p1)[contact]{}; & & \node(p2)[contact]{}; & \node(steam){$T\pedi{st}{}$};\\
        & & \node (rad)[resistor,label={below:$R\pedi{rad}{}$}] {}; & &\\
        };

        \draw (tf) — (p1) |- (conv) -| (p2) — (steam);
        \draw (p1) |- (rad) -| (p2);

        \end{tikzpicture}
        \end{document}
        `

        Ora, tutto funziona in apparenza regolarmente, ma provando a de-commentare l’opzione \finaltrue e a cancellare il .pdf dell’immagine (per essere sicuro che funzioni) il comando \inputTikZ non trova il file da immettere (io vorrei che inserisse il .tex). Aggiungere l’estensione desiderata all’interno della definizione dello switch non cambia il comportamento.

        Come posso fare? e fattibile fare ciò che chiedo?

        Grazie in anticipo
        Andrea

        Perché non usare la libreria externalize di PGF?

        Ciao
        Enrico

      • #68246
        Andrea
        Partecipante
          Up
          0
          Down
          ::


          Grazie per la risposta,
          non sapevo dell’esistenza di questa libreria (il manuale di pgf è lunghetto 🙂 ). Gli darò un’occhiata approfondita; tuttavia attualmente tutte le mie immagini sono fatte in modo da funzionare con il pacchetto standalone e usando la libreria che tu suggerisci dovrei modificarle tutte, se ho capito bene dalla lettura superficiale che ho potuto dare finora alla libreria.

          Qualcuno mi sa dire perché il mio approccio (benché complicato) non funziona?

      Visualizzazione 1 filone di risposte
      • Devi essere connesso per rispondere a questo topic.

      Go to top