On Sun, 2 Sep 2012, Wolfgang Schuster wrote:
Am 02.09.2012 um 17:59 schrieb Aditya Mahajan <adit...@umich.edu>:
Hi,
On Edward Tufte's website, there is a discussion on zebra coloring in
tables[1]. One of the suggestion is to add a horizontal rule after every third
line or shade three lines with one background color and the remaining three
with another background color.
Is there an easy way to do this with natural TABLEs? I can do something like:
\setupTABLE[row][1,2,3][background=color, backgroundcolor=gray]
\setupTABLE[row][7,8,9][background=color, backgroundcolor=gray]
but it requires knowing the number of lines in advance.
Aditya
[1]: http://www.edwardtufte.com/bboard/q-and-a-fetch-msg?msg_id=0001IV
Natural tables have “odd” and “even” keywords for \setupTABLE but none
in the way you like it.
Well, I can always change what odd and even means :) (I also realized that
odd and even are just dummy values. I can change them to anything, and can
in fact even turn \v!oddeven to a switch statement that returns multiple
values)
\unprotect
\def\redefineoddeven% HACK
{\def\v!oddeven##1% Return odd if in set 1-3, 7-9, etc. and even otherwise
{\ctxcommand{doifelse(math.mod(##1-1,6) < 3)}\v!odd\v!even}}
\protect
\startsetups zebra:three
\redefineoddeven
\setupTABLE[frame=off,background=color]
\setupTABLE[row][odd][backgroundcolor=blue]
\setupTABLE[row][even][backgroundcolor=red]
\stopsetups
\starttext
\startTABLE[setups={zebra:three}]
\NC A \NC B \NC C \NC \NR
\NC A \NC B \NC C \NC \NR
\NC A \NC B \NC C \NC \NR
\NC A \NC B \NC C \NC \NR
\NC A \NC B \NC C \NC \NR
\NC A \NC B \NC C \NC \NR
\NC A \NC B \NC C \NC \NR
\NC A \NC B \NC C \NC \NR
\NC A \NC B \NC C \NC \NR
\NC A \NC B \NC C \NC \NR
\NC A \NC B \NC C \NC \NR
\stopTABLE
\stoptext
What I would do is to use a overlay in combination with metapost to
create the background but there is no global register to access the
current column/row of a cell, e.g. \currenttablecolumn (this name is
already used by tables) and \currenttablerow.
Thanks for the hint. It is relatively easy to access the local counter for
a cell, and changing background colors dependon the current row works
well.
\defineconversion
[triadcolors]
[blue,blue,blue,red,red,red]
\startsetups zebra:three
\setupTABLE[frame=off,background=color]
\setupTABLE[row][backgroundcolor={\convertnumber{triadcolors}{\getvalue{m_tabl_ntb_positive_row}}}]
\stopsetups
If I need rules, I guess I can explicitly check for the value of \m_tabl_ntb_postive_pow
inside an overlay.
Thanks,
Aditya
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the
Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage : http://www.pragma-ade.nl / http://tex.aanhet.net
archive : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___________________________________________________________________________________