On Fri, Feb 02, 2018 at 04:17:32PM +0100, Henning Hraban Ramm wrote:
> Am 2018-02-02 um 12:08 schrieb Rudolf Bahr <qu...@quasi.de>:
> 
> > On Fri, Feb 02, 2018 at 08:40:08AM +0100, Henning Hraban Ramm wrote:
> >> Ahoi,
> >> 
> >> I’m using a Lua function to calculate image sizes, cropping etc.
> >> This snippet:
> >> 
> >> local filename = figures.current().status.fullname
> >> local pic = img.scan{filename = filename}
> >> 
> >> ... works most of the time, but sometimes the "current" image is the 
> >> previous one, might be because I’m using layers and postponing.
> >> So I’d like to use just the same filename as I give to \externalfigure, 
> >> i.e. without path and extension.
> >> How can I address the same file path resolver in my Lua function?
> >> 
> > 
> > Moin, Hraban,
> > 
> > where could I find something about those lua functions?
> 
> Maybe here: http://source.contextgarden.net/tex/context/base/mkiv/grph-inc.lua
> 
> The image placement functions I’m using are something Hans and others helped 
> me accomplish during the last meeting; AFAIK there’s no real documentation.
> 
> Find attached the lua part. It’s probably more complicated than necessary
> 
> 
> I could work around my original problem: I’m using my image with 
> \externalfigure in an invisible place first, so it’s current, and 
> figures.current().status is the right one. :)
> 
> Here’s my (convoluted) placement macro:
> 
> % image on empty page, caption in margin
> % usage:
> % \startpostponing[pagenumber]
> % \pagefig[reference]{caption}{filename}
> % \stoppostponing
> % postponing is important, otherwise the page numbering gets wrong
> \def\pagefig{\dosingleempty\doPagefig}
> \def\doPagefig[#1]#2#3{
> % calculate image size
> \startfullpagemakeup
>   \externalfigure[#3][width=1mm] % dummy to set image as current
>   \def\myClipHeight{\ctxlua{ctxClipHeight("#3", \Resolution)}}
>   \def\mystartY{\ctxlua{ctxStartY("#3", \Resolution)}}
>   % image
>   \setlayerframed[bglayer][%
>     frame=off,
>     offset=overlay,
>     x=21mm,
>     y=\mystartY,
>     height=\myClipHeight,
>     width=\textwidth,
>     align=flushleft,
>     ]{%
>     \clip[
>       width=\textwidth,
>       height=\myClipHeight,
>       hoffset=0mm,
>       voffset=0mm, % i.e. clip bottom! TODO: options!
>       ]{\externalfigure[#3][width=\textwidth]}
>       }
>   \textreference[pre#1]{\myImgHeight}
>   % caption
>   \setlayerframed[bglayer][%
>   frame=off,
>   offset=overlay,
>   linecorrection=on,
>   x=143mm,y=\dimexpr\mystartY + 3pt\relax,
>   height=\myClipHeight,
>   width=\outermarginwidth,
>   align={flushleft,low},
>   valign=bottom,
>   ]{%
>   \vbox{
>     \textreference[#1]{\strut #2}\vfill #2
>   }}
> \stopfullpagemakeup
> }
> 
> 
> usage example:
> 
> \startpostponing[82]
> \pagefig[alinari-stelzen]{Gebrüder Alinari (Florenz, 19. 
> Jhd.)}{ka34/img/Gebr-Alinari_Kinder_auf_Stelzen}
> \stoppostponing
> 
> 
> 
> Greetlings, Hraban
> ---
> http://www.fiee.net
> http://wiki.contextgarden.net
> GPG Key ID 1C9B22FD
> 

Moin Hraban!

It's very interesting for me to see, how exactly you calculate 
the size of images and texts with the help of lua! 

Up to now I used to use python and a independend lua to provide some 
necessary data for context. For instance python invokes graphicsmagick 
in order to get the size of images. Because it's provided in px and not 
in pt, so often some further manual work is unavoidable.

Now, since lua and metafun are well integrated into context it suggests
itself to use luatex instead of python, though I like this language
very much.

Thank you very much, Hraban, for putting your macros and links 
at my disposal!

Regards, Rudolf

___________________________________________________________________________________
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://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to