From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.comp.tex.context/71701 Path: news.gmane.org!not-for-mail From: Aditya Mahajan Newsgroups: gmane.comp.tex.context Subject: Re: Solution to a "superscript" problem? Date: Wed, 12 Oct 2011 16:55:40 -0400 (EDT) Message-ID: References: <6c17f9dcc01621f20e74d6673d9a0bca@pi-xi.net> <4E95F3EE.303@wxs.nl> Reply-To: mailing list for ConTeXt users NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit X-Trace: dough.gmane.org 1318453015 6378 80.91.229.12 (12 Oct 2011 20:56:55 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Wed, 12 Oct 2011 20:56:55 +0000 (UTC) To: mailing list for ConTeXt users Original-X-From: ntg-context-bounces@ntg.nl Wed Oct 12 22:56:51 2011 Return-path: Envelope-to: gctc-ntg-context-518@m.gmane.org Original-Received: from balder.ntg.nl ([195.12.62.10]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1RE5r8-0004yw-Oa for gctc-ntg-context-518@m.gmane.org; Wed, 12 Oct 2011 22:56:50 +0200 Original-Received: from localhost (localhost [127.0.0.1]) by balder.ntg.nl (Postfix) with ESMTP id EC343CB02A; Wed, 12 Oct 2011 22:56:49 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at balder.ntg.nl Original-Received: from balder.ntg.nl ([127.0.0.1]) by localhost (balder.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 8L-WQeJTDkjU; Wed, 12 Oct 2011 22:56:49 +0200 (CEST) Original-Received: from balder.ntg.nl (localhost [127.0.0.1]) by balder.ntg.nl (Postfix) with ESMTP id 1176ECB032; Wed, 12 Oct 2011 22:56:47 +0200 (CEST) Original-Received: from localhost (localhost [127.0.0.1]) by balder.ntg.nl (Postfix) with ESMTP id 759E0CB032 for ; Wed, 12 Oct 2011 22:56:45 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at balder.ntg.nl Original-Received: from balder.ntg.nl ([127.0.0.1]) by localhost (balder.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with LMTP id f7WP9Hs0DtCi for ; Wed, 12 Oct 2011 22:56:43 +0200 (CEST) Original-Received: from filter1-nij.mf.surf.net (filter1-nij.mf.surf.net [195.169.124.152]) by balder.ntg.nl (Postfix) with ESMTP id 33490CB02A for ; Wed, 12 Oct 2011 22:56:43 +0200 (CEST) Original-Received: from hackers.mr.itd.umich.edu (smtp.mail.umich.edu [141.211.14.81]) by filter1-nij.mf.surf.net (8.14.3/8.14.3/Debian-5+lenny1) with ESMTP id p9CKuePb027174 for ; Wed, 12 Oct 2011 22:56:42 +0200 Original-Received: FROM [10.0.2.15] (wpa044006.Wireless.McGill.CA [142.157.44.6]) By hackers.mr.itd.umich.edu ID 4E95FF06.E8F5A.8515 ; Authuser adityam; 12 Oct 2011 16:56:39 EDT In-Reply-To: <4E95F3EE.303@wxs.nl> User-Agent: Alpine 2.02 (LNX 1266 2009-07-14) X-Bayes-Prob: 0.0001 (Score 0, tokens from: @@RPTN) X-CanIt-Geo: ip=141.211.14.81; country=US; region=MI; city=Ann Arbor; postalcode=48109; latitude=42.2923; longitude=-83.7145; metrocode=505; areacode=734; http://maps.google.com/maps?q=42.2923,-83.7145&z=6 X-CanItPRO-Stream: uu:ntg-context@ntg.nl (inherits from uu:default, base:default) X-Canit-Stats-ID: 07FHUUEJp - 974ebdaa85ff - 20111012 X-Scanned-By: CanIt (www . roaringpenguin . com) on 195.169.124.152 X-BeenThere: ntg-context@ntg.nl X-Mailman-Version: 2.1.12 Precedence: list List-Id: mailing list for ConTeXt users List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: ntg-context-bounces@ntg.nl Errors-To: ntg-context-bounces@ntg.nl Xref: news.gmane.org gmane.comp.tex.context:71701 Archived-At: 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 ___________________________________________________________________________________