Prevent page breaks directly before boxed typings.
[matthijs/master-project/report.git] / Utils / Lambda.tex
index 23b17d1c01688369f18d7780e5029dc0a24e8804..25eff4402e35e0db89566ad8e04e0485183e1770 100644 (file)
@@ -59,8 +59,10 @@ draw b;
 
 % Install the lambda calculus pretty-printer, as defined in pret-lam.lua.
 \installprettytype [LAM] [LAM]
-% Define \startlambda \stoplambda
-\definetyping[lambda][option=LAM,style=sans,before=\startboxed,after=\stopboxed,strip=auto]
+% Define \startlambda \stoplambda. Suppress page breaks directly before
+% such a box (\page[no] only works directly after a paragraph break, so
+% insert one).
+\definetyping[lambda][option=LAM,style=sans,before={\par\page[no]\startboxed},after={\stopboxed},strip=auto]
 % Define \startunboxedlambda \stopunboxedlambda
 \definetyping[unboxedlambda][option=LAM,style=sans,strip=auto]
 
@@ -70,12 +72,12 @@ draw b;
 % Install the transformation pretty-printer, as defined in pret-trans.lua.
 \installprettytype [TRANS] [TRANS]
 % Define \starttrans \stoptrans
-\definetyping[trans][option=TRANS,style=normal,before=\startboxed,after=\stopboxed,strip=auto]
+\definetyping[trans][option=TRANS,style=normal,before={\par\page[no]\startboxed},after={\stopboxed},strip=auto]
 
 % Install the haskell pretty-printer, as defined in pret-haskell.lua.
 \installprettytype [HASKELL] [HASKELL]
 % Define \starthaskell \stophaskell
-\definetyping[haskell][option=HASKELL,before=\startboxed,after=\stopboxed,strip=auto]
+\definetyping[haskell][option=HASKELL,before={\par\page[no]\startboxed},after={\stopboxed},strip=auto]
 % Define \hs
 \definetype[hs][option=HASKELL,style=mono]
 
@@ -128,18 +130,22 @@ draw b;
   \stopboxed
 }
 
+\setupcaption[figure][location=top] % Put captions on top
 % Define an "example" float. Don't add box around it, since an example will
 % commonly contain two boxed items (Before / after, code / picture).
-\definefloat[example][examples]
+% Make an example use the same numbering as a figure.
+\definefloat[example][examples][figure]
 \setupcaption[example][location=top] % Put captions on top
 % Define a definition float that shares its numbering and setting with
 % examples.
-\definefloat[definition][definitions][example]
-% Make sure the label really says definition instead of example, this
-% seems to be a bug in ConTeXt (\redodefinefloat in strc-flt.mkiv has
-% \presetlabeltext[#1=\Word{#3}~]% which should reference #1 instead of
-% #3).
+\definefloat[definition][definitions][figure]
+\setupcaption[example][location=top] % Put captions on top
+% Make sure the labels really say Definition and Example instead of
+% Figure. This seems to be a bug in ConTeXt (\redodefinefloat in
+% strc-flt.mkiv has \presetlabeltext[#1=\Word{#3}~]% which should
+% reference #1 instead of #3).
 \setuplabeltext[en][definition=Definition]
+\setuplabeltext[en][example=Example]
 
 % Margin magic taken from
 % http://www.pragma-ade.com/general/manuals/details.pdf By setting negative