Difference between revisions of "Scaling Rotating Mirroring Clipping"

From Wiki
Jump to navigation Jump to search
m
({{Getting started navbox}})
(20 intermediate revisions by 10 users not shown)
Line 1: Line 1:
In [http://source.contextgarden.net/tex/context/base/core-mis.tex core-mis.tex] there are some handy command for graphical text manipulation defined.
+
< [[Graphics]] | [[Using_Graphics]] >
 +
 
 +
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.
 +
 
 +
This page’s title is misleading, since you can use the commands also for graphics and other “building blocks”.
  
 
== \scale ==
 
== \scale ==
  
[TODO]
+
You can insert symbols at a reduced size in the text flow.
 +
 
 +
<context source=yes>
 +
\getscaledglyph{.5}{Serif}{a} a \getscaledglyph{2}{Serif}{a}
 +
</context>
  
 
== \mirror ==
 
== \mirror ==
 +
<context source=yes>
 +
There is a \mirror{\sl mirorred} {\sl word} in this sentence.
 +
</context>
  
<texcode>
+
<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.
There is a \mirror{\sl mirorred} word in this sentence.
 
</texcode>
 
  
<context>
+
<context source=yes>
There is a \mirror{\sl mirorred} word in this sentence.
+
\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?'}}
 
</context>
 
</context>
 
<code>\mirror</code> makes a <code>\hbox</code> and mirrors the contents. If you want to have a longer paragraph mirorred, you have to make a <code>\vbox</code> manually.
 
 
[TODO: an example]
 
  
 
== \rotate ==
 
== \rotate ==
  
 
You can rotate something by an arbitrary angle by saying something like  
 
You can rotate something by an arbitrary angle by saying something like  
<texcode>
+
<context source=yes>
 
\rotate[rotation=42]{the ultimate answer}
 
\rotate[rotation=42]{the ultimate answer}
</texcode>.
+
</context>
<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
 
The rotation angle and the location (which determines around which point the content is rotated) are optional and can also be set by
<texcode>
+
 
 +
<context source=yes>
 
\setuprotate[rotation=42,location=normal] % normal is the default
 
\setuprotate[rotation=42,location=normal] % normal is the default
 
\rotate{the ultimate answer}
 
\rotate{the ultimate answer}
</texcode>
+
</context>
 +
 
 +
=== location parameter ===
  
 
An example by Hans Hagen showing the influence of <code>location=</code> argument at different angles:
 
An example by Hans Hagen showing the influence of <code>location=</code> argument at different angles:
  
<texcode>
+
<context source=yes>
\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}
 
</texcode>
 
 
 
<context>
 
\setuplayout[location=middle,scale=.5]
 
 
\dostepwiserecurse{0}{359}{45}
 
\dostepwiserecurse{0}{359}{45}
 
   {\startlinecorrection[blank]
 
   {\startlinecorrection[blank]
Line 66: Line 58:
 
</context>
 
</context>
  
[some more comments to be added]
 
  
 
You can rotate a long paragraph as well.
 
You can rotate a long paragraph as well.
  
[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:
 
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:
  
<texcode>
+
<context source=yes>
 
\setuplayout[width=3cm]
 
\setuplayout[width=3cm]
 
\setuprotate[rotation=180,location=broad]
 
\setuprotate[rotation=180,location=broad]
Line 80: Line 71:
 
a\rotate{e}i\par
 
a\rotate{e}i\par
 
a\rotate{\hbox{e}}i
 
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</cmd> command can help:
 +
 +
<texcode>
 +
\rotate[rotation=\doifoddpageelse{90}{270}]{\externalfigure[cow]}
 
</texcode>
 
</texcode>
  
<context>
+
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.
\setuplayout[width=3cm]
+
 
\setuprotate[rotation=180,location=broad]
+
== \clip ==
 +
 
 +
You can adjust the size of an element by cropping/clipping its borders:
 +
 
 +
<context source="yes">
 +
\clip[nx=3,ny=3,x=1,y=1]{\externalfigure[cow]}
 +
</context>
  
a\rotate{e}i\par
+
<context source="yes">
a\rotate{\hbox{e}}i
+
\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}
 
</context>
 
</context>
  
== \crop ==
+
see also <cmd>setupclipping</cmd> and <cmd>clip</cmd>
  
[TODO (defined in another file)]
+
{{Getting started navbox}}

Revision as of 11:10, 26 November 2012

< Graphics | Using_Graphics >

In core-mis.mkii (core-mis.mkiv for MkIV) there are some handy commands for graphical text manipulation defined.

This page’s title is misleading, since you can use the commands also for graphics and other “building blocks”.

\scale

You can insert symbols at a reduced size in the text flow.

\getscaledglyph{.5}{Serif}{a} a \getscaledglyph{2}{Serif}{a}

\mirror

There is a \mirror{\sl mirorred} {\sl 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}

location parameter

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.

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:

\setuplayout[width=3cm]
\setuprotate[rotation=180,location=broad]

a\rotate{e}i\par
a\rotate{\hbox{e}}i

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 \doifoddpageelse command can help:

\rotate[rotation=\doifoddpageelse{90}{270}]{\externalfigure[cow]}

This example is by Wolfgang, from the thread starting here. The thread contains other solutions to the problem.

\clip

You can adjust the size of an element by cropping/clipping its borders:

\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

Template:Getting started navbox