我对几个数据文件使用相同的表格格式,因此我编写了一个名为的宏\tableMacro
。
问题是:我需要在不同的表中包含不同的列。我想参数化columns={}
的属性\pgfplotstabletypeset
。
\documentclass{article}
\usepackage{pgfplotstable}
% #1 name of data file
% #2 name of columns
\newcommand{\tableMacro}[2]{
\pgfplotstableread{#1}\table
\pgfplotstabletypeset[columns={ColA, ColB}]\table % This works, but
%\pgfplotstabletypeset[columns={#2}]\table % I need this line to work
}
\begin{document}
\tableMacro{table.txt}{ColA, ColB} % This works.
\def\colnames{ColA, ColB}
\tableMacro{table.txt}{\colnames} % However, I need this type of parameter passing
% since there are several tables that
% include same set of columns
\end{document}
内容table.txt
:
ColA ColB
2 23.2
5 67.8
3 11.4
答案1
正如 Marc 所说,宏的内容在输入到键之前需要进行扩展。一个简单的方法是使用以下机制/.expand once
:pgfkeys
如果你将该字符串添加到columns
键中,则该参数将在解释之前进行扩展一次:
\documentclass{article}
\usepackage{pgfplotstable}
\begin{filecontents}{table.txt}
ColA ColB
2 23.2
5 67.8
3 11.4
\end{filecontents}
\newcommand{\tableMacro}[2]{
\pgfplotstableread{#1}\table
\pgfplotstabletypeset[columns/.expand once={#2}]\table
}
\begin{document}
\tableMacro{table.txt}{ColA, ColB} % This works.
\def\colnames{ColB,ColA,ColB}
\tableMacro{table.txt}{\colnames} % However, I need this type of parameter passing
% since there are several tables that
% include same set of columns
\end{document}