来自 csv 导入的 pgfplots 图例条目中的 LaTeX 命令

来自 csv 导入的 pgfplots 图例条目中的 LaTeX 命令

我正在尝试从 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 命令)?

相关内容