[NTG-context] catch % in gsub("%", "\\letterpercent")
Wolfgang Schuster
wolfgang.schuster.lists at gmail.com
Thu Aug 27 18:16:31 CEST 2020
Pablo Rodriguez schrieb am 27.08.2020 um 17:56:
> On 8/27/20 5:30 PM, Taco Hoekwater wrote:
>>> [...]
>>> Using Lua gsub(), I need to replace something like:
>>>
>>> string.gsub([[\xmlraw{#1}{.}]], "%", "\\letterpercent")
>>
>> Double it: %%
>>
>> See also https://www.lua.org/manual/5.3/manual.html#6.4.1 , but the
>> mention of %% is a bit hidden.
>
> Many thanks for your replies, Taco and Hans.
>
> I’m afraid this doesn’t work (and I need \xmlraw there):
>
> \startbuffer[demo]
> <html>
> <body>
> <div id="First">
> <p>The <span class="special">% best</span> paragraph.</p>
> </div>
> </body>
> </html>
> \stopbuffer
>
> \startxmlsetups xml:initialize
> \xmlsetsetup{#1}{html}{xml:gen}
> \stopxmlsetups
>
> \xmlregistersetup{xml:initialize}
>
> \startxmlsetups xml:gen
> \startitemize
> \xmlfilter{#1}{/**/span[@class='special']/command(xml:special)}
> \stopitemize
> \stopxmlsetups
>
> \startxmlsetups xml:special
> \startitem
> \cldcontext{string.gsub([[\xmlraw{#1}{.}]], "%%",
> "\\letterpercent")}
> \stopitem
> \stopxmlsetups
This works fine with your example
\startxmlsetups xml:special
\startitem
\xmlflush{#1}
\stopitem
\stopxmlsetups
and to escape special characters you can use context.escape()
\startxmlsetups xml:special
\startitem
\cldcontext{context.escape([[\xmlraw{#1}{.}]])}
\stopitem
\stopxmlsetups
Wolfgang
More information about the ntg-context
mailing list