我正在尝试从 csv 文件导入数据,其中图例条目自动从 csv 文件的标题中获取。这些图例条目包含 LaTeX 数学代码。
% used PGFPlots v1.16
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\usepackage{siunitx}
\usepackage{filecontents}
\begin{filecontents}{testdata.dat}
,Distance ($\mathrm{ABC}=\SI{1}{\second}$),Velocity,Something
0,0,1,0.2
1,1,1,0.3
1.5,1.999,1,0.4
2,2,0,0.4
3,2,0,0.5
\end{filecontents}
\newcommand{\plotfile}[1]{
\pgfplotstableread[col sep=comma]{#1}{\table}
\pgfplotstablegetcolsof{\table}
\pgfmathtruncatemacro\numberofcols{\pgfplotsretval-1}
\pgfplotsinvokeforeach{1,...,\numberofcols}{
\pgfplotstablegetcolumnnamebyindex{##1}\of{\table}\to{\colname}
\addplot table [y index=##1] {\table};
\addlegendentryexpanded{\colname}
}
}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\plotfile{testdata.dat}
\end{axis}
\end{tikzpicture}
\end{document}
导致错误:
! Undefined control sequence.
\GenericError ...
#4 \errhelp \@err@ ...
l.525 \plotfile{testdata.dat}
^^M
当我从 csv 中删除 LaTeX 命令(我可以保留数学美元符号)并尝试使用 手动设置图例时\legend{Distance ($\mathrm{ABC}=\SI{1}{\second}$), Velocity, Something}
,它可以起作用。
如何从 csv 导入列名/图例条目(包括 LaTeX 命令)?