On 2014-03-05 03:24, Hans Hagen wrote: > On 3/5/2014 5:45 AM, Rik Kabel wrote: >> I am trying to strip all leading and trailing whitespace from a string. >> I have tried two methods, neither of which is satisfactory. >> >> The first method uses \ignorespaces and \removeunwantedspaces. This >> fails to strip leading and trailing newlines. >> >> The second method uses the Lua string.strip function. The wiki >> description: >> >> Yields string with leading and trailing whitespace (spaces, >> horizontal and vertical tabs, newlines) removed >> >> suggests that this should do what I want, but I find that it removes >> internal whitespace as well as the leading and trailing whitespace. >> >> Can somebody suggest a better way of doing this? >> >> The following code demonstrates the problem: >> >> % macros=mkvi >> \starttexdefinition StringStrip #STRING >> \startluacode >> context(string.strip([==[#STRING]==])) >> \stopluacode >> \stoptexdefinition >> \long\def\test{ >> >> This is a test. \quad >> >> And it has an unexpected result. >> >> With \tex{ignorespaces} and \tex{removeunwantedspaces}, the >> newlines remain. >> >> With Lua {\tt string.strip}, the \tex{quad} at the end of a >> paragraph is preserved, but the other internal whitespace >> (including newlines) is gone! >> >> } >> \starttext >> \subject{ignorespaces and removeunwantedspaces} >> ¦\ignorespaces\test\removeunwantedspaces¦ >> >> \subject{Lua string.strip} >> ¦\StringStrip{\test}¦ >> \stoptext > > striplong > It would be nice if striplong worked, but the example fails when string.striplong is used in place of string.strip. The log says: ! LuaTeX error [string "\directlua "]:1: attempt to call field 'striplong' (a nil value) stack traceback: [string "\directlua "]:1: in main chunk. Is the format of the call different than shown in the wiki, or is a different mechanism required to quote a potentially long string? -- Rik