У меня есть файл .csv с числами, которые я хотел бы использовать в качестве аргументов в макросе TiKZ, который я создал. Я пробовал несколько разных подходов, но, похоже, столкнулся с проблемами при расширении аргументов (Действительноне хочу пробовать \expandafter
снова), так как не могу понять, как вызвать данные из файла, не используя макрос в качестве аргумента для моего макроса TiKZ.
МВЭ:
\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}
Я использую Overleaf, поэтому я гибок в отношении пакетов/подходов. У меня также есть полный контроль над вводом, так что если есть более простой способ, чем использование .csv, я был бы очень рад использовать его.
решение1
Пакет csvsimple
может сделать это довольно просто. :) Я также добавил предложение кода TikZ, сделанное вкот Шрёдингеракомментарий к вашему вопросу.
\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}