From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.comp.tex.context/4665 Path: main.gmane.org!not-for-mail From: Hans Hagen Newsgroups: gmane.comp.tex.context Subject: Re: Vertical alignment of arbitrary text, berends o'reilly head Date: Sun, 13 May 2001 15:04:59 +0200 Sender: owner-ntg-context@let.uu.nl Message-ID: <3.0.6.32.20010513150459.01979940@server-1> References: <87itj6skig.fsf@dellius.nederware.nl> NNTP-Posting-Host: coloc-standby.netfonds.no Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" X-Trace: main.gmane.org 1035395311 27600 80.91.224.250 (23 Oct 2002 17:48:31 GMT) X-Complaints-To: usenet@main.gmane.org NNTP-Posting-Date: Wed, 23 Oct 2002 17:48:31 +0000 (UTC) Cc: ntg-context@ntg.nl Original-To: Berend de Boer In-Reply-To: <87itj6skig.fsf@dellius.nederware.nl> Xref: main.gmane.org gmane.comp.tex.context:4665 X-Report-Spam: http://spam.gmane.org/gmane.comp.tex.context:4665 Hi Berend, >Is there a construct in ConTeXt to align two arbitrary pieces of text? >For example I wanted a chapter number and the contents of that chapter >to be aligned. > >After much blood, sweat and tears I came up with this: well, given the sun, i only had to sweat a bit: % output=pdftex \setuplist [section] [style=boldslanted, align=left, interaction=all, symbol=1, width=1em, pagenumber=no, before=, after=] \setuphead [chapter] [header=empty, style=BigHeadFont, alternative=command, command=\ContentsHead, page=right, after={\blank[2*big]}] \definefont[BigHeadFont][Serif at 36pt] \def\ContentsHead#1#2% {%\setupframed[frame=off] \framed[width=\hsize,offset=overlay] {\placesidebyside {\doifelsenothing{#1} {\framed[width=.6\hsize]{}} % dummy {\framed [width=.6\hsize,offset=1em,strut=no,align=right,background=screen] {In this chapter: \blank \placelist[section][criterium=chapter]}}} {\framed [width=.4\hsize,offset=1em,strut=no,align=left] {#1\par#2}}}} \starttext \title {Berend} \chapter {Berend} \section {Botje} \section {Botje} \section {Botje} \stoptext Makes a nice example for the example suite >------------------------------- >\def\SimpleHead#1% > {\vtop{\rightaligned{{\switchtobodyfont[36pt]\ }}\par > \rightaligned{\startnarrower[3*left] #1\stopnarrower}}} > >\def\myContents#1#2#3% > {\sym{$\bullet$} {\bs #2}\par} > >\newdimen\myheight >\newdimen\mydepth >\newbox\myboxA >\newbox\myboxB > >\def\ContentsHead#1#2% > {\setbox\myboxA=\vbox{\hsize=5cm > \startframedtext > [frame=off,background=screen,width=5cm]% > In this chapter:\par > \startalignment[right] > \placelist > [section] > [criterium=chapter, > alternative=command, > command=\myContents, > style=boldslanted, > align=left, > interaction=all, > before=,after=]% > \stopalignment > \stopframedtext}% > \myheight=\ht\myboxA > \mydepth=\dp\myboxA > \ht\myboxA=0pt > \advance\mydepth by \myheight > \dp\myboxA=\mydepth > \setbox\myboxB=\vbox > {\hsize=8cm \rightaligned{{\switchtobodyfont[36pt]#1}}\par > \startalignment[left,broad] #2\stopalignment}% > \myheight=\ht\myboxB > \mydepth=\dp\myboxB > \ht\myboxB=0pt > \advance\mydepth by \myheight > \dp\myboxB=\mydepth > \box\myboxA\hfill\box\myboxB} > >\def\myhead#1#2% > {\doifemptyelse{#1}{\SimpleHead{#2}}{\ContentsHead{#1}{#2}}} > >\setuphead > [chapter] > [header=empty, > style=\bsd, > command=\myhead, > page=right, > after={\blank[2*big]}] >------------------------------- > >But is there a better way? This took me surprisingly long and I had to >use the visual debugger to get a clue what was going on. With the >height of both boxes to 0 I've more or less alignment them I think. > >(I attempt to emulate the O'Reilly format) > >Groetjes, > >Berend. (-: > > ------------------------------------------------------------------------- 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 -------------------------------------------------------------------------