"overscored" or "overlined" text … (or whatever it should be called)
Dear all, I am trying to reproduce with ConTeXt an old french text that contains numerous abbreviations, mostly of two types: - words cut off by means of a "period", with the last letter of the complete word as a superscript above the period. - "overscores" --either for single characters, for instance in words with double consonances, like "comme". One of these is sometimes omitted and replaced by an "overscore" on the previous vowel -- or on an entire abbreviation, such as "coe" for "comme" and "nre" for "notre"; they become coe and nre overscored. Now I would like to reproduce these as closely as possible. For the "period + superscript letter" I found a solution: \lohi[]{\cdot}{t} (for superscript t), nearly perfect. The only imperfection I can see is that the dot sits slightly below the baseline. Is there a way to get it on the baseline? The overscore on a single character presents no problem. For an overscore on a complete word I have not found a solution. Three individual overscores on a three-letter word give a broken line; I do not know how to merge the three line components. (Incidentally, this hack does not work with mkiv) The other solution I have tried is to put the word in a frame with a top-frame only. But this way the word (abbreviation) hangs underneath the base-line. Using \inframed instead of \framed makes no difference. There appears not to be something like \setupinframed. I have attached an example. Thanks in advance for any help. Regards, Robert Blackstone
On 25-1-2012 13:14, Robert Blackstone wrote:
Dear all,
I am trying to reproduce with ConTeXt an old french text that contains numerous abbreviations, mostly of two types: - words cut off by means of a "period", with the last letter of the complete word as a superscript above the period. - "overscores" --either for single characters, for instance in words with double consonances, like "comme". One of these is sometimes omitted and replaced by an "overscore" on the previous vowel -- or on an entire abbreviation, such as "coe" for "comme" and "nre" for "notre"; they become coe and nre overscored.
\overbar{test} btw, never do a \setupframed globally as it will infect many derived frames components ... best do a \defineframed ... then Hans ----------------------------------------------------------------- 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 -----------------------------------------------------------------
while we are at it: how to do do strikethrough text? there is a changelog on contextgarden which says it was added, but \strike or \strikethrough are not defined. i have (a diagonal) one here, but it doesn’t really work in math mode (the text inside is normal). that being said, is there something like \ifthiswascalledinmathmode{then}{else}? \def\strike#1{\tikz[baseline=(c.base)]{ \node[inner sep=0pt] (c) {#1}; \draw (c.south west) -- (c.north east); }}
On 25-1-2012 18:04, Philipp A. wrote:
while we are at it: how to do do strikethrough text? there is a changelog on contextgarden which says it was added, but \strike or \strikethrough are not defined.
i have (a diagonal) one here, but it doesn’t really work in math mode (the text inside is normal). that being said, is there something like \ifthiswascalledinmathmode{then}{else}?
\ifmmode
\def\strike#1{\tikz[baseline=(c.base)]{ \node[inner sep=0pt] (c) {#1}; \draw (c.south west) -- (c.north east); }}
probably more efficient: \startuniqueMPgraphic{strikeme} path p ; p := OverlayBox topenlarged -ExHeight bottomenlarged -ExHeight ; draw llcorner p -- urcorner p withcolor OverlayColor ; \stopuniqueMPgraphic \defineoverlay[strikeme][\uniqueMPgraphic{strikeme}] \defineframed[StrikeMe][background=strikeme,frame=off,offset=0pt,location=low,backgroundcolor=blue] \starttext \dorecurse{100}{test \StrikeMe{now \recurselevel} test $\StrikeMe{x}$ test \StrikeMe{$x$} test } \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 -----------------------------------------------------------------
2012/1/25 Hans Hagen
\ifmmode
thanks. that was obvious… $\StrikeMe{x}$
unfortunately this does the same as my tikz version: it exits math mode: $\StrikeMe{\ifmmode math mode! \else no math mode :( \fi} \ifmmode math mode. \else wat \fi$ returns no math mode :( *mathmode.*
Am 25.01.2012 um 20:20 schrieb Philipp A.:
2012/1/25 Hans Hagen
\ifmmode thanks. that was obvious…
$\StrikeMe{x}$
unfortunately this does the same as my tikz version: it exits math mode:
$\StrikeMe{\ifmmode math mode! \else no math mode :( \fi} \ifmmode math mode. \else wat \fi$
returns
no math mode :( math mode.
\framed puts the content in a \hbox and when you put a \hbox in a math environment the text in the box is typeset in text mode, this feature is used for the \text command. To get now the content of the \StrikeMe command in math mode a different definition. \defineframed[StrikeMeFrame][background=strikeme,frame=off,offset=0pt,location=low,backgroundcolor=blue] \define[1]\StrikeMe {\ifmmode \StrikeMeFrame{$#1$}% \else \StrikeMeFrame{#1}% \fi} Wolfgang
On Wed, 25 Jan 2012, Wolfgang Schuster wrote:
Am 25.01.2012 um 20:20 schrieb Philipp A.:
2012/1/25 Hans Hagen
\ifmmode thanks. that was obvious…
$\StrikeMe{x}$
unfortunately this does the same as my tikz version: it exits math mode:
$\StrikeMe{\ifmmode math mode! \else no math mode :( \fi} \ifmmode math mode. \else wat \fi$
returns
no math mode :( math mode.
\framed puts the content in a \hbox and when you put a \hbox in a math environment the text in the box is typeset in text mode, this feature is used for the \text command. To get now the content of the \StrikeMe command in math mode a different definition.
\defineframed[StrikeMeFrame][background=strikeme,frame=off,offset=0pt,location=low,backgroundcolor=blue]
\define[1]\StrikeMe {\ifmmode \StrikeMeFrame{$#1$}% \else \StrikeMeFrame{#1}% \fi}
Better is to use: \StrikeMeFrame{\mathsurround\zeropoint$#1$}. But for this to work in subscripts and superscripts, you must use math palette. IIRC, \mframed does that. In principle: \mframed[background=strikeme]{...} should work (untested). @Hans: Can we have \definemframed etc as well? Aditya
2012/1/25 Aditya Mahajan
Better is to use: \StrikeMeFrame{\mathsurround\zeropoint$#1$}. But for this to work in subscripts and superscripts, you must use math palette. IIRC, \mframed does that. In principle:
\mframed[background=strikeme]{**...}
should work (untested).
@Hans: Can we have \definemframed etc as well?
Aditya
so this should work? ‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒ \startuniqueMPgraphic{strikeme} path p ; p := OverlayBox topenlarged -ExHeight bottomenlarged -ExHeight ; draw llcorner p -- urcorner p withcolor OverlayColor ; \stopuniqueMPgraphic \defineoverlay[strikeme][\uniqueMPgraphic{strikeme}] \def\strike#1{% \ifmmode% \mframed[background=strikeme,frame=off]{#1}% \else% \inframed[background=strikeme,frame=off]{#1}% \fi} \starttext \startformula {\strike2a + \strike ab \over \strike a} = a \stopformula Works in text, \strike{two}too! \stoptext
On Thu, 26 Jan 2012, Philipp A. wrote:
2012/1/25 Aditya Mahajan
Better is to use: \StrikeMeFrame{\mathsurround\zeropoint$#1$}. But for this to work in subscripts and superscripts, you must use math palette. IIRC, \mframed does that. In principle:
\mframed[background=strikeme]{**...}
should work (untested).
@Hans: Can we have \definemframed etc as well?
Aditya
so this should work?
‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒‒
\startuniqueMPgraphic{strikeme} path p ; p := OverlayBox topenlarged -ExHeight bottomenlarged -ExHeight ; draw llcorner p -- urcorner p withcolor OverlayColor ; \stopuniqueMPgraphic
\defineoverlay[strikeme][\uniqueMPgraphic{strikeme}]
\def\strike#1{% \ifmmode% \mframed[background=strikeme,frame=off]{#1}% \else% \inframed[background=strikeme,frame=off]{#1}% \fi}
\starttext \startformula {\strike2a + \strike ab \over \strike a} = a \stopformula
Works in text, \strike{two}too!
\stoptext
Don't use {... \over ...} as it will mess up the calculation of math style. \frac{...}{...} is more robust. Aditya
On 25-1-2012 21:17, Aditya Mahajan wrote:
@Hans: Can we have \definemframed etc as well?
sure, the next beta will have ... \starttext \dontleavehmode test \mframed{x} test $x^{\mframed{x}}$ test \inmframed{x} test $x^{\inmframed{x}}$ test \definemathframed[whatever][location=low] \dontleavehmode test \whatever{x} test $x^{\whatever[framecolor=red]{x}}$ test \definemathframed[another][whatever][background=color,backgroundcolor=blue,foregroundcolor=white] \dontleavehmode test \another{x} test $x^{\another[framecolor=red]{x}}$ test \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 -----------------------------------------------------------------
participants (5)
-
Aditya Mahajan
-
Hans Hagen
-
Philipp A.
-
Robert Blackstone
-
Wolfgang Schuster