Tikz dovrebbe essere importato dalla documentclass standalone

Oct 26 2020

Penso di aver trovato un bug, ma potrebbe esserci una ragione.

Così eccomi lì, a fare una bella figura di un'anatra su uno sfondo grigio in tikz. Ma come si è scoperto, avevo bisogno che la figura avesse una dimensione diversa, e la figura era diventata complicata e non volevo rifare tutte le posizioni delle cose. Così ho pensato tra me e me. Non posso semplicemente adattare la dimensione della figura alla dimensione che desidero? Che bella idea! Quindi ho utilizzato il pacchetto di regolazione della larghezza e \begin{adjustbox}{width=5cm} ... \end{adjustbox}ho scritto intorno alla mia immagine:

\documentclass[tikz]{standalone}

\usepackage{graphicx}
\usepackage{duckuments}
\usepackage{adjustbox}

\begin{document}

\begin{adjustbox}{width = 5cm}
\begin{tikzpicture}

    \node[anchor = north east] at (5.5,0) {\includegraphics{example-image-duck}};

\end{tikzpicture}
\end{adjustbox}

\end{document}

Intorno al mio tikzpicture, ma basso ed ecco, non è stato compilato!

Per molte notti mi gratto il cervello, la scatola di regolazione non è come le anatre su sfondi grigi? sicuramente non poteva essere così (ero anche convinto di aver aggiustato la larghezza delle anatre sulle scatole grigie in tempi precedenti). In un disperato tentativo di correggere l'errore, ho spostato l'uso di tikz dalla dichiarazione della documentclass standalone a una normale dichiarazione di usepckage:

\documentclass{standalone}

\usepackage{graphicx}
\usepackage{duckuments}
\usepackage{adjustbox}
\usepackage{tikz}

\begin{document}

\begin{adjustbox}{width = 5cm}
\begin{tikzpicture}

    \node[anchor = north east] at (5.5,0) {\includegraphics{example-image-duck}};

\end{tikzpicture}
\end{adjustbox}

\end{document}

Con mia sorpresa il codice è stato compilato! E quello che ne è uscito è stata una bellissima papera con un cappello blu e una spada laser verde su uno sfondo grigio largo 5 cm, mai la mia vita era stata così completa!

La mia domanda quindi è: perché questo non riesce quando importa tikz attraverso la documentclass. Ci sono momenti in cui importare tikz attraverso la documentclass standalone è più vantaggioso di altri? qual è il modo corretto per farlo?

Per gli interessati, fallisce anche se tikz è stato importato sia nella documentclass che come usepackage.

Grazie per la lettura e per le tue risposte ;-)

Risposte

3 Skillmon Oct 26 2020 at 18:19

La standaloneclasse ha la caratteristica di produrre più pagine, nel qual caso devi specificare un ambiente che dovrebbe fungere da singola pagina. L'opzione tikznon solo carica il pacchetto Ti k Z, ma imposta anche le cose per standaloneusare l' tikzpictureambiente per l'ambiente che delimita le singole pagine, quindi l'ambiente avrà un significato / lavoro aggiuntivo.

Quindi l' tikzopzione non si limita a caricare Ti k Z, ma cambia anche l' tikzpictureambiente, motivo per cui non puoi usarla nel modo che desideri dopo averla caricata tramite l'opzione di classe.