Xpost: https://tex.stackexchange.com/questions/559044/pgfplotstable-how-to-use-the-read-out-row-column-value-for-styles


Ich möchte eine Zeile (Spalte) highlighten, sofern sie speziellen Inhalt enthält, z.B. 'x'.

Ich habe
every nth row={\rememberrow}{before row=\rowcolor{orange}}, % WORKS NOT!
aus der Lösung versucht.

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

expandiert korrekt nach pgfplotstabletypeset, aber nicht währenddessen.

Wie kann man das lösen?

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

gefragt 18 Aug '20, 15:49

cis's gravatar image

cis
9.5k94459491
Akzeptiert-Rate: 29%


Mit savebox und newcommand:

PS: Falls es jmd. einfacher lösen kann, gerne.

alt text

\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}
%\def\remembercol{-1}
%\def\rememberrow{-1}
\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}%
% Highlight Cell: 
    \pgfkeysalso{   @cell content/.add={\cellcolor{CellColor}}{}   }%
  \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:
columns/\remembercol/.style={
column type/.add={>{\columncolor{ColColor}}}{}       }, 
}%% =======
}
\MyTable
\end{document}
Permanenter link

beantwortet 18 Aug '20, 17:20

cis's gravatar image

cis
9.5k94459491
Akzeptiert-Rate: 29%

bearbeitet 18 Aug '20, 17:28

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×39
×7

gestellte Frage: 18 Aug '20, 15:49

Frage wurde gesehen: 4,245 Mal

zuletzt geändert: 18 Aug '20, 17:28