Changes

Jump to navigation Jump to search
5,185 bytes added ,  20:26, 20 March 2016
m
Fixing a typo.
< [[Visuals]] |
 
 
{{todo|the page devoted to all kinds of framed stuff}}
= How to achieve specific results =
== Preventing hyphenation ==
One can prevent hyphenation inside a frame by passing <{{code>|1=nothypenated</code> }} option to <{{code>|1=align</code>}}. It is also a good idea to add <{{code>|1=verytolerant</code> }} and <code>strectch</{{code> |1=stretch}} options.
<context source="yes">
\setuppapersize[A5]
\startcombination[2*2]
{\framed
align={flushleft,nothyphenated,verytolerant}] % maybe also stretch
{\input ward \endgraf}}
{flushleft,\crlf nothypenatednothyphenated, \crlf verytolerant}
{\framed
[width=5cm,
align={flushright,nothyphenated,verytolerant}] % maybe also stretch
{\input ward \endgraf}}
{flushright,\crlf nothypenatednothyphenated, \crlf verytolerant}
{\framed
[width=5cm,
align={width,nothyphenated,verytolerant}] % maybe also stretch
{\input ward \endgraf}}
{width,\crlf nothypenatednothyphenated, \crlf verytolerant}
\stopcombination
</context>
== 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 <{{code>|1=autowidth=force</code> }} option to framed.
<context source="yes">
\setuppapersize[A5]
\defineframed
[tightframed][width=5cm,autowidth=force,align=middle]
== Ruled Frames ==
<{{cmd>|framed</cmd> }} allows you to specify specific edges to be ruled.As an alternative to <{{code>|1=frame=on</code> }} (the default), one can specify<{{code>|1=topframe=on</code>}}, 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 <{{code>|1=frame=off</code>}}.
<context source="yes">
\setuppapersize[A5]
\framed[frame=off,topframe=on,leftframe=on]{A fancy title}
</context>
The thickness of the frame rule can be specified using <{{code>|1=rulethickness=</code>}}
<context source="yes">
\setuppapersize[A5]
\framed[frame=off,leftframe=on,rulethickness=2pt]{\tfa\bf A fancy title}
</context>
== Rounded Corners ==
<{{cmd>|framed</cmd> }} allows you to have round corners with <{{code>|1=corner=round</code>}}. There are also other possibilities if you want round corners but not at all places by giving an appropriate number to <{{code>|1=corner=...</code>}}. This example is taken from [[source:core-rul.tex | core-rul.tex]] and each frame is typeset using
<texcode>
<context>
\setuppapersize[A5]
\dontleavehmode\framed
[corner=0,frame=on,
{\tttf corner=\twodigits\recurselevel}%
\quad}
 
</context>
== Coloring frame background and framed text ==
First you have to turn on colors with <{{cmd>|setupcolors</cmd><tt>|2=[state=start]</tt>}}. Then you can define the background and foreground (=text) colors:
<texcode>\framed[background=color,backgroundcolor=....,foreground=color,foregroundcolor=...]{...}</texcode>
If you want to make the frame itself disappear, add a <tt>{{code|1=frame=off</tt> }} to the setups.
{||<context>
\setupcolors[state=start]
\framed
{\ssx \bf Bold white on dark blue}
</context>
|<texcode>\setupcolors[state=start]\framed [background=color,backgroundcolor=darkblue, foreground=color,foregroundcolor=white] {\ssx \bf Bold white on dark blue}</texcode>|-|<context>
\setupcolors[state=start]
\framed
{\tfx Who needs highlighter pens, anyway?}
</context>
 For filling frames with offset you have to add options |<codetexcode>frameoffset\framed [background=...color, backgroundoffsetbackgroundcolor=...yellow, frame=off] {\tfx Who needs highlighter pens, anyway?}</codetexcode>|-|<context>
\setupcolors[state=start]
\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}
</context>
|For filling frames with offset you have to add options {{code|1=frameoffset=..., backgroundoffset=...}}
<texcode>
\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}
</texcode>
|}
See the [[ColorsColor]] section 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 <{{cmd>|mframed</cmd>}}:
<context source="yes">
\setuppapersize[A5]
\setupcolors[state=start]
\def\graymath{\mframed[frame=off,
</context>
The <cmd>{{code|,</cmd> }} add a tiny bit of space to prevent the gray background from crowding the equals and plus sign.
== Inline Frames ==
The command <{{cmd>|inframed</cmd>}}, similar to <{{cmd>|framed</cmd>}},
differs in the definition of the baseline:
<context source="yes">
\setuppapersize[A5]
\framed[frame=off,width=10em,align=flushleft]{%
Notice the difference between
especially considering its effect on linespacing...
}
</context>
 
== Dotted Frames ==
 
Using MetaPost:
 
<texcode>
\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,%
width=broad]%
{%
\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
</texcode>
[[File:dotted_frame_mpost.png|650px]]
 
Using TikZ:
 
<context source="yes">
\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
</context>
= Width broad and local =
Sometimes {{code|1=width }} must be adapted to a "local" <tt>{{code|1=\hsize </tt>}}(the actual text area used by TeX to determine line breaks).For example:<context source='yes'>\setuppapersize[A5]\setuppapersize[A7,landscape][A7,landscape]\setupbodyfont[8pt,ss]\starttext\framed[width=broad]{}\startnarrower[left]\framed[width=broad]{}\dontleavehmode\framed[width=broad]{}\dontleavehmode\framed[width=local]{}\stopnarrower\blank\hsize.5\hsize\framed[width=broad]{}\startnarrower[left]\framed[width=broad]{}\dontleavehmode\framed[width=broad]{}\dontleavehmode\framed[width=local]{}\stopnarrower\stoptext</context> Here we use {{code|1=\setlocalhsize}} after {{code|1=\startitemize}} to setup the localhsize:
<context source="yes">
\setuppapersize[A5]
\setuppapersize[A7,landscape][A7,landscape]
\setupbodyfont[8pt,ss]
\stopitemize
\stoptext
</context>
 
=Spacing between frame and text=
 
{{cmd|framed}} comes with two different types of offsets:
one for the frame itself and another for the its content.
The parameters {{code|1=frameoffset}} and {{code|1=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 {{cmd|framed}}’s content by orientation.
Horizontally, {{code|1=loffset}} governs the left, {{code|1=roffset}} the right
offset;
the same goes for {{code|1=boffset}} for the bottom and {{code|1=toffset}} for
the top distance.
Their effects are explored in the following example (MkIV only).
 
==Example==
<texcode>
\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
</texcode>
 
==More offset parameters==
Also, you can set up <nowiki>offset</nowiki>, which sets up all the <nowiki>[lrtb]offset</nowiki> parameters.
 
Here's a method to define a new parameter, call it <nowiki>hoffset</nowiki>, which sets up <nowiki>[lr]offset</nowiki> at the same time:
<texcode>
\setupframed
[loffset=\framedparameter{hoffset},
roffset=\framedparameter{hoffset},
hoffset=\zeropoint]
</texcode>
 
= Location parameter =
 
<context source="yes">
\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}
</context>
* [[Overlays]]
* [[Tables Overview]]
 
= See also =
* [[:Category:Command/Frames]]

Navigation menu