pgfplotstable: शैलियों के लिए पढ़ी गई पंक्ति- (स्तंभ-) मान का उपयोग कैसे करें

Aug 17 2020

मैं विशेष सामग्री वाले सेल से एक पंक्ति (कॉलम) को रंगना चाहता हूं, जैसे 'x'।

मैंने समाधान
every nth row={\rememberrow}{before row=\rowcolor{orange}}, % WORKS NOT!
में उपयोग करने की कोशिश की ।

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

के बाद सही ढंग से फैलता है pgfplotstabletypeset, लेकिन टाइपसेट के दौरान नहीं।

मुझे क्या करना होगा?

\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 Aug 18 2020 at 15:19

Savebox और newcommand के साथ यह काम करता है:

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