ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: Brooks Moses <bmoses@stanford.edu>
Subject: Blank figure hack: is there a better way?
Date: Tue, 10 Aug 2004 10:47:39 -0700	[thread overview]
Message-ID: <4.3.1.2.20040810103020.00b32668@cits1.stanford.edu> (raw)

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?

Thanks,
- Brooks

             reply	other threads:[~2004-08-10 17:47 UTC|newest]

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

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=4.3.1.2.20040810103020.00b32668@cits1.stanford.edu \
    --to=bmoses@stanford.edu \
    --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).