ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* Solution to a "superscript" problem?
@ 2011-10-12 19:43 Otso Helenius
  2011-10-12 20:09 ` Hans Hagen
  0 siblings, 1 reply; 4+ messages in thread
From: Otso Helenius @ 2011-10-12 19:43 UTC (permalink / raw)
  To: ntg-context

Hello,

I've been trying to come up with a few methods to add definitions to 
text with the help of the metafun and context manuals. The first method 
adds the definition as sort of a "superscript" on top of the word, and 
the second one marks multiple words with a curly bracket and adds the 
definition on top of the tip of the bracket.

Here is the (ugly and hackish) code:



\startuniqueMPgraphic{defline}
path p; p:=(0,0)..controls (0,1) and (1,1)..(1,1)--(6,1)..controls(7,1) 
and (7,1)..(7,2)--(7,2)..controls(7,1) and 
(7,1)..(8,1)--(13,1)..controls(13,1) and (14,1)..(14,0);
draw (0,0)--(0,12pt) withcolor white;
draw p xscaled (\overlaywidth/15) yscaled 5 shifted (0,9mm) withpen 
pencircle scaled 0.25mm withcolor red;
\stopuniqueMPgraphic

\defineoverlay[curlybracket][\includeMPgraphic{defline}]

\def\sentencedef[#1][#2]{\setbox\scratchbox=\hbox{#2}\hbox to 
\the\wd\scratchbox{\cbox{\hbox{\tfxx\color[red] 
#1}\\\hbox{\framed[background=curlybracket,frame=off]{#2}}}}}

\def\worddef[#1][#2]{\setbox\scratchbox=\hbox{#2}\hbox to 
\the\wd\scratchbox{\cbox{\hbox{\rotate[rotation=25]{\tfxx\color[red] 
#1}}\\\hbox{#2}}}}

\starttext

\hbox{\worddef[def1][Lorem] ipsum \worddef[def2][dolor] sit 
\worddef[def3][amet] consectetur \worddef[def4][adipiscing] elit.}

\hbox{\sentencedef[def5][Lorem ipsum] dolor sit \sentencedef[def6][amet 
consectetur] adipiscing elit.}

\stoptext



I haven't figured a way to add the curly bracket graphic neatly nor 
position the definition correctly on top of it.

I would be very interested in any advice regarding these two functions 
and how to rewrite both of them in a more elegant way.



Best regards,
-- 
  * Otso Helenius
  * Helsinki University, Faculty of Mathematics
  * Aalto University, Faculty of Architecture
___________________________________________________________________________________
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://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________


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

* Re: Solution to a "superscript" problem?
  2011-10-12 19:43 Solution to a "superscript" problem? Otso Helenius
@ 2011-10-12 20:09 ` Hans Hagen
  2011-10-12 20:26   ` Otso Helenius
  2011-10-12 20:55   ` Aditya Mahajan
  0 siblings, 2 replies; 4+ messages in thread
From: Hans Hagen @ 2011-10-12 20:09 UTC (permalink / raw)
  To: context; +Cc: ntg-context

On 12-10-2011 21:43, Otso Helenius wrote:
> Hello,
>
> I've been trying to come up with a few methods to add definitions to
> text with the help of the metafun and context manuals. The first method
> adds the definition as sort of a "superscript" on top of the word, and
> the second one marks multiple words with a curly bracket and adds the
> definition on top of the tip of the bracket.
>
> Here is the (ugly and hackish) code:
>
>
>
> \startuniqueMPgraphic{defline}
> path p; p:=(0,0)..controls (0,1) and (1,1)..(1,1)--(6,1)..controls(7,1)
> and (7,1)..(7,2)--(7,2)..controls(7,1) and
> (7,1)..(8,1)--(13,1)..controls(13,1) and (14,1)..(14,0);
> draw (0,0)--(0,12pt) withcolor white;
> draw p xscaled (\overlaywidth/15) yscaled 5 shifted (0,9mm) withpen
> pencircle scaled 0.25mm withcolor red;
> \stopuniqueMPgraphic
>
> \defineoverlay[curlybracket][\includeMPgraphic{defline}]
>
> \def\sentencedef[#1][#2]{\setbox\scratchbox=\hbox{#2}\hbox to
> \the\wd\scratchbox{\cbox{\hbox{\tfxx\color[red]
> #1}\\\hbox{\framed[background=curlybracket,frame=off]{#2}}}}}
>
> \def\worddef[#1][#2]{\setbox\scratchbox=\hbox{#2}\hbox to
> \the\wd\scratchbox{\cbox{\hbox{\rotate[rotation=25]{\tfxx\color[red]
> #1}}\\\hbox{#2}}}}
>
> \starttext
>
> \hbox{\worddef[def1][Lorem] ipsum \worddef[def2][dolor] sit
> \worddef[def3][amet] consectetur \worddef[def4][adipiscing] elit.}
>
> \hbox{\sentencedef[def5][Lorem ipsum] dolor sit \sentencedef[def6][amet
> consectetur] adipiscing elit.}
>
> \stoptext
>
>
>
> I haven't figured a way to add the curly bracket graphic neatly nor
> position the definition correctly on top of it.
>
> I would be very interested in any advice regarding these two functions
> and how to rewrite both of them in a more elegant way.

Wikifyable ...

\startuniqueMPgraphic{defline}{width}

     path p ;
     p :=
         ( 0,0) .. controls  (0,1) and ( 1,1) ..
         ( 1,1) --
         ( 6,1) .. controls  (7,1) and ( 7,1) ..
         ( 7,2) --
         ( 7,2) .. controls  (7,1) and ( 7,1) ..
         ( 8,1) --
         (13,1) .. controls (13,1) and (14,1) ..
         (14,0) ;
     draw
         p
         xysized (\MPvar{width},ExHeight)
         withpen pencircle scaled .1ExHeight
         withcolor \MPcolor{red} ;

\stopuniqueMPgraphic


\defineoverlay[curlybracket][\includeMPgraphic{defline}]

\unexpanded\def\WordDef
   {\dodoubleargument\doWordDef}

\def\doWordDef[#1][#2]%
   {\dontleavehmode\hbox\bgroup
      \setbox\scratchbox\hbox{#2}%
      \raise\strutheight\hbox to 
\wd\scratchbox{\hss\rotate[rotation=25]{\tfxx\color[red]#1}\hss}%
      \hskip-\wd\scratchbox
      \box\scratchbox
    \egroup}

\unexpanded\def\LineDef
   {\dodoubleargument\doLineDef}

\def\doLineDef[#1][#2]%
   {\dontleavehmode\hbox\bgroup
      \setbox\scratchbox\hbox{#2}%
      \raise1.5\strutht\hbox to 
\wd\scratchbox{\hss\rotate[rotation=25]{\tfxx\color[red]#1}\hss}%
      \hskip-\wd\scratchbox
      \raise0.9\strutht\hbox to 
\wd\scratchbox{\uniqueMPgraphic{defline}{width=\the\wd\scratchbox}}%
      \hskip-\wd\scratchbox
      \box\scratchbox
    \egroup}


\starttext

\WordDef[def1][Lorem] ipsum \WordDef[def2][dolor] sit 
\WordDef[def3][amet] consectetur \WordDef[def4][adipiscing] elit.

\LineDef[def5][Lorem ipsum] dolor sit \LineDef[def6][amet consectetur] 
adipiscing elit.

\stoptext



-----------------------------------------------------------------
                                           Hans Hagen | PRAGMA ADE
               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
     tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com
                                              | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
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://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________


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

* Re:  Solution to a "superscript" problem?
  2011-10-12 20:09 ` Hans Hagen
@ 2011-10-12 20:26   ` Otso Helenius
  2011-10-12 20:55   ` Aditya Mahajan
  1 sibling, 0 replies; 4+ messages in thread
From: Otso Helenius @ 2011-10-12 20:26 UTC (permalink / raw)
  To: ntg-context

> \unexpanded\def\WordDef
>   {\dodoubleargument\doWordDef}
>
> \def\doWordDef[#1][#2]%
>   {\dontleavehmode\hbox\bgroup
>      \setbox\scratchbox\hbox{#2}%
>      \raise\strutheight\hbox to
> \wd\scratchbox{\hss\rotate[rotation=25]{\tfxx\color[red]#1}\hss}%
>      \hskip-\wd\scratchbox
>      \box\scratchbox
>    \egroup}

Thank you! I will wikify the examples with an explanation on the 
syntax. However I would be interested in learning more about the bgrop, 
dontleavehmode, raise etc. commands. The cont-eni manual uses them but 
without explanation on their exact syntax and use cases.

-- 
  * Otso Helenius
  * Helsinki University, Faculty of Mathematics
  * Aalto University, Faculty of Architecture
___________________________________________________________________________________
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://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________


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

* Re: Solution to a "superscript" problem?
  2011-10-12 20:09 ` Hans Hagen
  2011-10-12 20:26   ` Otso Helenius
@ 2011-10-12 20:55   ` Aditya Mahajan
  1 sibling, 0 replies; 4+ messages in thread
From: Aditya Mahajan @ 2011-10-12 20:55 UTC (permalink / raw)
  To: mailing list for ConTeXt users

On Wed, 12 Oct 2011, Hans Hagen wrote:

> On 12-10-2011 21:43, Otso Helenius wrote:
>> Hello,
>> 
>> I've been trying to come up with a few methods to add definitions to
>> text with the help of the metafun and context manuals. The first method
>> adds the definition as sort of a "superscript" on top of the word, and
>> the second one marks multiple words with a curly bracket and adds the
>> definition on top of the tip of the bracket.
>> 
>> Here is the (ugly and hackish) code:
>> 
>> 
>> 
>> \startuniqueMPgraphic{defline}
>> path p; p:=(0,0)..controls (0,1) and (1,1)..(1,1)--(6,1)..controls(7,1)
>> and (7,1)..(7,2)--(7,2)..controls(7,1) and
>> (7,1)..(8,1)--(13,1)..controls(13,1) and (14,1)..(14,0);
>> draw (0,0)--(0,12pt) withcolor white;
>> draw p xscaled (\overlaywidth/15) yscaled 5 shifted (0,9mm) withpen
>> pencircle scaled 0.25mm withcolor red;
>> \stopuniqueMPgraphic
>> 
>> \defineoverlay[curlybracket][\includeMPgraphic{defline}]
>> 
>> \def\sentencedef[#1][#2]{\setbox\scratchbox=\hbox{#2}\hbox to
>> \the\wd\scratchbox{\cbox{\hbox{\tfxx\color[red]
>> #1}\\\hbox{\framed[background=curlybracket,frame=off]{#2}}}}}
>> 
>> \def\worddef[#1][#2]{\setbox\scratchbox=\hbox{#2}\hbox to
>> \the\wd\scratchbox{\cbox{\hbox{\rotate[rotation=25]{\tfxx\color[red]
>> #1}}\\\hbox{#2}}}}
>> 
>> \starttext
>> 
>> \hbox{\worddef[def1][Lorem] ipsum \worddef[def2][dolor] sit
>> \worddef[def3][amet] consectetur \worddef[def4][adipiscing] elit.}
>> 
>> \hbox{\sentencedef[def5][Lorem ipsum] dolor sit \sentencedef[def6][amet
>> consectetur] adipiscing elit.}
>> 
>> \stoptext
>> 
>> 
>> 
>> I haven't figured a way to add the curly bracket graphic neatly nor
>> position the definition correctly on top of it.
>> 
>> I would be very interested in any advice regarding these two functions
>> and how to rewrite both of them in a more elegant way.
>
> Wikifyable ...
>
> \startuniqueMPgraphic{defline}{width}
>
>    path p ;
>    p :=
>        ( 0,0) .. controls  (0,1) and ( 1,1) ..
>        ( 1,1) --
>        ( 6,1) .. controls  (7,1) and ( 7,1) ..
>        ( 7,2) --
>        ( 7,2) .. controls  (7,1) and ( 7,1) ..
>        ( 8,1) --
>        (13,1) .. controls (13,1) and (14,1) ..
>        (14,0) ;
>    draw
>        p
>        xysized (\MPvar{width},ExHeight)
>        withpen pencircle scaled .1ExHeight
>        withcolor \MPcolor{red} ;
>
> \stopuniqueMPgraphic
>
>
> \defineoverlay[curlybracket][\includeMPgraphic{defline}]
>
> \unexpanded\def\WordDef
>  {\dodoubleargument\doWordDef}
>
> \def\doWordDef[#1][#2]%
>  {\dontleavehmode\hbox\bgroup
>     \setbox\scratchbox\hbox{#2}%
>     \raise\strutheight\hbox to 
> \wd\scratchbox{\hss\rotate[rotation=25]{\tfxx\color[red]#1}\hss}%
>     \hskip-\wd\scratchbox
>     \box\scratchbox
>   \egroup}
>
> \unexpanded\def\LineDef
>  {\dodoubleargument\doLineDef}
>
> \def\doLineDef[#1][#2]%
>  {\dontleavehmode\hbox\bgroup
>     \setbox\scratchbox\hbox{#2}%
>     \raise1.5\strutht\hbox to 
> \wd\scratchbox{\hss\rotate[rotation=25]{\tfxx\color[red]#1}\hss}%
>     \hskip-\wd\scratchbox
>     \raise0.9\strutht\hbox to 
> \wd\scratchbox{\uniqueMPgraphic{defline}{width=\the\wd\scratchbox}}%
>     \hskip-\wd\scratchbox
>     \box\scratchbox
>   \egroup}
>
>
> \starttext
>
> \WordDef[def1][Lorem] ipsum \WordDef[def2][dolor] sit \WordDef[def3][amet] 
> consectetur \WordDef[def4][adipiscing] elit.
>
> \LineDef[def5][Lorem ipsum] dolor sit \LineDef[def6][amet consectetur] 
> adipiscing elit.
>
> \stoptext

Another solution, which might be easier to understand. This does not 
affect the lineheight. Depending on the usage, that may or may not be 
desirable.

\unprotect
\startuniqueMPgraphic{defline}
      path p ;
      p :=
          ( 0,0) .. controls  (0,1) and ( 1,1) ..
          ( 1,1) --
          ( 6,1) .. controls  (7,1) and ( 7,1) ..
          ( 7,2) --
          ( 7,2) .. controls  (7,1) and ( 7,1) ..
          ( 8,1) --
          (13,1) .. controls (13,1) and (14,1) ..
          (14,0) ;
      draw
          p
          xysized (OverlayWidth,ExHeight)
          shifted (0,OverlayHeight)
          withpen pencircle scaled .1ExHeight
          withcolor \MPcolor{\framedparameter\c!framecolor} ;

      label.top((textext("\tfxx\color[red] \framedparameter\c!text") rotated 25),
                (OverlayWidth/2, OverlayHeight+ExHeight));

      setbounds currentpicture to boundingbox OverlayBox ;

\stopuniqueMPgraphic

\defineoverlay[curlybracket][\includeMPgraphic{defline}]

\defineframed[LineDef]
              [
               \c!location=\v!low,
               \c!frame=\v!off,
               \c!background=curlybracket,
               \c!framecolor=red,
              ]
\protect

\starttext

\leavevmode\LineDef[text=def5]{Lorem ipsum} dolor sit \LineDef[text=def6]{amet consectetur}
adipiscing elit.

\stoptext
___________________________________________________________________________________
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://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________


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

end of thread, other threads:[~2011-10-12 20:55 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-10-12 19:43 Solution to a "superscript" problem? Otso Helenius
2011-10-12 20:09 ` Hans Hagen
2011-10-12 20:26   ` Otso Helenius
2011-10-12 20:55   ` Aditya Mahajan

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).