Difference between revisions of "Layers"
(Added example for dynamic layer content.) |
m (changed <texcode> to <context source="yes">) |
||
Line 62: | Line 62: | ||
(see also [[Collectors]]). | (see also [[Collectors]]). | ||
− | < | + | <context source="yes"> |
+ | \setupexternalfigures[location={local,default}] | ||
+ | % (necessary for the wiki conTeXt live processor) | ||
+ | |||
\definelayer [figure][width=\overlaywidth,height=\overlayheight] | \definelayer [figure][width=\overlaywidth,height=\overlayheight] | ||
\defineoverlay[figure][{\directsetup{figure}\tightlayer[figure]}] | \defineoverlay[figure][{\directsetup{figure}\tightlayer[figure]}] | ||
Line 131: | Line 134: | ||
\stoptext | \stoptext | ||
− | </ | + | </context> |
− | |||
==Use dynamic content== | ==Use dynamic content== |
Revision as of 10:51, 12 February 2009
< Layout | Columns | Overlays | Logos | Collectors >
Layers are ConTeXt's mechanism for absolute positioning of elements and other advanced techniques like switching elements on and off.
There's still no manual about them.
Contents
My first Layer
Define a layer that takes the whole page
\definelayer [mybg] % name of the layer [x=0mm, y=0mm, % from upper left corner of paper width=\paperwidth, height=\paperheight] % let the layer cover the full paper
Now you can put something in that layer:
\setlayer [mybg] % name of the layer [hoffset=1cm, voffset=1cm] % placement (from upper left corner of the layer) {\framed[frame=on, width=3cm, height=2cm]{LAYER}} % the actual contents of the layer
Activate the layer as a background:
\setupbackgrounds[page][background=mybg]
This command makes the layer appear only once after the background is activated. If you want to repeat the layer on each page, use the option repeat=yes
in the \definelayer command.
Placement
There are several possibilities for defining the placement of layer content:
- x, y : offset from upper left corner of paper
- hoffset, voffset : offset from upper left corner of layer
- corner : reference point, something like
{left, top}
- location : alignment of the element relative to the corner, something like
{right, bottom}
- preset : a named location, see below
There are some "presets" for paper egde placement:
% These four are defined by ConTeXt! \definelayerpreset [lefttop] [corner={left,top}, location={right,bottom}] \definelayerpreset [righttop] [corner={right,top}, location={left,bottom}] \definelayerpreset [leftbottom] [corner={left,bottom}, location={right,top}] \definelayerpreset [rightbottom] [corner={right,bottom}, location={left,top}]
Similarly you can define your own presets.
State
The available options for the "state" of a layer are:
- start: layer appears only on the current page
- stop: layer doesn't show up
- repeat: layer prints on all pages
- next: layer appears on the following page
- continue: layer appears on all pages except the first
Place labels on pictures
Layers can be used to put labels on pictures, alternative ways can be found in the Details manual (see also Collectors).
\setupexternalfigures[location={local,default}] % (necessary for the wiki conTeXt live processor) \definelayer [figure][width=\overlaywidth,height=\overlayheight] \defineoverlay[figure][{\directsetup{figure}\tightlayer[figure]}] \setupcolors[state=start] \starttext \startsetups figure \setlayerframed [figure] [preset=rightbottom, x=.25\layerwidth, y=.25\layerheight] {HERE} \setlayerframed [figure] [preset=leftbottom, x=.15\layerwidth, y=.35\layerheight] {THERE} \stopsetups \externalfigure[cow][background={foreground,figure},width=4cm,height=8cm] \startsetups figure \setlayerframed [figure] [preset=righttop, x=.25\layerwidth, y=.25\layerheight] {MORE} \setlayerframed [figure] [preset=middle, foregroundcolor=green] {EVEN MORE} \stopsetups \externalfigure[cow][background={foreground,figure},width=14cm,height=2cm] \defineexternalfigure[whatever][background={foreground,figure}] \startsetups figure \setlayerframed [figure] [preset=righttop, x=.25\layerwidth, y=.25\layerheight] {\red MORE} \setlayerframed [figure] [preset=middle, foregroundcolor=green] {EVEN MORE} \stopsetups \externalfigure[cow][whatever][width=14cm,height=4cm] \stoptext
Use dynamic content
The content of layer is fixed after your set it and will appear in the same way on each page.
\definelayer [pagenumber] [width=\paperwidth, height=\paperheight, preset=middle, state=repeat] \setlayer[pagenumber]{Page \pagenumber} \setupbackgrounds[page][background=pagenumber] \starttext \dorecurse{4}{\page[empty]} \stoptext
This is not always what you desire like in the example above, where on each page the current page number should be shown and not the number from the first page.
To recalculate the content on each new page you have to enclose the \setlayer settings within \startsetups ... \stopsetups and
write \setupbackgrounds[page][setups=setupname,background=layername]
in your document.
\definelayer [pagenumber] [width=\paperwidth, height=\paperheight, preset=middle] \startsetups layer \setlayer[pagenumber]{Page \pagenumber} \stopsetups \setupbackgrounds[page][setups=layer,background=pagenumber] \starttext \dorecurse{4}{\page[empty]} \stoptext
Links
- Some applications in the Details manual
- Sample documents: BusinessCard and Letter style
- Source: page-lyr
- Example of Alternating backgrounds and repeating layers and Draft Watermark
![]() |
TODO: We need a lot of documentation and samples for this complicated subject. (See: To-Do List) |