2

I want to color a row (column) from a cell with special content, e.g. 'x'.

I tried to use
every nth row={\rememberrow}{before row=\rowcolor{orange}}, % WORKS NOT!
in the solution.

\xdef\remembercol{\pgfplotstablecol}%
\xdef\rememberrow{\pgfplotstablerow}%

expands correctly after the pgfplotstabletypeset, but not while the typeset.

What do I have to do?

\documentclass[]{article}
\usepackage{colortbl}
\usepackage{pgfplotstable}
\pgfplotsset{compat=newest}
\pgfplotstableset{string type, col sep=comma, header=false}
\pgfplotstableread[]{
a, b, c
d, e, f
g, x, i
j, k, l
}\mytable

\def\literalx{x}

\begin{document} \pgfplotstabletypeset[ postproc cell content/.code={% \def\temp{#1}% \ifx\temp\literalx \xdef\remembercol{\pgfplotstablecol}% \xdef\rememberrow{\pgfplotstablerow}% \fi }, %every nth row={\rememberrow}{before row=\rowcolor{orange}}, % WORKS NOT! ]{\mytable}

\textbf{Works:} x is in row no.~\rememberrow\ and column no.~\remembercol. \end{document}

cis
  • 8,073
  • 1
  • 16
  • 45

1 Answers1

1

With savebox and newcommand it works:

enter image description here

\documentclass[]{article}
\usepackage{colortbl}
\usepackage{pgfplotstable}
\pgfplotsset{compat=newest}

\pgfplotstableset{string type, col sep=comma, header=false} \pgfplotstableread[]{ a, b, c d, e, f g, x, i j, k, l }\mytable

\colorlet{CellColor}{red} \colorlet{RowColor}{orange} \colorlet{ColColor}{pink}

\def\literalx{x} \begin{document}

\pgfplotstableset{ myhighlights/.style={} } \newcommand\MyTable{% \pgfplotstabletypeset[myhighlights, postproc cell content/.code={% \def\temp{##1}% <--- ! '##', not '#' \ifx\temp\literalx \xdef\remembercol{\pgfplotstablecol}% \xdef\rememberrow{\pgfplotstablerow}% \fi }, ]{\mytable}% }

\newsavebox{\Mybox} \savebox{\Mybox}{\MyTable}

\section{Raw Table} \usebox{\Mybox}

\section{Read out row and column -- works} x is in row no.~\rememberrow\ and column no.~\remembercol.

\section{Typeset highlighted Table -- works as well} \pgfplotstableset{myhighlights/.style={%% ======= % Highlight Row: every row no \rememberrow/.style={ before row={\rowcolor{RowColor}} }, % Highlight Column: every col no \remembercol/.style={ column type/.add={>{\columncolor{ColColor}}}{} }, % Highlight Cell every row no \rememberrow\space column no \remembercol/.style={
@cell content/.add={\cellcolor{CellColor}}{}, },% <--- ! '\space' }%% ======= } \MyTable \end{document}

cis
  • 8,073
  • 1
  • 16
  • 45