CD Booklet

From Wiki
Jump to navigation Jump to search

Beware: This page is very old, code might not work any more.

On this page I will describe the lessons learned while setting a CD booklet.

Fit a text into a box

CD08-Titel.png


Float text around a picture inside a layer

CD08-p11.png

Floating Text around a picture inside any vbox environment is not possible and so the next two examples show text that runs through the graphical element.

The variant with a simple framedtext

\startbuffer[text]
\placefigure[left,none]{}{\framed[height=1cm]{graphic}}%
\input tufte
\stopbuffer

\starttext
\startstandardmakeup
\startframedtext[width=0.8\textwidth]
\getbuffer[text]
\stopframedtext
\stopstandardmakeup
\stoptext

And the variant with layers:

\definelayer[test]
  [width=\paperwidth,height=\paperheight]

\startbuffer[text]
\placefigure[left,none]{}{\framed[height=1cm]{graphic}}%
\input tufte
\stopbuffer

\setlayerframed[test]
  [preset=middle]
  [width=0.6\textwidth,align=normal]
  {\getbuffer[text]}

\setupbackgrounds[page][background=test]

\starttext
\startstandardmakeup
\stopstandardmakeup
\stoptext

But as always with ConTeXt: Hans to the rescue! He has just some time before my trials made a nice macro available in cont-new.tex with the adequate name \starthangaround. With this macro it is quite easy to float the text around the graphic. You only has to change the buffer-code:

% MkII code! Doesn’t work any more.
\startbuffer[text]
\starthangaround{\framed[height=1cm]{graphic}}%
\input tufte
\stophangaround
\stopbuffer

Use Delicious OTF font with luatex / mkiv

Get the typescript for the Delicious fonts: Exljbris typescript#Delicious

Then type:

\usetypescript[delicious]
\setupbodyfont[delicious,ss,10pt]

Protrusion with mkiv

Pages with layers only

When using ConTeXt for designing some work that is not primarily focused on continuous text, it is most likely that your pages are composed of different layers only and don't contain any normal text. Only defining the layers and filling them with your content is not enough to make them appear on the page. So this easy approach doesn't work:

\definelayer[test]
  [width=\paperwidth,height=\paperheight]

\setlayerframed[test]
  [preset=middle]
  [width=0.6\textwidth,align=normal]
  {\input tufte }

\setupbackgrounds[page][background=test]

\starttext
\stoptext

We expect the frame with tufte just in the middle of the page. With \setupbackgrounds we have positioned our layer. But no output is generated since the OTR (Output Routine) is invoked. And because there is no content on the page (and the background is no content) an empty page will be generated.

There are some possibilities to invoke the OTR. Inside \starttext \stoptext call one of the following:

\page[empty]
\startstandardmakeup
\stopstandardmakeup

If you haven't defined you own pagelayout, the following invocations of the OTR just use the standard layout that has a pagenumber in the headerline

\dontleavehmode
\null

The last alternative is just to use

\flushlayer[test]

(You can discard the background definition then) But this places the layer relative to the textarea and not as intended to the pagearea.