From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.comp.tex.context/8739 Path: main.gmane.org!not-for-mail From: Hans Hagen Newsgroups: gmane.comp.tex.context Subject: Re: Calculated Header Text Date: Mon, 22 Jul 2002 00:47:24 +0200 Sender: owner-ntg-context@let.uu.nl Message-ID: <5.1.0.14.1.20020722003916.033b07e0@remote-1> References: <5.1.0.14.1.20020719231618.03c90e28@remote-1> <5.1.0.14.1.20020719231618.03c90e28@remote-1> NNTP-Posting-Host: coloc-standby.netfonds.no Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1"; format=flowed Content-Transfer-Encoding: 8bit X-Trace: main.gmane.org 1035399125 30170 80.91.224.250 (23 Oct 2002 18:52:05 GMT) X-Complaints-To: usenet@main.gmane.org NNTP-Posting-Date: Wed, 23 Oct 2002 18:52:05 +0000 (UTC) Cc: ntg-context@ntg.nl Original-To: Henning Hraban Ramm In-Reply-To: <200207211724.29856.angerweit@gmx.net> Xref: main.gmane.org gmane.comp.tex.context:8739 X-Report-Spam: http://spam.gmane.org/gmane.comp.tex.context:8739 At 05:27 PM 7/21/2002 +0200, Henning Hraban Ramm wrote: >Am Freitag, 19. Juli 2002 23:17 schrieb Hans Hagen: > > you can define your own markings (search for that or markering) and fetch > > the first/last/intermediate ones, > >Yeah, great! -- that is, would be, if it would work. >I wrote: > >\definemarking [myname] >\setupheadertexts [][{\getmarking[myname][all]}] >\def\Name#1{{\marking[myname]{#1}\bf #1}} >\def\Nick#1{{\it (#1)}} >\def\Geburt#1{* #1} >\def\Email#1{#1} >\def\Strasse#1{#1} >\def\Ort#1{#1} >\def\Telefon#1{#1} > >\starttabulate[|w(30mm)i0j0k0|w(30mm)i0j0k0|w(18mm)i0j0k0|] >\HL >\NC\Name{Alt, Stefan}\NC\Email{alt.stefan@to.de}\NC\Nick{Old Man}\NC\NR >\NC\Strasse{Straße 77}\NC\Ort{D-77777 Town}\NC\Telefon{+49-7777-7777}\NC\NR\HL >% long list of address lines >\stoptabulate > >But \getmarking shows nothing. >In the log I get only >"system : mark myname defined [myname]" >and no further mentioning of "myname" Bad luck: TeX cannot handle marks that are burried deeply (as in alignments) Good Luck: We can fake 'm (using a few low level user macros) \def\RegisterPageMark#1#2% #1=Class #2=Text {\iftrialtypesetting \else \doglobal\increment\NameCounter \textreference[#1:t:\NameCounter]{#2}% \doifreferencefoundelse{#1:t:\NameCounter} {\doifundefined{#1:f:\currentrealreference} {\setxvalue{#1:f:\currentrealreference}% {\noexpand\in[#1:t:\NameCounter]}}% \setxvalue{#1:l:\currentrealreference}% {\noexpand\in[#1:t:\NameCounter]}}% {}% \fi} \def\GetFirstOnPage#1{\getvalue{#1:f:\realfolio}} % #1=Class \def\GetLastOnPage #1{\getvalue{#1:l:\realfolio}} % #1=Class This permits: \setupheadertexts[\GetFirstOnPage{Name}][\GetLastOnPage{Name}] \starttext \def\Name#1{\RegisterPageMark{Name}{#1}#1} \def\TestLine#1{\NC test \NC \Name {test: #1} \NC \NR} \starttabulate \dorecurse{100}{\expanded{\TestLine{\recurselevel}}} \stoptabulate \stoptext >Further let's make the "phone book header" better: How can I get the first n >characters of a text? (I guess I'd find such in the TeXbook, but perhaps >there is a ConTeXty way?) a TeXy way: \def\getthreetokens#1% {\dogetthreetokens#1\empty\empty\empty\relax} \def\dogetthreetokens#1#2#3#4\relax {#1#2#3} An alternative is to use the boundtext and limitatetext (nicer) macros described in supp-box Hans ------------------------------------------------------------------------- Hans Hagen | PRAGMA ADE | pragma@wxs.nl Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: +31 (0)38 477 53 69 | fax: +31 (0)38 477 53 74 | www.pragma-ade.com ------------------------------------------------------------------------- information: http://www.pragma-ade.com/roadmap.pdf documentation: http://www.pragma-ade.com/showcase.pdf -------------------------------------------------------------------------