ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: Hans Hagen <pragma@wxs.nl>
To: ntg-context@ntg.nl
Subject: Re: Vertically Aligning inmargin Text to Figure
Date: Tue, 18 Jun 2013 10:02:55 +0200	[thread overview]
Message-ID: <51C0142F.6000504@wxs.nl> (raw)
In-Reply-To: <200A8465-03ED-400D-8076-9812ECDB012F@stien.de>

On 6/18/2013 6:11 AM, Malte Stien wrote:
> Wolfgang,
>
> I have to come back to this solution you provided me with some time ago. I have more reading in the meantime and have gained a deeper understanding of how this actually works. However...
>
> 1. I noticed that the text in the margin is not actually quite aligned with the top of the figure; I think the text starts at the baseline of the line that would be there if the figure was not, if you know what I am getting at. That is at 12pt font size the text is about 12pt below the top of the figure. I tried to fix that with some negative \vskip, but that does not seem to work. Could you suggest an alternative please and maybe even explain why the code below does not compile
>
>> You can set the text in the margin with the second argument of \startplacefigure.
>>
>> \define\FigureText
>>   {\dowithnextbox
>>      {\startlinealignment[middle]
>>       \copy\nextbox\rlap{\hskip\rightmargindistance\vskip-12pt\framed[frame=off,width=\rightmarginwidth,height=\nextboxht]{\floatuserdataparameter{text}}}
>>       \stoplinealignment}
>>      \hbox}
>
>
> 2. Currently the code always uses the right margin; I need it to use the outer margin. I experimented swapping the \rlap for \llap, but then I still have to negatively \hskip the entire text width to the left. Even if I got that to work, I will have to wrap everything in an if-statement and have one branch for left and one for right pages. Right? How do I find out whether I am on a left or a right page? In other words, how would the if-statement look like.


\setuppagenumbering[alternative=doublesided]

\starttext

     \definelayer
       [extrafiguretextlayer:l]
       [width=\overlaywidth,
        height=\overlayheight,
        corner={right,top},
        location={right,bottom},
        x=-1cm]

     \definelayer
       [extrafiguretextlayer:r]
       [width=\overlaywidth,
        height=\overlayheight,
        corner={left,top},
        location={left,bottom},
        x=-1cm]

     \startsetups extrafiguretext
         \signalouterrealign
         \setlayerframed
           [extrafiguretextlayer:\rightorleftpageaction rl]
           []
           [width=\marginwidth,
            align={lohi,middle},
            foregroundstyle=\tx]
           {\floatuserdataparameter{text}}
         \flushlayer
           [extrafiguretextlayer:\rightorleftpageaction rl]
     \stopsetups

     \defineoverlay
       [extrafiguretext]
       [\setups{extrafiguretext}]

     \setupfloat
       [figure]
       [background={foreground,extrafiguretext}]

     \dorecurse {20} {

         \startplacefigure[title=Dummy figure][text={margin dummy text #1}]
             \externalfigure[dummy][width=.8\textwidth]
         \stopplacefigure

     }

\stoptext

> Thank you,
> Malte.
>
>
> --
> “The Electric Monk was a labour-saving device, like a dishwasher or a video recorder... Electric Monks believed things for you, thus saving you what was becoming an increasingly onerous task, that of believing all the things the world expected you to believe.”
>
> ― Douglas Adams, Dirk Gently's Holistic Detective Agency
>
> On 29/04/2013, at 9:04 PM, Wolfgang Schuster <schuster.wolfgang@gmail.com> wrote:
>
>>
>> Am 29.04.2013 um 09:33 schrieb Malte Stien <malte@stien.de>:
>>
>>> Hi,
>>>
>>> I need to associate a bit of text with a figure in a book. The text is not---and cannot be---the figure caption (it's providing some explanation with respect to some labels in the figure). I have tried the following based on some other post on the mailing list:
>>>
>>> \definepapersize[eightsquare][width=8in, height=8in]
>>> \setuppapersize[eightsquare]
>>>
>>> \setuplayout[
>>> 	location=doublesided, marking=on, backspace=43mm, leftmargin=18mm,
>>> 	leftmargindistance=4mm, rightmargin=35mm, rightmargindistance=4mm, rightedgewidth=6mm,
>>> 	topspace=12mm, header=15mm,	footer=15mm, height=179mm, width=115mm
>>> ]
>>>
>>> \starttext
>>>
>>> \startplacefigure[location=force, title={First dummy caption}]
>>> \inmargin{First margin dummy}
>>> \externalfigure[dummy][width=115mm]
>>> \stopplacefigure
>>>
>>> \stoptext
>>>
>>> However, that results in the text being down the bottom of the figure. I need the text to be vertically aligned with the top of the figure. I have attached the resulting PDF for illustration purposes (is that okay on this mailing list? It's very small).
>>>
>>> Any hints would be much appreciated.
>>
>>
>> You can set the text in the margin with the second argument of \startplacefigure.
>>
>> \define\FigureText
>>   {\dowithnextbox
>>      {\startlinealignment[middle]
>>       \copy\nextbox\rlap{\hskip\rightmargindistance\framed[frame=off,width=\rightmarginwidth,height=\nextboxht]{\floatuserdataparameter{text}}}
>>       \stoplinealignment}
>>      \hbox}
>>
>> \setupfloat[figure][command=\FigureText]
>>
>> \starttext
>>
>> \startplacefigure[title=Dummy figure][text=Margin dummy]
>> \externalfigure[dummy][width=.8\textwidth]
>> \stopplacefigure
>>
>> \stoptext
>>
>> Wolfgang
>> ___________________________________________________________________________________
>> If your question is of interest to others as well, please add an entry to the Wiki!
>>
>> maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
>> webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
>> archive  : http://foundry.supelec.fr/projects/contextrev/
>> wiki     : http://contextgarden.net
>> ___________________________________________________________________________________
>
> ___________________________________________________________________________________
> If your question is of interest to others as well, please add an entry to the Wiki!
>
> maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
> webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
> archive  : http://foundry.supelec.fr/projects/contextrev/
> wiki     : http://contextgarden.net
> ___________________________________________________________________________________
>


-- 

-----------------------------------------------------------------
                                           Hans Hagen | PRAGMA ADE
               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
     tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com
                                              | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

  reply	other threads:[~2013-06-18  8:02 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-29  7:33 Malte Stien
2013-04-29 11:04 ` Wolfgang Schuster
2013-05-24  6:46   ` Malte Stien
2013-05-24  7:30     ` Hans Hagen
2013-05-24 13:53     ` Wolfgang Schuster
2013-06-18  4:11   ` Malte Stien
2013-06-18  8:02     ` Hans Hagen [this message]
2013-06-18  8:05     ` Wolfgang Schuster

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=51C0142F.6000504@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).