Überarbeitungsverlauf[Zurück]
Klicke auf Einblenden/Ausblenden von Überarbeitungen 2

18 Feb '19, 09:27

Henri's gravatar image

Henri
15.7k133943

Wenn ich mir mit `\show\pgfplotstablename` die Definition von `\pgfplotstablename` ansehe, dann steht im Log <code><pre>&gt; \\pgfplotstablename=macro: -&gt;\\TestTable .</pre></code> Das heißt `\pgfplotstablename` wird nach einem Expansionschritt zu `\TestTable`. Nun geht es nur noch darum diesem Expansionsschritt irgendwie zu forcieren. Dies kann man entweder mit `\edef` or in LuaTeX und ab TeX Live 2019 mit `\expanded` machen. \expanded{% \noexpand\pgfplotstablegetelem{0}{[index]1}\noexpand\of\expandafter\noexpand\pgfplotstablename }% Das vorangestellte `\noexpand` vor jedem Makro verhindert die Expansion. Die Konstruktion `\expandafter\noexpand\pgfplotstablename` führt dazu, dass TeX zunächst über `\noexpand` drüber springt und `\pgfplotstablename` einmalig expandiert. Danach steht dann dort `\noexpand\TestTable` und alles ist gut. \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 \show\pgfplotstablename \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} [![alt text][1]][1] [1]: https://texwelt.de/wissen/upfiles/test_474.png
Klicke auf Einblenden/Ausblenden von Überarbeitungen 1

18 Feb '19, 07:41

Henri's gravatar image

Henri
15.7k133943

Wenn ich mir mit `\show\pgfplotstablename` die Definition von `\pgfplotstablename` ansehe, dann steht im Log <code><pre>&gt; \\pgfplotstablename=macro: -&gt;\\TestTable .</pre></code> Das heißt `\pgfplotstablename` wird nach einem Expansionschritt zu `\TestTable`. Nun geht es nur noch darum diesem Expansionsschritt irgendwie zu forcieren. Dies kann man entweder mit `\edef` or in LuaTeX und ab TeX Live 2019 mit `\expanded` machen. \expanded{% \noexpand\pgfplotstablegetelem{0}{[index]1}\noexpand\of\expandafter\noexpand\pgfplotstablename }% Das vorangestellte `\noexpand` vor jedem Makro verhindert die Expansion. Die Konstruktion `\expandafter\noexpand\pgfplotstablename` führt dazu, dass TeX zunächst über `\noexpand` drüber springt und `\pgfplotstablename` einmalig expandiert. Danach steht dann dort `\noexpand\TestTable` und alles ist gut. \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 \show\pgfplotstablename \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} [![alt text][1]][1] [1]: https://texwelt.de/wissen/upfiles/test_474.png