ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* Strings [[...]] inside \startluacode \stopluacode
@ 2010-04-26 13:26 Jaroslav Hajtmar
  2010-04-26 14:07 ` Taco Hoekwater
  0 siblings, 1 reply; 2+ messages in thread
From: Jaroslav Hajtmar @ 2010-04-26 13:26 UTC (permalink / raw)
  To: mailing list for ConTeXt users

Hello.

I am experimenting with courious things in LuaTeX (combining TeX and Lua 
codes) and I have a problem with lua strings containing TeX definitions.

When string (containing definition of TeX macro with \directlua call-in) 
is creating in the separate lua file (reading by command dofile) then 
script does work OK, but when string is inside \startluacode 
\stopluacode environment, then does work only when
i use text string inside ' ' for example:
luastring='\\def\\texmacro\#1\{\\directlua\{luafunction(\#1)\}\}'

Script does not work when i use text inside [[ ... ]]!
(message undefined control sequence)

for example:

luastring=[[
\def\texmacro#1{
\directlua{luafunction(#1)}
}
]]

Where is a problem? Is there any solutions with [[ ... ]]

Thanx Jaroslav


============================================
Here are all functioning scripts:
1) all in one file:

\startluacode
function luafunction(num)
  if num==nil then num = 1 end
     for i=1,num do
         tex.sprint(i..') Hello\\par ')
     end
end

luastring='\\def\\texmacro\#1\{\\directlua\{luafunction(\#1)\}\}'
tex.sprint(luastring)
\stopluacode

\def\texmacrotwo#1{
\directlua{luafunction(#1)}
\par
}


\starttext
     \texmacro{7}
     \texmacrotwo{10}
\stoptext


=====================================================
2) Script in two separates files:

%this is file ulet.tex :
\directlua{dofile("ulet.lua")}

\def\texmacrotwo#1{
     \directlua{luafunction(#1)}
     \par
}


\starttext

\texmacro{7}

\texmacrotwo{10}

\stoptext



And here is content of external file ulet.lua:


function luafunction(num)
     for i=1,num do
         tex.sprint(i..[[) Hello\par]])
     end
end

luastring=[[
\def\texmacro#1{
\directlua{luafunction(#1)}
}
]]

tex.sprint(luastring)



___________________________________________________________________________________
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://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Strings [[...]] inside \startluacode \stopluacode
  2010-04-26 13:26 Strings [[...]] inside \startluacode \stopluacode Jaroslav Hajtmar
@ 2010-04-26 14:07 ` Taco Hoekwater
  0 siblings, 0 replies; 2+ messages in thread
From: Taco Hoekwater @ 2010-04-26 14:07 UTC (permalink / raw)
  To: hajtmar, mailing list for ConTeXt users

Jaroslav Hajtmar wrote:
> 
> Where is a problem? Is there any solutions with [[ ... ]]

Category codes, of course. :)

\startluacode leaves the backslash at category code 0, and expands
its argument so that you can use TeX macros inside the environment
(which is normally what is wanted). The special macro \\ is let to
\relax so that it does not actually expand, which is why normal quoted
lua strings work out ok.

Anyway, this works, but you loose the benefits of [[ ... ]] strings:

   \startluacode
   luastring=[[
   \\def\\texmacro#1{\\directlua{luafunction(#1)}}
   ]]
   luastring = luastring:gsub('\\\\','\\')
   tex.sprint(luastring)
  \stopluacode


Generally speaking, you are much better off with an external file
because in an external file the category code of the backslash
character (or any other character) does not matter, and then you
only have to worry about lua input syntax.

Best wishes,
Taco
___________________________________________________________________________________
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://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2010-04-26 14:07 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-04-26 13:26 Strings [[...]] inside \startluacode \stopluacode Jaroslav Hajtmar
2010-04-26 14:07 ` Taco Hoekwater

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).