Rocco M.” post=75008Ciao a tutti. Mi sto dedicando alla lettura del manuale di TikZ e ho intenzione di creare un mio pacchetto personale con i comandi più importanti che trovo nel pacchetto (cosa che non ho fatto con l’Arte e di cui mi pento amaramente). Ottengo però già dei problemi.
Questo é il pacchetto:
`\usepackage{tikz}% Stile griglia (grafici)
\tikzset{%
help lines/.style={help lines,color=#1!50},%
help lines/.default=gray%
}`Questo il documento:
`\documentclass[a4paper]{article}
\usepackage{../graphics}
\begin{document}\begin{tikzpicture}
\draw[help lines] (-1.4,-1.4) grid (1.4,1.4);
\draw (-1.5,0) — (1.5,0);
\draw (0,-1.5) — (0,1.5);
\draw (0,0) circle (1cm);
\end{tikzpicture}\end{document}`
e questa l’ultima parte del codice d’errore:
`./TikZ.tex:6: TeX capacity exceeded, sorry [input stack size=5000].
\pgfkeys@unpack …ys@spdef \pgfkeyscurrentkey {#1
}\edef \pgfkeyscurrentkey …
l.6 \draw[help lines]
(-1.4,-1.4) grid (1.4,1.4);
./TikZ.tex:6: ==> Fatal error occurred, no output PDF file produced!
Transcript written on TikZ.log.`Mai incontrato un problema del genere… Qualcuno sa di cosa si tratta e come risolverlo?
Grazie,
Rocco.
Credo che il problema fondamentale sia nell’utilizzo errato delle parole chiave. Mettiamo ordine:
– con [tt]style[/tt] si possono definire le proprietà di un oggetto (colore, dimensione, eccetera…), ma non funziona se nel caso lo si debba usare per creare segmenti o nodi;
– le funzioni menzionate sono attivate da [tt]code[/tt].
Quindi, il tuo esempio deve essere:
`
\documentclass[a4paper,11pt]{article}
\usepackage{tikz}
% Stile griglia (grafici)
\tikzset{%
help lines/.code={help lines},% per disegnare le linee
help lines/.style={color=#1!50}, % per colorarle eventualmente
help lines/.default=gray%
}
\begin{document}
\begin{tikzpicture}
\draw[help lines=red] (-1.4,-1.4) grid (1.4,1.4);
\draw (-1.5,0) — (1.5,0);
\draw (0,-1.5) — (0,1.5);
\draw (0,0) circle (1cm);
\end{tikzpicture}
\hspace{1cm}
\begin{tikzpicture}
\draw[help lines] (-1.4,-1.4) grid (1.4,1.4);
\draw (-1.5,0) — (1.5,0);
\draw (0,-1.5) — (0,1.5);
\draw (0,0) circle (1cm);
\end{tikzpicture}
\end{document}
`
e ottieni:
[attachment=371]Immagine_2012-07-04.jpg[/attachment]
EDIT: ovviamente la risposta precedente è puramente accademica. Ridefinire un codice con se stesso, ovviamente, non ha senso, ma l’ho fatto a scopo dimostrativo. L’idea di scrivere un pacchetto personale è buona, ma con TikZ si rischia di fare cose a dir poco inutili.
C’è differenza tra il codice precedente e questo:
`\documentclass[a4paper,11pt]{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[help lines,red!50] (-1.4,-1.4) grid (1.4,1.4);
\draw (-1.5,0) — (1.5,0);
\draw (0,-1.5) — (0,1.5);
\draw (0,0) circle (1cm);
\end{tikzpicture}
\hspace{1cm}
\begin{tikzpicture}
\draw[help lines] (-1.4,-1.4) grid (1.4,1.4);
\draw (-1.5,0) — (1.5,0);
\draw (0,-1.5) — (0,1.5);
\draw (0,0) circle (1cm);
\end{tikzpicture}
\end{document}`
?
Nessuna, tranne che per poter scrivere [tt]help lines=red[/tt] si è dovuto ridefinire [tt]style[/tt] e [tt]code[/tt].
Ciao
Claudio