< Visuals |

# How to achieve specific results

## Preventing hyphenation

One can prevent hyphenation inside a frame by passing nothypenated option to align. It is also a good idea to add verytolerant and stretch options.

\setuppapersize[A5]
\startcombination[2*2]
{\framed
[width=5cm,
align={flushleft}]
{\input ward \endgraf}}
{flushleft}
{\framed
[width=5cm,
align={flushleft,nothyphenated,verytolerant}] % maybe also stretch
{\input ward \endgraf}}
{flushleft,\crlf nothyphenated, \crlf verytolerant}
{\framed
[width=5cm,
align={flushright,nothyphenated,verytolerant}] % maybe also stretch
{\input ward \endgraf}}
{flushright,\crlf nothyphenated, \crlf verytolerant}
{\framed
[width=5cm,
align={width,nothyphenated,verytolerant}] % maybe also stretch
{\input ward \endgraf}}
{width,\crlf nothyphenated, \crlf verytolerant}
\stopcombination


## Specify the width no longer than needed

I want to specify the maximum width of a frame. If the size of the box is smaller than the maximum width, I want a tight box. This can be done using the autowidth=force option to framed.

\setuppapersize[A5]
\defineframed
[tightframed][width=5cm,autowidth=force,align=middle]

\tightframed{Small}

\tightframed{A really really long line that is split at 5cm}



## Ruled Frames

\framed allows you to specify specific edges to be ruled. As an alternative to frame=on (the default), one can specify topframe=on, etc. Note that, as the default is to draw a complete frame, it is necessary to either specify the state (on/off) for all four edges or include the keyword frame=off.

\setuppapersize[A5]
\framed[frame=off,topframe=on,leftframe=on]{A fancy title}


The thickness of the frame rule can be specified using rulethickness=

\setuppapersize[A5]
\framed[frame=off,leftframe=on,rulethickness=2pt]{\tfa\bf A fancy title}


## Rounded Corners

\framed allows you to have round corners with corner=round. There are also other possibilities if you want round corners but not at all places by giving an appropriate number to corner=.... This example is taken from core-rul.tex and each frame is typeset using

 \framed[corner=....,frame=on]{...}


• You can only fill the frame with a background color if the corner shape is closed. Otherwise, the backgroundcolor option will be silently ignored.

## Coloring frame background and framed text

First you have to turn on colors with \setupcolors[state=start]. Then you can define the background and foreground (=text) colors:

\framed[background=color,backgroundcolor=....,foreground=color,foregroundcolor=...]{...}

If you want to make the frame itself disappear, add a frame=off to the setups.

 \setupcolors[state=start] \framed [background=color,backgroundcolor=darkblue, foreground=color,foregroundcolor=white] {\ssx \bf Bold white on dark blue}  \framed [background=color,backgroundcolor=yellow, frame=off] {\tfx Who needs highlighter pens, anyway?}  For filling frames with offset you have to add options frameoffset=..., backgroundoffset=... \framed [frame=on, corner=0, frameoffset=10pt, framecolor=black,background=color, backgroundcolor=darkgreen, backgroundoffset=10pt, foreground=color,foregroundcolor=white] {\tfxx \bf Rounded corners with offset} 

See the Color article for more information on available colors and color usage.

## Shaded background for part of a displayed equation

To highlight part of a formula, you can give it a gray background using \mframed:

\setuppapersize[A5]
\setupcolors[state=start]
\def\graymath{\mframed[frame=off,
background=color,
backgroundcolor=gray,
backgroundoffset=3pt]}

\startformula
\ln (1+x) =\, \graymath{x - {x^2\over2}} \,+ {x^3\over3}-\cdots.
\stopformula


The , add a tiny bit of space to prevent the gray background from crowding the equals and plus sign.

## Inline Frames

The command \inframed, similar to \framed, differs in the definition of the baseline:

\setuppapersize[A5]
\framed[frame=off,width=10em,align=flushleft]{%
Notice the difference between
\framed{framed} and \inframed{inframed},
especially considering its effect on linespacing...
}


## Dotted Frames

Using MetaPost:

\startuniqueMPgraphic{Label}
path p; p := (0,0) -- (OverlayWidth,0) -- (OverlayWidth, OverlayHeight) -- (0, OverlayHeight) -- (0,0);
draw p withpen pencircle scaled 1pt dashed withdots;
setbounds currentpicture to boundingbox OverlayBox;
\stopuniqueMPgraphic
\defineoverlay[Label][\useMPgraphic{Label}]
\def\DotPicture#1#2#3%
{%
\placefigure[][#3]{#2}%
{%
\framed[align={flushleft, low},%
frame=off,%
height=3in,%
{%
\externalfigure[#1]%
[width=3in,%
background=Label,%
backgroundoffset=1ex]%
}%
}%
}%
\def\DotText#1%
{%
\framed[frame=off,%
background=Label,%
location=low]%
{%
#1
}%
}%
\starttext

\DotPicture{sample/cow.pdf}{All your base are belong to us}{SampleRef}%

AAA \DotText{BBB} CCC \DotText{DDD}
\stoptext


Using TikZ:

\setuppapersize[A5]
\usemodule[tikz]%
\tikzstyle{block}=[rectangle,draw=black,text centered,style=dotted,inner sep=0pt]
\def\Picture#1#2#3%
{
\placefigure[left][#3]{#2}%
{%
\tikzpicture%
\node[block](init){\externalfigure[#1][width=3in]};%
\endtikzpicture%
}%
}%
\starttext
\Picture{sample/cow.pdf}{All your base are belong to us}{SampleRef}
\stoptext


# Width broad and local

Sometimes width must be adapted to a "local" \hsize (the actual text area used by TeX to determine line breaks). For example:

\setuppapersize[A5]
\setuppapersize[A7,landscape][A7,landscape]
\setupbodyfont[8pt,ss]
\starttext
\startnarrower[left]
\dontleavehmode\framed[width=local]{}
\stopnarrower
\blank
\hsize.5\hsize
\startnarrower[left]
\dontleavehmode\framed[width=local]{}
\stopnarrower
\stoptext


Here we use \setlocalhsize after \startitemize to setup the localhsize:

\setuppapersize[A5]
\setuppapersize[A7,landscape][A7,landscape]
\setupbodyfont[8pt,ss]
\setupcolors[state=start]
\setupframed[framecolor=blue]
\showframe
\starttext
\framed[width=\hsize,align=middle]{width=hsize}
\startitemize
\setlocalhsize
\item \framed[width=\hsize,align=middle]     {width=hsize}
\item \framed[width=local,align=middle]     {width=local}
\stopitemize
\stoptext


# Spacing between frame and text

\framed comes with two different types of offsets: one for the frame itself and another for the its content. The parameters frameoffset and backgroundoffset were already explained above in the section #Coloring frame background and framed text.

In addition, the parameter [strut=no] allows removal of the initial strut when framing text that is Verbatim with line breaks.

## Content offsets

Beyond those there is another four dimensions that enable you to control the safety distance of a \framed’s content by orientation. Horizontally, loffset governs the left, roffset the right offset; the same goes for boffset for the bottom and toffset for the top distance. Their effects are explored in the following example (MkIV only).

## Example

\def\offsetframe[#1]{%
{\framed[
#1=1em,
align=normal,
width=5.3cm,
height=5.3cm,
]{\tfx\input ward }
}{\it#1}
}

\starttext
\startcombination[2*2]
\offsetframe[loffset]
\offsetframe[roffset]
\offsetframe[toffset]
\offsetframe[boffset]
\stopcombination
\stoptext


## More offset parameters

Also, you can set up offset, which sets up all the [lrtb]offset parameters.

Here's a method to define a new parameter, call it hoffset, which sets up [lr]offset at the same time:

\setupframed
[loffset=\framedparameter{hoffset},
roffset=\framedparameter{hoffset},
hoffset=\zeropoint]


# Location parameter

\ruledhbox
{A
\framed[width=2cm,align=middle,location=hanging]{location\\equals\\hanging}
\framed[width=2cm,align=middle,location=depth]  {location\\equals\\depth}
\framed[width=2cm,align=middle,location=height] {location\\equals\\height}
B}
\vskip2cm
\ruledhbox
{A
\framed[width=2cm,align=middle,location=low]    {location\\equals\\low}
\framed[width=2cm,align=middle,location=line]   {location\\equals\\line}
\framed[width=2cm,align=middle,location=high]   {location\\equals\\high}
B}
\vskip2cm
\ruledhbox
{A
\framed[width=2cm,align=middle,location=top]    {location\\equals\\top}
\framed[width=2cm,align=middle,location=bottom] {location\\equals\\bottom}
\framed[width=2cm,align=middle,location=lohi]   {location\\equals\\lohi}
\framed[width=2cm,align=middle,location=middle] {location\\equals\\middle}
B}