Difference between revisions of "Image Placement"
Jump to navigation
Jump to search
(add postponing) |
m (minor adjustments, nothing new) |
||
Line 1: | Line 1: | ||
− | + | __NOTOC_ | |
If you’re using ConTeXt for complex layout tasks, you need to calculate with image sizes. Often it makes sense to use Lua functions. | If you’re using ConTeXt for complex layout tasks, you need to calculate with image sizes. Often it makes sense to use Lua functions. | ||
Line 5: | Line 5: | ||
'''Beware''', TeX calculates internally in "scaled points" (sp), 1 sp = 1/65536 pt. | '''Beware''', TeX calculates internally in "scaled points" (sp), 1 sp = 1/65536 pt. | ||
− | + | = Measures in pure ConTeXt = | |
You can get at a picture’s dimensions with one line of TeX code: | You can get at a picture’s dimensions with one line of TeX code: | ||
Line 54: | Line 54: | ||
</context> | </context> | ||
− | + | = Calculations in Lua = | |
<pre> | <pre> | ||
Line 79: | Line 79: | ||
</pre> | </pre> | ||
− | + | = Postponing = | |
If you want to place full page images or similar content on distinct pages, try the postponing mechanism: | If you want to place full page images or similar content on distinct pages, try the postponing mechanism: |
Revision as of 22:22, 6 June 2020
__NOTOC_
If you’re using ConTeXt for complex layout tasks, you need to calculate with image sizes. Often it makes sense to use Lua functions.
Beware, TeX calculates internally in "scaled points" (sp), 1 sp = 1/65536 pt.
Measures in pure ConTeXt
You can get at a picture’s dimensions with one line of TeX code:
\setupexternalfigures[location=default] % necessary to find pictures in tree \getfiguredimensions[hacker.jpg]
This defines a bunch of variables:
Calculations in Lua
TEXpt = 65536 -- sp per pt TEXptpi = 72.27 -- pt per inch function sp2mm(n) -- convert sp into mm return math.floor(n * 35.28 / TEXpt)/100 end function glue2num(glue) -- convert TeX glue (e.g. skips) into dimensions(? or numbers) return glue.width + (glue.stretch * glue.stretch_order) - (glue.shrink * glue.shrink_order) end function ImgSize(resolution) local filename = figures.current().status.fullname -- current image local pic = img.scan{filename = filename} local picH = pic.ysize * TEXptpi * TEXpt / resolution -- picture height in sp local picW = pic.xsize * TEXptpi * TEXpt / resolution -- picture width in sp context("height=" .. picH .. ",width=" .. picW) end
Postponing
If you want to place full page images or similar content on distinct pages, try the postponing mechanism:
\definemakeup[fullpage][ page=no, doublesided=no, % headerstate=empty, % footerstate=empty, pagestate=start, ] \startpostponing[pagenumber] \startfullpagemakeup % use \setlayer & friends \stopfullpagemakeup \stoppostponing
The pagenumber argument can be absolute or relative, e.g. 23 or +2. Values like +0 or -1 might fit your usecase.
((WORK IN PROGRESS))