ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* Passing the parameters of a frame in an environment \startMPcode ... \stopMPcode
@ 2020-04-19 20:55 Fabrice Couvreur
  2020-04-20  7:21 ` Wolfgang Schuster
  0 siblings, 1 reply; 6+ messages in thread
From: Fabrice Couvreur @ 2020-04-19 20:55 UTC (permalink / raw)
  To: mailing list for ConTeXt users


[-- Attachment #1.1: Type: text/plain, Size: 1023 bytes --]

Hi,
I try to reproduce the figure as faithfully as possible. I tried for the
rounded corners to put the key corner = round, but it does not work.
Thanks for your help.
Fabrice

\usecolors[xwi]
\definecolor [prune] [r=1.29,g=.20,b=.83]
\starttext
\setupframed[frameletter][corner=round,align=normal]

\startMPcode

     draw outlinetext.f
         ("\framed[frameletter]{A}")
         (withcolor darkred withpen pencircle scaled 1/10)
          rotated 5 xsized 2cm ;

     draw outlinetext.f
         ("\framed[frameletter]{L}")
         (withcolor green withpen pencircle scaled 1/10)
          rotated -5 xsized 2cm shifted (2cm,0);

     draw outlinetext.f
         ("\framed[frameletter]{E}")
         (withcolor \MPcolor{blueviolet} withpen pencircle scaled 1/10)
          rotated 5 xsized 2cm shifted (4.5cm,0);

     draw outlinetext.f
         ("\framed[frameletter]{A}")
         (withcolor \MPcolor{prune} withpen pencircle scaled 1/10)
          rotated -5 xsized 2cm shifted (6.5cm,0);

\stopMPcode

\stoptext

[-- Attachment #1.2: Type: text/html, Size: 1788 bytes --]

[-- Attachment #2: alea.jpg --]
[-- Type: image/jpeg, Size: 44594 bytes --]

[-- Attachment #3: Type: text/plain, Size: 493 bytes --]

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Passing the parameters of a frame in an environment \startMPcode ... \stopMPcode
  2020-04-19 20:55 Passing the parameters of a frame in an environment \startMPcode ... \stopMPcode Fabrice Couvreur
@ 2020-04-20  7:21 ` Wolfgang Schuster
  2020-04-20  8:23   ` Rudolf Bahr
  0 siblings, 1 reply; 6+ messages in thread
From: Wolfgang Schuster @ 2020-04-20  7:21 UTC (permalink / raw)
  To: mailing list for ConTeXt users, Fabrice Couvreur

Fabrice Couvreur schrieb am 19.04.2020 um 22:55:
> Hi,
> I try to reproduce the figure as faithfully as possible. I tried for the 
> rounded corners to put the key corner = round, but it does not work.

1. To create a new framed-instance you need \defineframe, \setupframed 
isn't enough to set the values.

    I guess you assumed this works similar to xtables but this mechanism 
sets a few values to assure \setupxtable is enough in certain cases but 
even here you need \definextable in certain cases.

    When you create a new instance you have to use the name of the new 
instance as command name, e.g. \frameletter or use the \placeframed 
command which takes the name as argument, e.g. \placeframed[frameletter].

2. You can't pass the name of a framed-instance to \framed (backwards 
compatibility, performance ...), this is only possible with \startframed.

3. ConTeXt uses different mechanism to draw rectangular (unless you draw 
a closed frame) and rounded frame and the mechanism for rounded frames 
doesn't work with outlinetext.

4. To achieve the desired result you can now a) use MetaPost to draw the 
complete card (letter plus frame) or b) use only TeX to put the letter 
in a frame and rotate it.

%%%% begin tex example
\usecolors[svg]

\defineframed
   [frameletter]
   [width=1.25em,
    height=1.75em,
    foregroundstyle=\ssbfc,
    corner=round,
    radius=0.1\bodyfontsize,
    rulethickness=1pt]

\starttext

\startTEXpage[offset=\linewidth]
\dontleavehmode
\rotate [rotation=5] {\color[darkred]   {\frameletter{A}}}
\rotate [rotation=-5]{\color[green]     {\frameletter{L}}}
\rotate [rotation=5] {\color[mediumblue]{\frameletter{E}}}
\rotate [rotation=-5]{\color[darkviolet]{\frameletter{A}}}
\stopTEXpage

\stoptext
%%%% end tex example

Wolfgang
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Passing the parameters of a frame in an environment \startMPcode ... \stopMPcode
  2020-04-20  7:21 ` Wolfgang Schuster
@ 2020-04-20  8:23   ` Rudolf Bahr
  2020-04-20  8:36     ` Wolfgang Schuster
  0 siblings, 1 reply; 6+ messages in thread
From: Rudolf Bahr @ 2020-04-20  8:23 UTC (permalink / raw)
  To: mailing list for ConTeXt users

On Mon, Apr 20, 2020 at 09:21:41AM +0200, Wolfgang Schuster wrote:
> Fabrice Couvreur schrieb am 19.04.2020 um 22:55:
> > Hi,
> > I try to reproduce the figure as faithfully as possible. I tried for the
> > rounded corners to put the key corner = round, but it does not work.
> 
> 1. To create a new framed-instance you need \defineframe, \setupframed isn't
> enough to set the values.
> 
>    I guess you assumed this works similar to xtables but this mechanism sets
> a few values to assure \setupxtable is enough in certain cases but even here
> you need \definextable in certain cases.
> 
>    When you create a new instance you have to use the name of the new
> instance as command name, e.g. \frameletter or use the \placeframed command
> which takes the name as argument, e.g. \placeframed[frameletter].
> 
> 2. You can't pass the name of a framed-instance to \framed (backwards
> compatibility, performance ...), this is only possible with \startframed.
> 
> 3. ConTeXt uses different mechanism to draw rectangular (unless you draw a
> closed frame) and rounded frame and the mechanism for rounded frames doesn't
> work with outlinetext.
> 
> 4. To achieve the desired result you can now a) use MetaPost to draw the
> complete card (letter plus frame) or b) use only TeX to put the letter in a
> frame and rotate it.
> 
> %%%% begin tex example
> \usecolors[svg]
> 
> \defineframed
>   [frameletter]
>   [width=1.25em,
>    height=1.75em,
>    foregroundstyle=\ssbfc,
>    corner=round,
>    radius=0.1\bodyfontsize,
>    rulethickness=1pt]
> 
> \starttext
> 
> \startTEXpage[offset=\linewidth]
> \dontleavehmode
> \rotate [rotation=5] {\color[darkred]   {\frameletter{A}}}
> \rotate [rotation=-5]{\color[green]     {\frameletter{L}}}
> \rotate [rotation=5] {\color[mediumblue]{\frameletter{E}}}
> \rotate [rotation=-5]{\color[darkviolet]{\frameletter{A}}}
> \stopTEXpage
> 
> \stoptext
> %%%% end tex example
> 
> Wolfgang


Nice Example and good explanation, Wolfgang. But why did you use the command
"dontleavehmode"? It doesn't seem to be necessary in this example.

Rudolf
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Passing the parameters of a frame in an environment \startMPcode ... \stopMPcode
  2020-04-20  8:23   ` Rudolf Bahr
@ 2020-04-20  8:36     ` Wolfgang Schuster
  2020-04-20  9:00       ` Fabrice Couvreur
  0 siblings, 1 reply; 6+ messages in thread
From: Wolfgang Schuster @ 2020-04-20  8:36 UTC (permalink / raw)
  To: mailing list for ConTeXt users, Rudolf Bahr

Rudolf Bahr schrieb am 20.04.2020 um 10:23:
> On Mon, Apr 20, 2020 at 09:21:41AM +0200, Wolfgang Schuster wrote:
>> Fabrice Couvreur schrieb am 19.04.2020 um 22:55:
>>> Hi,
>>> I try to reproduce the figure as faithfully as possible. I tried for the
>>> rounded corners to put the key corner = round, but it does not work.
>>
>> 1. To create a new framed-instance you need \defineframe, \setupframed isn't
>> enough to set the values.
>>
>>     I guess you assumed this works similar to xtables but this mechanism sets
>> a few values to assure \setupxtable is enough in certain cases but even here
>> you need \definextable in certain cases.
>>
>>     When you create a new instance you have to use the name of the new
>> instance as command name, e.g. \frameletter or use the \placeframed command
>> which takes the name as argument, e.g. \placeframed[frameletter].
>>
>> 2. You can't pass the name of a framed-instance to \framed (backwards
>> compatibility, performance ...), this is only possible with \startframed.
>>
>> 3. ConTeXt uses different mechanism to draw rectangular (unless you draw a
>> closed frame) and rounded frame and the mechanism for rounded frames doesn't
>> work with outlinetext.
>>
>> 4. To achieve the desired result you can now a) use MetaPost to draw the
>> complete card (letter plus frame) or b) use only TeX to put the letter in a
>> frame and rotate it.
>>
>> %%%% begin tex example
>> \usecolors[svg]
>>
>> \defineframed
>>    [frameletter]
>>    [width=1.25em,
>>     height=1.75em,
>>     foregroundstyle=\ssbfc,
>>     corner=round,
>>     radius=0.1\bodyfontsize,
>>     rulethickness=1pt]
>>
>> \starttext
>>
>> \startTEXpage[offset=\linewidth]
>> \dontleavehmode
>> \rotate [rotation=5] {\color[darkred]   {\frameletter{A}}}
>> \rotate [rotation=-5]{\color[green]     {\frameletter{L}}}
>> \rotate [rotation=5] {\color[mediumblue]{\frameletter{E}}}
>> \rotate [rotation=-5]{\color[darkviolet]{\frameletter{A}}}
>> \stopTEXpage
>>
>> \stoptext
>> %%%% end tex example
>>
>> Wolfgang
> 
> Nice Example and good explanation, Wolfgang. But why did you use the command
> "dontleavehmode"? It doesn't seem to be necessary in this example.

I wrote the example without TeXpage where I needed \doneleavehmode to 
keep all cards on the same line. At the end I just added TeXpage to 
create a cropped image with with a small border and forgot to remove it.

Wolfgang

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Passing the parameters of a frame in an environment \startMPcode ... \stopMPcode
  2020-04-20  8:36     ` Wolfgang Schuster
@ 2020-04-20  9:00       ` Fabrice Couvreur
  2020-04-20  9:19         ` Wolfgang Schuster
  0 siblings, 1 reply; 6+ messages in thread
From: Fabrice Couvreur @ 2020-04-20  9:00 UTC (permalink / raw)
  To: mailing list for ConTeXt users


[-- Attachment #1.1: Type: text/plain, Size: 3753 bytes --]

Hi Wolfgang,
Thank you very much ; as usual your explanations are always clear and your
approach to the problem intelligent and original. I would however like to
know the way in which we can use the command \frameletter except for the
rounded corners with outlinetext. For example, this doesn't work.

\startMPcode

     draw outlinetext.f
         ("\frameletter{A}")
         (withcolor darkred withpen pencircle scaled 1/10)
          rotated 5 xsized 2cm ;

\stopMPcode

Fabrice

Le lun. 20 avr. 2020 à 10:36, Wolfgang Schuster <
wolfgang.schuster.lists@gmail.com> a écrit :

> Rudolf Bahr schrieb am 20.04.2020 um 10:23:
> > On Mon, Apr 20, 2020 at 09:21:41AM +0200, Wolfgang Schuster wrote:
> >> Fabrice Couvreur schrieb am 19.04.2020 um 22:55:
> >>> Hi,
> >>> I try to reproduce the figure as faithfully as possible. I tried for
> the
> >>> rounded corners to put the key corner = round, but it does not work.
> >>
> >> 1. To create a new framed-instance you need \defineframe, \setupframed
> isn't
> >> enough to set the values.
> >>
> >>     I guess you assumed this works similar to xtables but this
> mechanism sets
> >> a few values to assure \setupxtable is enough in certain cases but even
> here
> >> you need \definextable in certain cases.
> >>
> >>     When you create a new instance you have to use the name of the new
> >> instance as command name, e.g. \frameletter or use the \placeframed
> command
> >> which takes the name as argument, e.g. \placeframed[frameletter].
> >>
> >> 2. You can't pass the name of a framed-instance to \framed (backwards
> >> compatibility, performance ...), this is only possible with
> \startframed.
> >>
> >> 3. ConTeXt uses different mechanism to draw rectangular (unless you
> draw a
> >> closed frame) and rounded frame and the mechanism for rounded frames
> doesn't
> >> work with outlinetext.
> >>
> >> 4. To achieve the desired result you can now a) use MetaPost to draw the
> >> complete card (letter plus frame) or b) use only TeX to put the letter
> in a
> >> frame and rotate it.
> >>
> >> %%%% begin tex example
> >> \usecolors[svg]
> >>
> >> \defineframed
> >>    [frameletter]
> >>    [width=1.25em,
> >>     height=1.75em,
> >>     foregroundstyle=\ssbfc,
> >>     corner=round,
> >>     radius=0.1\bodyfontsize,
> >>     rulethickness=1pt]
> >>
> >> \starttext
> >>
> >> \startTEXpage[offset=\linewidth]
> >> \dontleavehmode
> >> \rotate [rotation=5] {\color[darkred]   {\frameletter{A}}}
> >> \rotate [rotation=-5]{\color[green]     {\frameletter{L}}}
> >> \rotate [rotation=5] {\color[mediumblue]{\frameletter{E}}}
> >> \rotate [rotation=-5]{\color[darkviolet]{\frameletter{A}}}
> >> \stopTEXpage
> >>
> >> \stoptext
> >> %%%% end tex example
> >>
> >> Wolfgang
> >
> > Nice Example and good explanation, Wolfgang. But why did you use the
> command
> > "dontleavehmode"? It doesn't seem to be necessary in this example.
>
> I wrote the example without TeXpage where I needed \doneleavehmode to
> keep all cards on the same line. At the end I just added TeXpage to
> create a cropped image with with a small border and forgot to remove it.
>
> Wolfgang
>
>
> ___________________________________________________________________________________
> If your question is of interest to others as well, please add an entry to
> the Wiki!
>
> maillist : ntg-context@ntg.nl /
> http://www.ntg.nl/mailman/listinfo/ntg-context
> webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
> archive  : https://bitbucket.org/phg/context-mirror/commits/
> wiki     : http://contextgarden.net
>
> ___________________________________________________________________________________
>

[-- Attachment #1.2: Type: text/html, Size: 6337 bytes --]

[-- Attachment #2: Type: text/plain, Size: 493 bytes --]

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Passing the parameters of a frame in an environment \startMPcode ... \stopMPcode
  2020-04-20  9:00       ` Fabrice Couvreur
@ 2020-04-20  9:19         ` Wolfgang Schuster
  0 siblings, 0 replies; 6+ messages in thread
From: Wolfgang Schuster @ 2020-04-20  9:19 UTC (permalink / raw)
  To: mailing list for ConTeXt users, Fabrice Couvreur

Fabrice Couvreur schrieb am 20.04.2020 um 11:00:
> Hi Wolfgang,
> Thank you very much ; as usual your explanations are always clear and 
> your approach to the problem intelligent and original. I would however 
> like to know the way in which we can use the command \frameletter except 
> for the rounded corners with outlinetext. For example, this doesn't work.
> 
> \startMPcode
> 
>       draw outlinetext.f
>           ("\frameletter{A}")
>           (withcolor darkred withpen pencircle scaled 1/10)
>            rotated 5 xsized 2cm ;
> 
> \stopMPcode

Take a look at the log-file and you should see a line like this:

%%%% begin error message
tex error       > tex error on line 8 in file ./test.tex: ! Undefined 
control sequence

<argument> \par draw outlinetext.f ("\frameletter
%%%% end error message

As the error message tells you the command \frameletter doesn't exist, 
you can fix this with \defineframed[frameletter]

%%%% begin example
\defineframed [frameletter]

\starttext

\startMPcode

     draw outlinetext.f
         ("\frameletter{A}")
         (withcolor darkred withpen pencircle scaled 1/10)
         rotated 5 xsized 2cm ;

\stopMPcode

\stoptext
%%%% end example

Wolfgang
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2020-04-20  9:19 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-19 20:55 Passing the parameters of a frame in an environment \startMPcode ... \stopMPcode Fabrice Couvreur
2020-04-20  7:21 ` Wolfgang Schuster
2020-04-20  8:23   ` Rudolf Bahr
2020-04-20  8:36     ` Wolfgang Schuster
2020-04-20  9:00       ` Fabrice Couvreur
2020-04-20  9:19         ` Wolfgang Schuster

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).