在以下 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 name
。pgfplotstable
以下
是两种备选解决方案。
拳头解决方案\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}
第二种解决方案
你确定你喜欢用斜体写的最后一列标题吗?
下面这样写不是更好吗?
下面的代码使用\StrSubstitute
from包来处理字符串标题。数学模式下的列标题使用包的xstring
选项明确修改。 它可以用普通的 pdfLaTeX 编译。columns
pgfplotstable
\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}