Layers

From ConTeXt wiki

(Redirected from layers)
Jump to: navigation, search

< Layout | Columns | Overlays | Logos >

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

[edit] 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.

[edit] 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.

[edit] 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


[edit] Placing labels on pictures

Layers can be used to put labels on pictures, alternative ways can be found in the details manual.

\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


[edit] Links


TODO: We need a lot of documentation and samples for this complicated subject. (See: To-Do List)
Personal tools
Toolbox