Changes

Jump to navigation Jump to search
m
Text replacement - "</cmd>" to "}}"
In [http://source.contextgarden.net/tex/context/base/core-mis.tex core-mis.tex] there are some handy command You can use the commands for graphical text manipulation defined, but also for graphics or other “building blocks”.
== \scale =Scaling=
You can insert symbols at a reduced size in the text flow. This example creates a filled square scaled to .5 ex height
<texcodecontext source=yes>\definefontsynonym[Dingbats][uzdr]\definesymbol[filledSq][\getglyphgetscaledglyph{Dingbats.5}{\char110Serif}]\def\FilledSquare% {\dontleavehmode\scale[height=0.5ex]{\symbol[filledSq]a}}</texcode> In TeX terms, \scale creates a \hbox. If TeX is in vertical mode (as it is when \startlines is in effect, because every lineis 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.<texcode>\getscaledglyph{.52}{Serif}{a}</texcodecontext>
{{todo|An explanation and example of the <cmd>\scale</cmd> command.}} =Mirroring = \mirror == <texcodecontext source=yes>There is a \mirror{\sl mirorred} word in this sentence.</texcode> <context>There is a \mirror{\sl mirorredword} word in this sentence.
</context>
<code>\mirror</code> makes a <code>\hbox</code> and mirrors the contents. If you want to have a longer paragraph mirrored, you have to make a <code>\vbox</code> manually.
<texcode>\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?'}}</texcode>  <contextsource=yes>
\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
</context>
== \rotate =Rotating =
You can rotate something by an arbitrary angle by saying something like
<texcodecontext source=yes>
\rotate[rotation=42]{the ultimate answer}
</texcode>.<context>\rotate[rotation=42]{the ultimate answer}</context>.
The rotation angle and the location (which determines around which point the content is rotated) are optional and can also be set by
 <texcodecontext source=yes>
\setuprotate[rotation=42,location=normal] % normal is the default
\rotate{the ultimate answer}
</texcodecontext==Location parameter==
An example by Hans Hagen showing the influence of <code>location=</code> argument at different angles:
<texcodecontext source=yes>
\dostepwiserecurse{0}{359}{45}
{\startlinecorrection[blank]
\hbox to .2\hsize{\hss\ruledhbox{\rotate[location=high] {\ruledhbox{\bfb (high)}}}}}
\stoplinecorrection}
</texcodecontext>
<context>
\setuplayout[location=middle,scale=.5]
\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}
</context>
You can rotate a long paragraph as well.
{{todo|Some more comments, and an example.}}==In a box==
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:
<texcodecontext source=yes>
\setuplayout[width=3cm]
\setuprotate[rotation=180,location=broad]
a\rotate{e}i\par
a\rotate{\hbox{e}}i
</context>
 
==Page dependent landscape figures==
 
Sometimes, in a double-sided portrait document, you may wish to rotate a landscape figure so that the top is towards the spine of the book – no matter whether it's on an odd or even page. In this case the {{cmd|doifoddpageelse}} command can help:
 
<texcode>
\rotate[rotation=\doifoddpageelse{90}{270}]{\externalfigure[cow]}
</texcode>
This example is by Wolfgang, from [http://www.ntg.nl/pipermail/ntg-context/2011/059834.html the thread starting here]. The thread contains other solutions to the problem. =Clipping= You can adjust the size of an element by cropping/clipping its borders: <contextsource="yes">\setuplayoutclip[widthnx=3cm3,ny=3,x=1,y=1]{\setuprotateexternalfigure[rotation=180,location=broadcow]}</context>
a<context source="yes">\setupcolors[state=start]\definedfont[SansBold at 20mm]\baselineskip 0pt % switch off the space between the stripes\rotatelineskip 0pt\def\MyLogo{\vbox{\hbox{e\CONTEXT}i\parnull}} % null is necessary for the whole bounding boxa\rotateclip[ny=3,y=1]{\hboxcolor[yellow]\MyLogo}\clip[ny=3,y=2]{e\color[orange]\MyLogo}\clip[ny=3,y=3]{\color[red]\MyLogo}i
</context>
== \see also {{cmd|setupclipping}} and {{cmd|clip }} =Further reading== In [https://source.contextgarden.net/tex/context/base/mkii/core-mis.mkii core-mis.mkii] (for MkII), there are some handy commands for graphical text manipulation defined. {{todo|What is the equivalent for mkiv ?}}
{{todo|(defined in another file)}}[[Category:Basics]][[Category:Graphics]]

Navigation menu