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
___________________________________________________________________________________