[NTG-context] How do I handle strings with " characters in it in METAPOST?

Gerben Wierda gerben.wierda at rna.nl
Sun Mar 29 16:25:55 CEST 2020

We should move this to the thread

What alternative for scantokens( "btex " & texcommands & " etex”)?

I’ve put my vardef there. The calls to this vardef are created by lua code.

I need to fix two things: use a string variable to build a btex-etex construct and be able to use (almost) any character in that variable. 

I can adapt the strings, if I know what I have to replace things with. I can manipulate the strings while still in lua. But if I change it and then via MP hand it to a \type{} statement in ConTeXt the replacement will be typeset literally. So, it will be pretty complex. If I drop the use of \type{} inside the btex-etex I have to ‘escape' everything that TeX doesn’t see as normal text catcode. That, again might play havoc with breaking words across lines later.


> On 29 Mar 2020, at 15:09, Wolfgang Schuster <wolfgang.schuster.lists at gmail.com> wrote:
> Gerben Wierda schrieb am 29.03.2020 um 15:06:
>>> On 29 Mar 2020, at 14:35, Wolfgang Schuster <wolfgang.schuster.lists at gmail.com <mailto:wolfgang.schuster.lists at gmail.com>> wrote:
>>> Gerben Wierda schrieb am 29.03.2020 um 14:30:
>>>>> On 29 Mar 2020, at 12:58, Wolfgang Schuster <wolfgang.schuster.lists at gmail.com <mailto:wolfgang.schuster.lists at gmail.com>> wrote:
>>>>> Gerben Wierda schrieb am 29.03.2020 um 12:52:
>>>>>> I am using MetaFun (Lua code) to create METAPOST commands from an XML file. One of the issues I am running into that in METAPOST I have to handle strings with " characters in them and METAPOST doesn’t like those. The argument using the string
>>>>>> Foo "Bar” Foo
>>>>>     ^^^
>>>>> Use correct left quotation marks or \quotation{…}.
>>>> I’m not hard coding the string, I’m reading it from an XML. So, whatever I do, I need to do it by manipulating the string.
>>>> E.g. if the string I read contains
>>>> Foo "Bar” Foo
>>>> your suggestion means  I have to programmatically change that to
>>>> Foo \quotation{Bar} Foo
>>>> which is too complicated, given that I don’t have regular expression replace at my disposal.
>>>> I might be able to change al “ instances into something else by walking through the string and building a new one.
>>> Your example uses " before Bar and not “ which is the problem.
>> Yes, I am aware that that is my problem. It is just that I do not have the luxury to decide myself what will be put in the string. It must work for any string. So, I will have to be putting that string to \type and make sure that is used as the label.
> Does btex .. etex help or can't you change the strings and replace the quotation marks before you pass them to MetaPost?
> \starttext
> \startMPcode
> draw textext.urt("One");
> draw btex "Two" etex shifted (0,15);
> label.urt("Three",(0,30));
> label.urt(btex "Four" etex,(0,45));
> \stopMPcode
> \stoptext
> Wolfgang

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ntg.nl/pipermail/ntg-context/attachments/20200329/ff85f695/attachment.htm>

More information about the ntg-context mailing list