Tengo un archivo .csv con números que me gustaría usar como argumentos en una macro TiKZ que creé. Probé varios enfoques diferentes pero parece que tengo problemas con la expansión de argumentos (en realidadNo quiero \expandafter
volver a intentarlo), ya que no puedo encontrar la manera de llamar los datos del archivo sin usar una macro como argumento para mi macro TiKZ.
MWE:
\begin{filecontents*}{data.csv}
10,4.2,green
20,6.4,blue
30,5.4,red
\end{filecontents*}
\documentclass{standalone}
\usepackage{tikz}
\newcommand{\spoke}[3]{%true angle, radius, colour
\fill[#3] (450-#1-5:0) -- (450-#1-5:#2) -- (450-#1-5:#2) arc (450-#1-5:450-#1+5:#2) -- (450-#1+5:0) -- (450-#1+5:#2) -- cycle;
}
\begin{document}
\begin{tikzpicture}
\spoke{10}{4.2}{green} %how do I get these from the file?
\end{tikzpicture}
\end{document}
Estoy usando Overleaf, por lo que soy flexible con respecto a paquetes/enfoques. También tengo control total sobre la entrada, por lo que si hay una manera más fácil que usar un .csv, estaré encantado de usarla.
Respuesta1
El csvsimple
paquete puede hacer esto de manera muy simple. :) También agregué la sugerencia de código TikZ hecha enEl gato de Schrödingercomenta tu pregunta.
\documentclass{standalone}
\begin{filecontents*}{\jobname-data.csv}
angle,radius,colour
10,4.2,green
20,6.4,blue
30,5.4,red
\end{filecontents*}
\usepackage{csvsimple}
\usepackage{tikz}
\newcommand{\spoke}[3]{%true angle, radius, colour
\fill[#3] (450-#1-5:0) -- (450-#1-5:#2)
arc[start angle=450-#1-5,end angle=450-#1+5,radius=#2];
% modified and more modern code here from Schrödinger'scat in the comments
}
\begin{document}
\begin{tikzpicture}
\csvreader[head to column names]{\jobname-data.csv}{}{
\spoke{\angle}{\radius}{\colour} %how do I get these from the file?
}
\end{tikzpicture}
\end{document}