On 4/3/2020 5:36 PM, Gerben Wierda wrote:
Thanks to Taco, the solution was to simply use:

function doubleQuotableEscapedConTeXtString( str)
   local rep = {
       [1] =  { '{', '{\\textbraceleft}' },
       [2] =  { '}', '{\\textbraceright}' },
       [3] =  { '#', '{\\texthash}' },
       [4] =  { '$', '{\\textdollar}' },
       [5] =  { '&', '{\\textampersand}' },
       [6] =  { '%', '{\\textpercent}' },
       [7] =  { '\\','{\\textbackslash}' },
       [8] =  { '|', '{\\textbar}' },
       [9] =  { '_', '{\\textunderscore}' },
       [10] = { '~', '{\\textasciitilde}' },
       [11] = { '^', '{\\textasciicircum}' },
       [12] = { '"', "\"&ditto&\"" },
   }
   return lpeg.replacer(rep):match(str)
end

And the string becomes something that can safely be given toi METAPOST and safely handled by TeX when called from METAPOST via textext()
more efficient

local rep = lpeg.replacer {
  { '{', '{\\textbraceleft}' },
  { '}', '{\\textbraceright}' },
  { '#', '{\\texthash}' },
  { '$', '{\\textdollar}' },
  { '&', '{\\textampersand}' },
  { '%', '{\\textpercent}' },
  { '\\','{\\textbackslash}' },
  { '|', '{\\textbar}' },
  { '_', '{\\textunderscore}' },
  { '~', '{\\textasciitilde}' },
  { '^', '{\\textasciicircum}' },
  { '"', "\"&ditto&\"" },
}

function doubleQuotableEscapedConTeXtString( str)
    return rep:match(str)
end

this is probably also ok:

local rep = {
    ["\""] = "\\char34 ",
    ["#"]  = "\\char35 ",
    ["$"]  = "\\char36 ",
    ["%"]  = "\\char37 ",
    ["&"]  = "\\char38 ",
    ["\\"] = "\\char92 ",
    ["^"]  = "\\char94 ",
    ["_"]  = "\\char95 ",
    ["{"]  = "\\char123 ",
    ["|"]  = "\\char124 ",
    ["}"]  = "\\char125 ",
    ["~"]  = "\\char126 ",
}

function doubleQuotableEscapedConTeXtString(str)
    return (string.gsub(str,".",rep))
end


-----------------------------------------------------------------
                                          Hans Hagen | PRAGMA ADE
              Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
       tel: 038 477 53 69 | www.pragma-ade.nl | 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://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to