1

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}
0

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}




    
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.