Pgftables:如何自动添加行标题?

Pgftables:如何自动添加行标题?

以下是 MWE:

\documentclass{article}
\usepackage{pgfplotstable}
\begin{document}

Here is the multiplication table in roman numeral. 

\pgfplotstabletypeset[string type]{
  i   ii   iii
  ii  iv   vi 
  iii vi   ix 
}

I would love it to include the column headers:
\begin{quote}
 1 \quad 2 \quad 3 
\end{quote}
and the same row headers. 

But, I have no idea how to achieve this efficiently with \verb|pgfplotstable|.
I do not want the solution to rely on the number being consecutive; 
ideally, it would take a list such as 
\begin{quote}
\begin{verbatim}
  \def\ROMANS{I,II,III}
\end{verbatim}
\end{quote}
\end{document}

示例输出

答案1

我希望我理解了你的问题,这样就可以归结为钥匙它获取列名列表并将其分配给单个列:

\pgfplotstable[display column names={A,B,C}]{...}

如果是,以下示例会执行此操作。它定义了一个采用列名列表的键。请注意,它包含取自另一个 tex.sx 答案的代码@Villemoes我对 tex 了解甚少,无法判断它是否正确或是否适用于所有情况。因此我无法提供任何保证:

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

% taken from one comment of Villemoes in
% https://tex.stackexchange.com/a/15263/3061
\def\pgfglobalkeys#1{\begingroup \ifnum\the\globaldefs>0\relax \else \globaldefs=1\fi \pgfkeys{#1}\endgroup}

% define the new key
\pgfplotstableset{display column names/.code={
        \foreach[count=\n from 0] \x in {#1} {
            \pgfglobalkeys{/pgfplots/table/display columns/\n/.estyle={column name=\x}}
        }
    }
}

\begin{document}

\pgfplotstabletypeset[string type, header=false, display column names={A,B,C}]{ %
  i   ii   iii
  ii  iv   vi 
  iii vi   ix 
}

\end{document}

的键代码column names简单易懂。它将使用 foreach 循环遍历给定的列表并设置列名。问题是主体foreach被封装在一个组中,因此对宏、计数器或键的任何更改都是本地的。因此,在我们退出循环后,所有键都会重置。因此,我从 Villemoes 那里拿了\pgfglobalkeys。然后它就起作用了 :)。

在此处输入图片描述

相关内容