以下是 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
。然后它就起作用了 :)。