Difference between revisions of "Scaling Rotating Mirroring Clipping"
m (Reverted edits by 210.13.77.66 (Talk) to last version by Hraban) |
|||
Line 1: | Line 1: | ||
− | In [http://source.contextgarden.net/tex/context/base/core-mis.mkii core-mis.mkii] ([http://source.contextgarden.net/tex/context/base/core-mis.mkiv core-mis.mkiv] for MkIV) there are some handy | + | In [http://source.contextgarden.net/tex/context/base/core-mis.mkii core-mis.mkii] ([http://source.contextgarden.net/tex/context/base/core-mis.mkiv core-mis.mkiv] for MkIV) there are some handy commands for graphical text manipulation defined. |
== \scale == | == \scale == |
Revision as of 17:49, 14 December 2010
In core-mis.mkii (core-mis.mkiv for MkIV) there are some handy commands for graphical text manipulation defined.
\scale
You can insert symbols at a reduced size in the text flow. This example creates a filled square scaled to .5 ex height
\definefontsynonym[Dingbats][uzdr] \definesymbol[filledSq][\getglyph{Dingbats}{\char110}] \def\FilledSquare% {\dontleavehmode\scale[height=0.5ex]{\symbol[filledSq]}}
In TeX terms, \scale creates a \hbox. If TeX is in vertical mode (as it is when \startlines is in effect, because every line is a paragraph by itself in the mode), then a simple \hbox is not a good enough hint to make it switch to horizontal (paragraph) mode.
Hans then posted a simpler way.
\getscaledglyph{.5}{Serif}{a}
TODO: An explanation and example of the \\scale command. (See: To-Do List) |
\mirror
There is a \mirror{\sl mirorred} word in this sentence.
\mirror
makes a \hbox
and mirrors the contents. If you want to have a longer paragraph mirrored, you have to make a \vbox
manually.
\mirror{\vbox{Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do: once or twice she had peeped into the book her sister was reading, but it had no pictures or conversations in it, `and what is the use of a book,' thought Alice `without pictures or conversation?'}}
\rotate
You can rotate something by an arbitrary angle by saying something like
\rotate[rotation=42]{the ultimate answer}
.
.
The rotation angle and the location (which determines around which point the content is rotated) are optional and can also be set by
\setuprotate[rotation=42,location=normal] % normal is the default \rotate{the ultimate answer}
An example by Hans Hagen showing the influence of location=
argument at different angles:
\dostepwiserecurse{0}{359}{45} {\startlinecorrection[blank] \hbox {\expanded{\setuprotate[rotation=\recurselevel]}% \traceboxplacementtrue \hbox to .2\hsize{\hss\ruledhbox{\rotate[location=depth] {\ruledhbox{\bfb (depth)}}}}% \hbox to .2\hsize{\hss\ruledhbox{\rotate[location=fit] {\ruledhbox{\bfb (fit)}}}}% \hbox to .2\hsize{\hss\ruledhbox{\rotate[location=broad] {\ruledhbox{\bfb (broad)}}}}% \hbox to .2\hsize{\hss\ruledhbox{\rotate[location=normal]{\ruledhbox{\bfb (normal)}}}}% \hbox to .2\hsize{\hss\ruledhbox{\rotate[location=high] {\ruledhbox{\bfb (high)}}}}} \stoplinecorrection}
You can rotate a long paragraph as well.
TODO: Some more comments, and an example. (See: To-Do List) |
Depending on the usage you will sometimes probably want to include the content of what you wish to rotate into a box. Compare the following two examples:
\setuplayout[width=3cm] \setuprotate[rotation=180,location=broad] a\rotate{e}i\par a\rotate{\hbox{e}}i
\clip
(This is not just about text manipulation...)
\clip[nx=3,ny=3,x=1,y=1]{\externalfigure[cow]}
\setupcolors[state=start] \definedfont[SansBold at 20mm] \baselineskip 0pt % switch off the space between the stripes \lineskip 0pt \def\MyLogo{\vbox{\hbox{\CONTEXT}\null}} % null is necessary for the whole bounding box \clip[ny=3,y=1]{\color[yellow]\MyLogo} \clip[ny=3,y=2]{\color[orange]\MyLogo} \clip[ny=3,y=3]{\color[red]\MyLogo}
see also \setupclipping and \clip