내가 만든 TiKZ 매크로에서 인수로 사용하고 싶은 숫자가 포함된 .csv 파일이 있습니다. 여러 가지 다른 접근 방식을 시도했지만 인수 확장에 문제가 있는 것 같습니다(정말다시 시도하고 싶지 않음 \expandafter
), 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}
저는 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}