pgfplotstable:如何使用“pgfplotstablename”

pgfplotstable:如何使用“pgfplotstablename”

\pgfplotstablename在这种情况下我该如何使用

\pgfplotstablegetelem{0}{[index]1}\of\TestTable代替\TestTable

在此处输入图片描述

梅威瑟:

\documentclass[border=5pt]{standalone}
\usepackage{pgfplotstable}

\pgfplotstableread[header=false]{
A   B
1   2
0   2
1   0
0   2
0   2
1   0
}\TestTable

\begin{document}

\pgfplotstabletypeset[string type,
every head row/.style={output empty row},% no header 
% works  funny (with speech mark...)
columns/0/.style = {
string replace={0}{\pgfplotstablename\pgfplotsretval},
},
% works not
columns/1/.style = {
string replace={0}{%\pgfplotstablename % \pgfplotsretval
\pgfplotstablegetelem{0}{[index]1}\of\TestTable %<-- use tablename here
\pgfplotsretval
}
},
]{\TestTable}


%Test:  \pgfplotstablegetelem{0}{[index]0}\of\TestTable \pgfplotsretval
%\pgfplotstablegetelem{0}{[index]1}\of\TestTable \pgfplotsretval
\end{document}

答案1

交叉发布我在 TeXwelt.de 上的回答以下。


\pgfplotstablename当我检查使用的定义时\show\pgfplotstablename,我在日志中发现

> \pgfplotstablename=macro:
->\TestTable .

这意味着一步就\pgfplotstablename可以将 展开为\TestTable。现在我们只需要找出如何强制执行这一步展开。这可以\edef在 LuaTeX 中使用 或 来完成,也可以从 TeX Live 2019 开始使用\expanded

\expanded{%
  \noexpand\pgfplotstablegetelem{0}{[index]1}\noexpand\of\expandafter\noexpand\pgfplotstablename
}%

\noexpand每个宏前面的引线都会抑制扩展。该构造\expandafter\noexpand\pgfplotstablename导致 TeX 跳过\noexpand并扩展\pgfplotstablename一次。之后我们就有了\noexpand\TestTable,一切都很好。

\documentclass[border=5pt]{standalone}
\usepackage{pgfplotstable}

\pgfplotstableread[header=false]{
A   B
1   2
0   2
1   0
0   2
0   2
1   0
}\TestTable

\begin{document}

\pgfplotstabletypeset[string type,
every head row/.style={output empty row},% keinen header anzeigen
% works  funny (with speech mark...)
columns/0/.style = {
  string replace={0}{\pgfplotstablename\pgfplotsretval},
},
% works not
columns/1/.style = {
  string replace={0}{%\pgfplotstablename % \pgfplotsretval
    \expanded{%
      \noexpand\pgfplotstablegetelem{0}{[index]1}\noexpand\of\expandafter\noexpand\pgfplotstablename
    }%
    \pgfplotsretval
  }
},
]{\TestTable}

% Test:  \pgfplotstablegetelem{0}{[index]0}\of\TestTable \pgfplotsretval
% \pgfplotstablegetelem{0}{[index]1}\of\TestTable \pgfplotsretval
\end{document}

在此处输入图片描述

相关内容