Changes

Jump to navigation Jump to search
6,881 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*12]
{\framed
[width=5cm,
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 nothyphenated, \crlf verytolerant}{\framed [width=5cm, align={width,nothyphenated,verytolerant}] % maybe also stretch {\input ward \endgraf}}{width,\crlf nothyphenated, \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]
\tightframed{A really really long line that is split at 5cm}
</context>
 
== Ruled Frames ==
 
{{cmd|framed}} allows you to specify specific edges to be ruled.
As an alternative to {{code|1=frame=on}} (the default), one can specify
{{code|1=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 {{code|1=frame=off}}.
 
<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=}}
 
<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>framed</cmd>|mframed}}:
<texcodecontext source="yes">\setuppapersize[A5]
\setupcolors[state=start]
\def\graymath{\mframed[frame=off,
\ln (1+x) =\, \graymath{x - {x^2\over2}} \,+ {x^3\over3}-\cdots.
\stopformula
</context>
 
The {{code|,}} add a tiny bit of space to prevent the gray background from crowding the equals and plus sign.
 
== Inline Frames ==
 
The command {{cmd|inframed}}, similar to {{cmd|framed}},
differs in the definition of the baseline:
 
<context source="yes">
\setuppapersize[A5]
\framed[frame=off,width=10em,align=flushleft]{%
Notice the difference between
\framed{framed} and \inframed{inframed},
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: <contextsource="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" {{code|1=\hsize }}(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]
\setupcolors[state=start]
\defsetupframed[framecolor=blue]\showframe\starttext\framed[width=\hsize,align=middle]{width=hsize}\startitemize\setlocalhsize\item \framed[width=\graymathhsize,align=middle] {width=hsize}\item \mframedframed[framewidth=offbroad,align=middle] {width=broad}\item \framed[width=local,align=middle] {width=local}\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 backgroundand framed text]]. In addition, the parameter [strut=colorno] 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 rightoffset;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}, backgroundcolorroffset=gray\framedparameter{hoffset}, backgroundoffsethoffset=3pt\zeropoint]}</texcode> = Location parameter =
<context source="yes">\startformularuledhbox {A \ln (1+x) framed[width=2cm,align=middle,location=hanging]{location\\equals\\hanging} \framed[width=2cm,align=middle, location=depth] {location\graymath\equals\\depth} \framed[width=2cm,align=middle,location=height] {x - 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] {x^2location\\over2equals\\high} B} \vskip2cm\ruledhbox {A \framed[width=2cm,+ align=middle,location=top] {x^3location\\equals\\over3top}- \cdots.framed[width=2cm,align=middle,location=bottom] {location\\equals\\bottom} \framed[width=2cm,align=middle,location=lohi] {location\stopformula\equals\\lohi} \framed[width=2cm,align=middle,location=middle] {location\\equals\\middle} B}
</context>
 
The <cmd>,</cmd> add a tiny bit of space to prevent the gray background from crowding the equals and plus sign.
= Similar topics =
* [[Overlays]]
* [[Tables Overview]]
 
= See also =
* [[:Category:Command/Frames]]

Navigation menu