Open main menu

Changes

3,204 bytes added ,  07:33, 1 December 2022
m
Hints about old code
'''Beware: This page is very old, code might not work any more.''' On this page I will describe the things lessons learned while setting a CD booklet.
== Fit a text into a box ==
[[image:CD08-p11.png|120px]]
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
<texcode>
\startbuffer[text]
\placefigure[left,none]{}{\framed[height=1cm]{graphic}}%
\input tufte
\stopbuffer
 
\starttext
\startstandardmakeup
\startframedtext[width=0.8\textwidth]
\getbuffer[text]
\stopframedtext
\stopstandardmakeup
\stoptext
</texcode>
 
And the variant with layers:
<texcode>
\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
</texcode>
 
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:
<texcode>
% MkII code! Doesn’t work any more.
\startbuffer[text]
\starthangaround{\framed[height=1cm]{graphic}}%
\input tufte
\stophangaround
\stopbuffer
</texcode>
== Use Delicious OTF font with luatex / mkiv ==
 
Get the typescript for the [http://www.josbuivenga.demon.nl/delicious.html Delicious fonts]: [[Exljbris typescript#Delicious]]
 
Then type:
 
<texcode>
\usetypescript[delicious]
\setupbodyfont[delicious,ss,10pt]
</texcode>
== 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:
 
<texcode>
\definelayer[test]
[width=\paperwidth,height=\paperheight]
 
\setlayerframed[test]
[preset=middle]
[width=0.6\textwidth,align=normal]
{\input tufte }
 
\setupbackgrounds[page][background=test]
 
\starttext
\stoptext
</texcode>
 
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 <code>\starttext \stoptext</code> call one of the following:
 
<texcode>
\page[empty]
</texcode>
 
<texcode>
\startstandardmakeup
\stopstandardmakeup
</texcode>
 
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
<texcode>
\dontleavehmode
</texcode>
 
<texcode>
\null
</texcode>
 
The last alternative is just to use
<texcode>
\flushlayer[test]
</texcode>
(You can discard the background definition then) But this places the layer relative to the textarea and not as intended to the pagearea.
 
[[Category:Sample documents]]