如何使用 pgfplotstable 自动替换标题 CSV 单元格中的字符串模式?

如何使用 pgfplotstable 自动替换标题 CSV 单元格中的字符串模式?

在以下 csv 文件示例中,我想在导入时自动替换所有标题单元格中的字符串模式pgfplotstable

\begin{filecontents*}{sample.csv}
    parameter,cubic parameter,revised parameter,"$quartic_{parameter}$"
    1 ,13 ,34 ,5
    2 ,3  ,7  ,11
\end{filecontents*}

我想替换模式“范围“ 经过 ”参数“在所有标题单元格中。

我尝试了这个:

\documentclass{article}
\usepackage{pgfplotstable}
\usepackage{filecontents}

\begin{filecontents*}{sample.csv}
    parameter,cubic parameter,revised parameter,"$quartic_{parameter}$"
    1 ,13 ,34 ,5
    2 ,3  ,7  ,11
\end{filecontents*}

\begin{document}
        \pgfplotstabletypeset[col sep=comma,row sep=newline,ignore chars={"},string replace*={parameter}{param}]{sample.csv}%
\end{document}

我获得了这个结果(标题单元格中没有预期的变化): 在此处输入图片描述

我希望得到这样的结果,即所有“范围“单词已被字符串替换”参数“即使在“数学模式”(最后一列标题)中:

在此处输入图片描述

有没有办法在所有标题单元格中自动执行此操作pgfplotstable(我更愿意使用pgfplotstable但我也接受其他解决方案)?

答案1

您可以使用包选项assign column namepgfplotstable以下
是两种备选解决方案。

拳头解决方案
\mpath使用从这里获取的 宏Mico 的回答(注意,这应该用LuaLaTeX编译):

\documentclass{article}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.18}

% From https://tex.stackexchange.com/a/604009/101651:
\newcommand\mpath[1]{\directlua{%
    tex.sprint(( string.gsub( "#1" , "parameter" , "param" )) )}}
   
\usepackage{filecontents}
\begin{filecontents*}{sample.csv}
    parameter,cubic parameter,revised parameter,"$quartic_{parameter}$"
    1 ,13 ,34 ,5
    2 ,3  ,7  ,11
\end{filecontents*}

\begin{document}
    \pgfplotstabletypeset[col sep=comma, row sep=newline,  ignore chars={"},
    header=has colnames,
    assign column name/.style={
            /pgfplots/table/column name={\mpath{#1}}},
    ]{sample.csv}
\end{document}

在此处输入图片描述

第二种解决方案
你确定你喜欢用斜体写的最后一列标题吗?
下面这样写不是更好吗?
下面的代码使用\StrSubstitutefrom包来处理字符串标题。数学模式下的列标题使用包的xstring选项明确修改。 它可以用普通的 pdfLaTeX 编译。columnspgfplotstable

\documentclass{article}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.18}
\usepackage{xstring}
\usepackage{amsmath}
   
\usepackage{filecontents}

\begin{filecontents*}{sample.csv}
    parameter,cubic parameter,revised parameter,"$quartic_{parameter}$"
    1 ,13 ,34 ,5
    2 ,3  ,7  ,11
\end{filecontents*}

\begin{document}
    \pgfplotstabletypeset[col sep=comma, row sep=newline,  ignore chars={"},
    header=has colnames,
    assign column name/.style={
        /pgfplots/table/column name={\StrSubstitute{#1}{parameter}{param}}},
    columns/$quartic_{parameter}$/.style={column name={quartic$_{\text{param}}$}},
    ]{sample.csv}
\end{document}

在此处输入图片描述

相关内容