ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: Hans Hagen <pragma@wxs.nl>
Subject: Re: Blank figure hack: is there a better way?
Date: Tue, 10 Aug 2004 20:44:22 +0200	[thread overview]
Message-ID: <41191786.5090809@wxs.nl> (raw)
In-Reply-To: <4.3.1.2.20040810103020.00b32668@cits1.stanford.edu>

Brooks Moses wrote:

> I'm doing a document which has a large logo in the upper right corner 
> of the page.  The logo (which is on a background layer) intrudes into 
> the text area by a small amount, and so it would be nice to have the 
> text wrap around it rather than having to do the wrapping by manual 
> spacers and line-breaks.
>
> The "obvious" solution that I came up with for this is to put a blank 
> right-aligned float at the top of each page (it's a presentation where 
> all the page breaks are hand-coded, so that's easy to do), of about 
> the size of the part of the logo that intrudes into the text.  I 
> defined a class of floats just for this:
>
>   \definefloat[logospacer][logospacer]
>
> (Using the same name for the singular and plural was a hack to get 
> around the fact that the manual doesn't indicate which of the two the 
> \setupfloat command uses.  Which is it?)
>
> So far, so good.  Except that it's exceptionally hard to _get_ a blank 
> float in ConTeXt, particularly one of a specified size.
>
> If I do this (and specify the size in a \setupfloat command):
>
>   \placelogospacer[right, force]{none}{}
>
> I get a nice float exactly the size I want, but with a frame around it 
> and the word "undefined" in the middle.
>
> If I put something in the float -- say, a letter, or a non-breaking 
> space:
>
>   \placelogospacer[right, force]{none}{~}
>
> The float suddenly becomes \textwidth wide, which is of course all 
> wrong, but at least I have a blank float that's not undefined.
>
> If I put an \hbox in the float, with a fixed width, it stops 
> stretching to fill the pagewidth, but unless I put something that 
> actually makes a mark on the page, it still comes up with 
> "undefined".  (The "~" that worked earlier doesn't work if it's in an 
> \hbox.)  I tried a number of tricks -- hiding the nothing in a macro, 
> using a zero-height rule, and so forth -- and ConTeXt was sufficiently 
> clever to see through them all.
>
> There's also the annoyance that I have to specify the size of the 
> float by the size of the \hbox, rather than in a convenient 
> [width=...,height=...] fashion.
>
> Eventually, what I came up with was putting the mark somewhere off the 
> page, with the following command:
>
>   \placelogospacer[right, force]{none}{\hbox to 1cm{\hskip 5cm x}}
>
> This of course gives "overfull \hbox" errors, and is a really ugly 
> hack, but the results are acceptable -- a float of size 1cm by 1 
> x-height, which doesn't put marks on the physical page.
>
> How can I do this better?  Better yet, how can I do this properly?

the placeholder can be set up quite easily: 

\starttext

\definefloat[logospacer][logospacer]
\setupfloat[logospacer][default={right,none},width=1mm,height=1mm,empty=yes]

\placelogospacer{}{}

\input ward

\stoptext

As you can see, we also can set the default placement. The 'empty=yes' is not documented (since it is not that old -) 

An alternative would have been 

\startsetups placeholder

  \placefigure[right,none]{}{\framed[width=1mm,height=1mm,frame=off]{}}

\stopsteups

..... \setups[placeholder] ....  

framed boxes without frames are quite handy 

Hans 

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

      reply	other threads:[~2004-08-10 18:44 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-08-10 17:47 Brooks Moses
2004-08-10 18:44 ` Hans Hagen [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=41191786.5090809@wxs.nl \
    --to=pragma@wxs.nl \
    --cc=ntg-context@ntg.nl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).