ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* TABLE 'last line' tag?
@ 2006-04-20  5:55 Johannes Graumann
  2006-04-20  6:26 ` nico
  0 siblings, 1 reply; 14+ messages in thread
From: Johannes Graumann @ 2006-04-20  5:55 UTC (permalink / raw)


Hello,

When formating tables the first row (top of the header) is easily formated
by using for example:
        \setupTABLE[row][1][rulethickness=0.90pt,topframe=on]

I was wondering whether there's an equivalent for specifically addressing
the LAST row in a table? Something along the lines of
        \setupTABLE[row][last][rulethickness=0.90pt,topframe=on]
        \setupTABLE[row][-1][rulethickness=0.90pt,topframe=on]%python-like
which both don't work ...

Thanks for any hint, Joh

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: TABLE 'last line' tag?
  2006-04-20  5:55 TABLE 'last line' tag? Johannes Graumann
@ 2006-04-20  6:26 ` nico
  2006-04-20 14:59   ` Johannes Graumann
  0 siblings, 1 reply; 14+ messages in thread
From: nico @ 2006-04-20  6:26 UTC (permalink / raw)


On Wed, 19 Apr 2006 22:55:23 -0700, Johannes Graumann  
<johannes_graumann@web.de> wrote:

> Hello,
>
> When formating tables the first row (top of the header) is easily  
> formated
> by using for example:
>         \setupTABLE[row][1][rulethickness=0.90pt,topframe=on]
>
> I was wondering whether there's an equivalent for specifically addressing
> the LAST row in a table? Something along the lines of
>         \setupTABLE[row][last][rulethickness=0.90pt,topframe=on]
>         \setupTABLE[row][-1][rulethickness=0.90pt,topframe=on]%python-like
> which both don't work ...

Do you want to do this?
\setupTABLE[row][last][rulethickness=0.90pt,bottomframe=on]

Regards,
BG

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: TABLE 'last line' tag?
  2006-04-20  6:26 ` nico
@ 2006-04-20 14:59   ` Johannes Graumann
  2006-04-20 16:14     ` Peter Rolf
  2006-04-20 16:45     ` Peter Münster
  0 siblings, 2 replies; 14+ messages in thread
From: Johannes Graumann @ 2006-04-20 14:59 UTC (permalink / raw)


nico wrote:

> Do you want to do this?
> \setupTABLE[row][last][rulethickness=0.90pt,bottomframe=on]

Yes, that's what I want, but it doesn't work for me.

Joh

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: TABLE 'last line' tag?
  2006-04-20 14:59   ` Johannes Graumann
@ 2006-04-20 16:14     ` Peter Rolf
  2006-04-20 16:45     ` Peter Münster
  1 sibling, 0 replies; 14+ messages in thread
From: Peter Rolf @ 2006-04-20 16:14 UTC (permalink / raw)


Johannes Graumann wrote:
> nico wrote:
> 
>> Do you want to do this?
>> \setupTABLE[row][last][rulethickness=0.90pt,bottomframe=on]
> 
\setupTABLE[r][last][....]

Use only the short forms (r=row and c=column) and it should work.
I had to look in an old table, where I had the same problems (I guess).
Should be wikified..

Greets, Peter

> Yes, that's what I want, but it doesn't work for me.
> 
> Joh
> 
> _______________________________________________
> ntg-context mailing list
> ntg-context@ntg.nl
> http://www.ntg.nl/mailman/listinfo/ntg-context
> 
> 

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: TABLE 'last line' tag?
  2006-04-20 14:59   ` Johannes Graumann
  2006-04-20 16:14     ` Peter Rolf
@ 2006-04-20 16:45     ` Peter Münster
  2006-04-20 16:50       ` Taco Hoekwater
  1 sibling, 1 reply; 14+ messages in thread
From: Peter Münster @ 2006-04-20 16:45 UTC (permalink / raw)


On Thu, 20 Apr 2006, Johannes Graumann wrote:

> nico wrote:
> 
> > Do you want to do this?
> > \setupTABLE[row][last][rulethickness=0.90pt,bottomframe=on]
> 
> Yes, that's what I want, but it doesn't work for me.

Could you send a minimal example?
This works here:

\starttext
\setupTABLE[frame=off]
\setupTABLE[row][last][rulethickness=0.90pt,bottomframe=on]
\bTABLE
\bTR\bTD bla \eTD\bTD bla \eTD\eTR
\bTR\bTD bla \eTD\bTD bla \eTD\eTR
\eTABLE
\stoptext

Cheers, Peter

-- 
http://pmrb.free.fr/contact/

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: TABLE 'last line' tag?
  2006-04-20 16:45     ` Peter Münster
@ 2006-04-20 16:50       ` Taco Hoekwater
  2006-04-20 18:29         ` Johannes Graumann
  0 siblings, 1 reply; 14+ messages in thread
From: Taco Hoekwater @ 2006-04-20 16:50 UTC (permalink / raw)


Peter Münster wrote:
> On Thu, 20 Apr 2006, Johannes Graumann wrote:
> 
> 
>>nico wrote:
>>
>>
>>>Do you want to do this?
>>>\setupTABLE[row][last][rulethickness=0.90pt,bottomframe=on]
>>
>>Yes, that's what I want, but it doesn't work for me.
> 
> Could you send a minimal example?
> This works here:

Same for me. Perhaps it is a grouping issue? This fails:

  \setupTABLE[frame=off]
  {\setupTABLE[row][last][rulethickness=0.90pt,bottomframe=on]}
  \bTABLE ... \eTABLE

Taco

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: TABLE 'last line' tag?
  2006-04-20 16:50       ` Taco Hoekwater
@ 2006-04-20 18:29         ` Johannes Graumann
  2006-04-20 19:05           ` nico
  0 siblings, 1 reply; 14+ messages in thread
From: Johannes Graumann @ 2006-04-20 18:29 UTC (permalink / raw)


Figured out what's going on and would appreciate some advice on the issue:

My actual code interprets XML and reads:

\defineXMLnested
  [splittable]
  {
    \defineXMLsave[caption]
    \defineXMLsave[header]
    \defineXMLsave[body]
    \defineXMLsave[footer]
  }
  {
    \splitfloat
      {\placetable[\XMLpar{table}{location}{here}][\XMLpar{table}{label
{unknown}]{\XMLflush{caption}}}
      {
        \setupTABLE[row][1][rulethickness=0.30pt,topframe=on]
        \setupTABLE[row][last][rulethickness=0.30pt,bottomframe=on]
       
\bTABLE[frame=off,split=repeat,splitmethod=b,distance=7.5pt,style={\switchtobodyfont[small]\setupinterlinespace[line=2.8ex]}]
          \bTABLEhead\XMLflush{header}\eTABLEhead
          \bTABLEbody\XMLflush{body}\eTABLEbody
          \bTABLEfoot\XMLflush{footer}\eTABLEfoot
        \eTABLE
      }
  }

\defineXMLnested
  [tr]
  [bottomframe=]
  {\expanded{\bTR[bottomframe=\XMLop{bottomframe}]}}
  {\eTR}

What's happening here is that the the 'tr' bottomframe statement (which I
need for formating) overrides the '\setupTABLE[row]' bit. Is there any way
to make 'tr's bottomframe-statement be ineffectual in case of being the
last raw?

Joh

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: TABLE 'last line' tag?
  2006-04-20 18:29         ` Johannes Graumann
@ 2006-04-20 19:05           ` nico
  2006-04-21  0:27             ` Johannes Graumann
  0 siblings, 1 reply; 14+ messages in thread
From: nico @ 2006-04-20 19:05 UTC (permalink / raw)


On Thu, 20 Apr 2006 11:29:17 -0700, Johannes Graumann  
<johannes_graumann@web.de> wrote:

> Figured out what's going on and would appreciate some advice on the  
> issue: [...]

> \defineXMLnested
>   [tr]
>   [bottomframe=]
>   {\expanded{\bTR[bottomframe=\XMLop{bottomframe}]}}
>   {\eTR}
>
> What's happening here is that the the 'tr' bottomframe statement (which I
> need for formating) overrides the '\setupTABLE[row]' bit. Is there any  
> way
> to make 'tr's bottomframe-statement be ineffectual in case of being the
> last raw?

Why don't you test if the attribute is set before applying it to the TR?  
You see the problem on the last row, but the fact is that you force the  
bottomframe clear for every row (which is dirty IMHO).

Regards,
BG

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: TABLE 'last line' tag?
  2006-04-20 19:05           ` nico
@ 2006-04-21  0:27             ` Johannes Graumann
  2006-04-21  7:07               ` nico
  0 siblings, 1 reply; 14+ messages in thread
From: Johannes Graumann @ 2006-04-21  0:27 UTC (permalink / raw)


nico wrote:

> Why don't you test if the attribute is set before applying it to the TR?
> You see the problem on the last row, but the fact is that you force the
> bottomframe clear for every row (which is dirty IMHO).
It's not that easy, since the bottomframe - once set - is persistent ... so
every row underneath my header (e.g.) will have 'bottomframe=on' set. 

So if I set the bottomframe to separate header from body, I have to clear it
from the next line (at least) in order to keep the body bottomframe
free ... and than I run into trouble with the last row, which is body, but
where I explicitly WANT the bottomframe.

Am I not getting something here?

Joh

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: TABLE 'last line' tag?
  2006-04-21  0:27             ` Johannes Graumann
@ 2006-04-21  7:07               ` nico
  2006-04-21 19:44                 ` Johannes Graumann
  2006-04-21 19:51                 ` Hans Hagen
  0 siblings, 2 replies; 14+ messages in thread
From: nico @ 2006-04-21  7:07 UTC (permalink / raw)


On Thu, 20 Apr 2006 17:27:50 -0700, Johannes Graumann  
<johannes_graumann@web.de> wrote:

> nico wrote:
>
>> Why don't you test if the attribute is set before applying it to the TR?
>> You see the problem on the last row, but the fact is that you force the
>> bottomframe clear for every row (which is dirty IMHO).
> It's not that easy, since the bottomframe - once set - is persistent ...  
> so
> every row underneath my header (e.g.) will have 'bottomframe=on' set.

No, the options are local to the current level where it is set. If  
bottomframe is on for one row, it won't set bottomframe to the next rows.  
In the following example, only two rows (the header and another one in the  
body) have local bottomframe on, and the last row bottomframe is done with  
table setup:

\starttext
\setupTABLE[frame=off]
\setupTABLE[row][last][rulethickness=0.90pt,bottomframe=on]
\bTABLE
\bTABLEhead
\bTR[bottomframe=on]\bTH a \eTH\bTH b \eTH\eTR
\eTABLEhead
\bTABLEbody
\bTR\bTD bla \eTD\bTD bla \eTD\eTR
\bTR\bTD bla \eTD\bTD bla \eTD\eTR
\bTR\bTD bla \eTD\bTD bla \eTD\eTR
\bTR[bottomframe=on]\bTD bla \eTD\bTD bla \eTD\eTR
\bTR\bTD bla \eTD\bTD bla \eTD\eTR
\bTR\bTD bla \eTD\bTD bla \eTD\eTR
\eTABLEbody
\eTABLE
\stoptext

You can also put bottomframe only for a cell with  
bTD[bottomframe=on]...\eTD.

Regards,
BG

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: TABLE 'last line' tag?
  2006-04-21  7:07               ` nico
@ 2006-04-21 19:44                 ` Johannes Graumann
  2006-04-21 20:57                   ` nico
  2006-04-21 19:51                 ` Hans Hagen
  1 sibling, 1 reply; 14+ messages in thread
From: Johannes Graumann @ 2006-04-21 19:44 UTC (permalink / raw)


nico wrote:

> On Thu, 20 Apr 2006 17:27:50 -0700, Johannes Graumann
> <johannes_graumann@web.de> wrote:
> 
>> nico wrote:
>>
>>> Why don't you test if the attribute is set before applying it to the TR?
>>> You see the problem on the last row, but the fact is that you force the
>>> bottomframe clear for every row (which is dirty IMHO).
>> It's not that easy, since the bottomframe - once set - is persistent ...
>> so
>> every row underneath my header (e.g.) will have 'bottomframe=on' set.
> 
> No, the options are local to the current level where it is set. If
> bottomframe is on for one row, it won't set bottomframe to the next rows.
> In the following example, only two rows (the header and another one in the
> body) have local bottomframe on, and the last row bottomframe is done with
> table setup:

The persistence issue is XML specific, I believe and therefore does not
apply to your code example.

Joh

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: TABLE 'last line' tag?
  2006-04-21  7:07               ` nico
  2006-04-21 19:44                 ` Johannes Graumann
@ 2006-04-21 19:51                 ` Hans Hagen
  1 sibling, 0 replies; 14+ messages in thread
From: Hans Hagen @ 2006-04-21 19:51 UTC (permalink / raw)


nico wrote:
> On Thu, 20 Apr 2006 17:27:50 -0700, Johannes Graumann  
> <johannes_graumann@web.de> wrote:
>
>   
>> nico wrote:
>>
>>     
>>> Why don't you test if the attribute is set before applying it to the TR?
>>> You see the problem on the last row, but the fact is that you force the
>>> bottomframe clear for every row (which is dirty IMHO).
>>>       
>> It's not that easy, since the bottomframe - once set - is persistent ...  
>> so
>> every row underneath my header (e.g.) will have 'bottomframe=on' set.
>>     
>
> No, the options are local to the current level where it is set. If  
> bottomframe is on for one row, it won't set bottomframe to the next rows.  
> In the following example, only two rows (the header and another one in the  
> body) have local bottomframe on, and the last row bottomframe is done with  
> table setup:
>
> \starttext
> \setupTABLE[frame=off]
> \setupTABLE[row][last][rulethickness=0.90pt,bottomframe=on]
> \bTABLE
> \bTABLEhead
> \bTR[bottomframe=on]\bTH a \eTH\bTH b \eTH\eTR
> \eTABLEhead
> \bTABLEbody
> \bTR\bTD bla \eTD\bTD bla \eTD\eTR
> \bTR\bTD bla \eTD\bTD bla \eTD\eTR
> \bTR\bTD bla \eTD\bTD bla \eTD\eTR
> \bTR[bottomframe=on]\bTD bla \eTD\bTD bla \eTD\eTR
> \bTR\bTD bla \eTD\bTD bla \eTD\eTR
> \bTR\bTD bla \eTD\bTD bla \eTD\eTR
> \eTABLEbody
> \eTABLE
> \stoptext
>
> You can also put bottomframe only for a cell with  
> bTD[bottomframe=on]...\eTD.
>   

the following patch will permit negative numbers (remove empty lines due 
to mail mess up)

\def\setupTBLcell#1#2% cell over col over row
  {\setupTBLsection % already forgotten
\edef\positiverow{\number#1}%
\edef\positivecol{\number#2}%
\scratchcounter-\maximumrow\advance\scratchcounter#1\advance\scratchcounter\minusone
\edef\negativerow{\number\scratchcounter}%
\scratchcounter-\maximumcol\advance\scratchcounter#2\advance\scratchcounter\minusone
\edef\negativecol{\number\scratchcounter}%
   \getvalue{\@@tblprefix\v!each\v!each}%
   \getvalue{\@@tblprefix\c!y\v!each}%
   \getvalue{\@@tblprefix\c!x\v!each}%
   \getvalue{\@@tblprefix\c!y\v!oddeven\positiverow}%
   \getvalue{\@@tblprefix\c!x\v!oddeven\positivecol}%
   \getvalue{\@@tblprefix\c!x\v!oddeven\positivecol\c!y\v!oddeven\positiverow}%
   \ifnum\positiverow=\plusone
     \getvalue{\@@tblprefix\c!y\v!first}%
     \executeifdefined{\@@tblprefix\c!x\positivecol\c!y\v!first}\donothing
   \fi
   \ifnum\positivecol=\plusone
     \getvalue{\@@tblprefix\c!x\v!first}%
     \executeifdefined{\@@tblprefix\c!x\v!first\c!y\positiverow}\donothing
   \fi
   \ifnum\positiverow=\maximumrow\relax
     \getvalue{\@@tblprefix\c!y\v!last}%
     \executeifdefined{\@@tblprefix\c!x\positivecol\c!y\v!last}\donothing
   \fi
   \ifnum\positivecol=\maximumcol\relax
     \getvalue{\@@tblprefix\c!x\v!last}%
     \executeifdefined{\@@tblprefix\c!x\v!last\c!y\positiverow}\donothing
   \fi
   \ifnum\positiverow=\maximumrow\relax\ifnum\positivecol=\maximumcol\relax
     \getvalue{\@@tblprefix\c!x\v!last\c!y\v!last}%
   \fi\fi
   \ifnum\positiverow=\plusone \ifnum\positivecol=\plusone
     \getvalue{\@@tblprefix\c!x\v!first\c!y\v!first}%
   \fi\fi
   \ifnum#1>\noftblhdnxlines\else
     \executeifdefined{\@@tblprefix\v!header\v!each}\donothing
     \executeifdefined{\@@tblprefix\v!header\positivecol}\donothing
   \fi
   \executeifdefined{\@@tblprefix\c!y\positiverow}\donothing
\executeifdefined{\@@tblprefix\c!y\negativerow}\donothing
   \getvalue{\@@tbl\@@tbl\c!extras}\letvalue{\@@tbl\@@tbl\c!extras}\relax %    \executeifdefined{\@@tblprefix\c!x\positivecol}\donothing
\executeifdefined{\@@tblprefix\c!x\negativecol}\donothing
   \getvalue{\@@tbl\@@tbl\c!extras}\letvalue{\@@tbl\@@tbl\c!extras}\relax %    \executeifdefined{\@@tblprefix\c!x\positivecol\c!y\positiverow}\donothing
\executeifdefined{\@@tblprefix\c!x\negativecol\c!y\negativerow}\donothing
 \global\letcscsname\@@tblsplitafter\csname\@@tbl\@@tbl\c!after\endcsname
   \relax}

\setupcolors[state=start]

\setupTABLE[r]  [2][color=red]
\setupTABLE[r] [-2][color=red]
\setupTABLE[c]  [2][color=green]
\setupTABLE[c] [-2][color=green]
\setupTABLE[4]  [4][color=blue]
\setupTABLE[-4][-4][color=blue]

\bTABLE
\dorecurse{10}{\bTR \dorecurse{6}{\bTD xxx \eTD} \eTR}
\eTABLE

\stoptext


-----------------------------------------------------------------
                                          Hans Hagen | PRAGMA ADE
              Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
     tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com
                                             | www.pragma-pod.nl
-----------------------------------------------------------------

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: TABLE 'last line' tag?
  2006-04-21 19:44                 ` Johannes Graumann
@ 2006-04-21 20:57                   ` nico
  2006-04-21 22:23                     ` Johannes Graumann
  0 siblings, 1 reply; 14+ messages in thread
From: nico @ 2006-04-21 20:57 UTC (permalink / raw)


[-- Attachment #1: Type: text/plain, Size: 1499 bytes --]

On Fri, 21 Apr 2006 12:44:45 -0700, Johannes Graumann  
<johannes_graumann@web.de> wrote:

> nico wrote:
>
>> On Thu, 20 Apr 2006 17:27:50 -0700, Johannes Graumann
>> <johannes_graumann@web.de> wrote:
>>
>>> nico wrote:
>>>
>>>> Why don't you test if the attribute is set before applying it to the  
>>>> TR?
>>>> You see the problem on the last row, but the fact is that you force  
>>>> the
>>>> bottomframe clear for every row (which is dirty IMHO).
>>> It's not that easy, since the bottomframe - once set - is persistent  
>>> ...
>>> so
>>> every row underneath my header (e.g.) will have 'bottomframe=on' set.
>>
>> No, the options are local to the current level where it is set. If
>> bottomframe is on for one row, it won't set bottomframe to the next  
>> rows.
>> In the following example, only two rows (the header and another one in  
>> the
>> body) have local bottomframe on, and the last row bottomframe is done  
>> with
>> table setup:
>
> The persistence issue is XML specific, I believe and therefore does not
> apply to your code example.

It's because you systematically apply the attribute. Doing this should  
work, even if there's maybe a smarter way of doing:

\defineXMLnested
   [tr]
   [bottomframe=,rulethickness=0.5pt]
   {\doifelse{\XMLop{bottomframe}}{}%
    {\expanded{\bTR}}%
    {\expanded{\bTR[bottomframe=\XMLop{bottomframe},rulethickness=\XMLop{rulethickness}]}}}
   {\eTR}

I attach the full example.

Regards,
BG

[-- Attachment #2: splittable.tex --]
[-- Type: application/x-tex, Size: 4529 bytes --]

[-- Attachment #3: Type: text/plain, Size: 139 bytes --]

_______________________________________________
ntg-context mailing list
ntg-context@ntg.nl
http://www.ntg.nl/mailman/listinfo/ntg-context

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: TABLE 'last line' tag?
  2006-04-21 20:57                   ` nico
@ 2006-04-21 22:23                     ` Johannes Graumann
  0 siblings, 0 replies; 14+ messages in thread
From: Johannes Graumann @ 2006-04-21 22:23 UTC (permalink / raw)


nico wrote:

> \defineXMLnested
> [tr]
> [bottomframe=,rulethickness=0.5pt]
> {\doifelse{\XMLop{bottomframe}}{}%
> {\expanded{\bTR}}%
>
{\expanded{\bTR[bottomframe=\XMLop{bottomframe},rulethickness=\XMLop{rulethickness}]}}}
> {\eTR}


So much to learn, so little time. Thank you for this hint! Was hunting
around in the XML example file for some XML specific switches and didn't
get far ... this  does it. Thank you.

Joh

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2006-04-21 22:23 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-04-20  5:55 TABLE 'last line' tag? Johannes Graumann
2006-04-20  6:26 ` nico
2006-04-20 14:59   ` Johannes Graumann
2006-04-20 16:14     ` Peter Rolf
2006-04-20 16:45     ` Peter Münster
2006-04-20 16:50       ` Taco Hoekwater
2006-04-20 18:29         ` Johannes Graumann
2006-04-20 19:05           ` nico
2006-04-21  0:27             ` Johannes Graumann
2006-04-21  7:07               ` nico
2006-04-21 19:44                 ` Johannes Graumann
2006-04-21 20:57                   ` nico
2006-04-21 22:23                     ` Johannes Graumann
2006-04-21 19:51                 ` Hans Hagen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).