Sender: |
|
Date: |
Tue, 19 Aug 2014 20:10:34 +0200 |
Reply-To: |
|
Message-ID: |
|
Subject: |
|
MIME-Version: |
1.0 |
Content-Transfer-Encoding: |
7bit |
In-Reply-To: |
|
Content-Type: |
text/plain; charset=us-ascii |
From: |
|
Parts/Attachments: |
|
|
Am 19.08.2014 um 19:21 schrieb Heiko Oberdiek:
>> \ExplSyntaxOn
>> \directlua{
>> local myarg = '\mymacro'
>> texio.write_nl('l3: argument is ' .. tostring(myarg))
>> }
>> [...]
>> First, spaces are gone in Lua code. Though, spaces are significant in Lua.
>
> `\ExplSyntaxOn' says that spaces are gone, that's the purpose of this
> command. Explicit spaces are available via `~':
Have already seen that when using l3's message mechanism, but didn't try
in \directlua. Thanks!
>> Second, variable myarg is nil with \ExplSyntaxOn. (I don't understand why.)
>
> Without spaces you get:
>
> localmyarg='\mymacro'
Should have seen that by myself. Thanks again!
> BTW, this is quite a risky way to pass the contents of user variables ot
> Lua code. Consider syntax errors, if "\mymacro" contains ', or
> "\mymacro" could even contain containing something like:
> '; very evil code; local dummy='
>
> There is \luaescapestring/\luatexluaescapestring:
>
> '\luatexluaescapestring{\mymacro}'
It's actually a language string that I'm evaluating to a number via
\the\csname l@#1\endcsname or
\int_use:N\cs:w l@#1\cs_end: in LaTeX3
If #1 contains no valid language identifier, the expression should throw
an error. So, I think I'm safe here. I'm indeed using \luaescapestring
in other circumstances.
Thanks!
Stephan Hennig
|
|
|