ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* Re: luatexing
       [not found] <mailman.4851.1207985975.4340.ntg-context@ntg.nl>
  2008-04-12 19:47 ` mplib Wolfgang Werners-Lucchini
@ 2008-04-12 19:47 ` Wolfgang Werners-Lucchini
  2008-04-13  8:59   ` luatexing Taco Hoekwater
  2008-04-13 11:58   ` luatexing Hans Hagen
  1 sibling, 2 replies; 7+ messages in thread
From: Wolfgang Werners-Lucchini @ 2008-04-12 19:47 UTC (permalink / raw)
  To: ntg-context

On 12 Apr 2008 at 9:39, ntg-context-request@ntg.nl wrote:

> > I have a few silly questions about
> > 
> >   tex.print()
> > 
> > To produce 
> > 
> >   $\sqrt{2}=1.4142135623731$
> > 
> > it should be enough to write
> > 
> >   tex.print("$\\sqrt{2}=" .. math.sqrt(2) .. "$")
> 
> this is because \\ can mean anything, for instance it may expand to
> \par  or \crlf or ..

May be I do not understand this right, but I thought that '\' is luas 
escape character and tex.print() returns '\' not '\\'. So TeX sees no 
macro '\\' which could expand to whatever.
 
> there is a \luaescapestring primitive which catches things like
> quotes

Can you make a little example of usage?

> tex.print("\detokenize{$\sqrt{2}=}" .. math.sqrt(2) .. "$")

Could not find the definition of \detokenize.

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


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

* Re: mplib
       [not found] <mailman.4851.1207985975.4340.ntg-context@ntg.nl>
@ 2008-04-12 19:47 ` Wolfgang Werners-Lucchini
  2008-04-13 10:31   ` mplib Taco Hoekwater
  2008-04-12 19:47 ` luatexing Wolfgang Werners-Lucchini
  1 sibling, 1 reply; 7+ messages in thread
From: Wolfgang Werners-Lucchini @ 2008-04-12 19:47 UTC (permalink / raw)
  To: ntg-context

On 12 Apr 2008 at 9:39, ntg-context-request@ntg.nl wrote:

> > \startlua
> > mp = mplib.new ( {
> >     hash_size = 100000,
> >     main_memory = 2000000,
> >     param_size = 100000,
> > } )
> > 
> > if mp then
> >     res = mp:execute(
> > "beginfig(1) draw (0,0) .. (1,1) .. (2,1); endfig; bye;" )
> >     tex.print("[" .. tostring(res.status) .. "]")
> >     mp:finish()
> > end
> > \stoplua
> 
> no format, so beginfig, draw etc are unknown

I thought 'plain.mem' is the default. But I see, there exists only 
'metafun.mem'.

So I  wrote:
------------------------------------------------------
mp = mplib.new ( {
    hash_size = 100000,
    main_memory = 2000000,
    param_size = 100000,
    mem_name = "metafun.mem"
} )
------------------------------------------------------
and it get the same result

> metapost.process("metafun","some commands")
> 
> may work better
------------------------------------------------------
\startlua
mp = mplib.new ( {
    hash_size = 100000,
    main_memory = 2000000,
    param_size = 100000
} )

if mp then
    res = metapost.process("metafun","beginfig(1) draw (0,0) .. (1,1) 
.. (2,1); endfig; bye;")
    tex.print("[" .. tostring(res.status) .. "]")
    mp:finish()
end
\stoplua
------------------------------------------------------

results in :

------------------------------------------------------
mplib          : loading format: metafun.mp, name: 
d:/context/tex/texmf-cache/luatex-
cache/context/c80dc1fd5292ec817c6e82c295beaf1e/formats/cont-en-
metafun.mem
! Emergency stop.
\@@expanded ..... "]")
--     mp:finish()
-- end
}
                                                  
l.54 \stoplua
             
!  ==> Fatal error occurred, no output PDF file produced!
------------------------------------------------------

why does it load 'metafun.mp'?


after that I tried

------------------------------------------------------
\startlua
mp = mplib.new ( {
    hash_size = 100000,
    main_memory = 2000000,
    param_size = 100000,
    mem_name = "metafun.mem"
} )

if mp then
    res = metapost.process(mp,
         "beginfig(1) draw (0,0) .. (1,1) .. (2,1); endfig; bye;")
    tex.print("[" .. tostring(res.status) .. "]")
    mp:finish()
end
\stoplua
------------------------------------------------------

which gives the following error:

------------------------------------------------------
report >> error: This is MetaPost, Version 1.003 (Cweb version 0.40)

I can't find the PLAIN mem file!
------------------------------------------------------


What else should I check to find the error?

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


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

* Re: luatexing
  2008-04-12 19:47 ` luatexing Wolfgang Werners-Lucchini
@ 2008-04-13  8:59   ` Taco Hoekwater
  2008-04-13 11:58   ` luatexing Hans Hagen
  1 sibling, 0 replies; 7+ messages in thread
From: Taco Hoekwater @ 2008-04-13  8:59 UTC (permalink / raw)
  To: mailing list for ConTeXt users

Wolfgang Werners-Lucchini wrote:
> 
> May be I do not understand this right, but I thought that '\' is luas 
> escape character and tex.print() returns '\' not '\\'. So TeX sees no 
> macro '\\' which could expand to whatever.

This depends on how exactly you have input that line (which
in turn nicely demonstrates why you should post minimal examples,
instead of out-of-context questions).

I tried:

   % engine=luatex
   \starttext
   \directlua0 {tex.print('$\\sqrt{2}=1.4142135623731$')}
   \ctxlua{tex.print('$\\sqrt{2}=1.4142135623731$')}
   \startluacode
   tex.print('$\\sqrt{2}=1.4142135623731$')
   \stopluacode
   \stoptext

And all three work as they should. So what did you input, exactly, that
gave wrong results?

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


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

* Re: mplib
  2008-04-12 19:47 ` mplib Wolfgang Werners-Lucchini
@ 2008-04-13 10:31   ` Taco Hoekwater
  0 siblings, 0 replies; 7+ messages in thread
From: Taco Hoekwater @ 2008-04-13 10:31 UTC (permalink / raw)
  To: mailing list for ConTeXt users

Wolfgang Werners-Lucchini wrote:
> On 12 Apr 2008 at 9:39, ntg-context-request@ntg.nl wrote:
> 
>>> \startlua
>>> mp = mplib.new ( {
>>>     hash_size = 100000,
>>>     main_memory = 2000000,
>>>     param_size = 100000,
>>> } )
>>>
>>> if mp then
>>>     res = mp:execute(
>>> "beginfig(1) draw (0,0) .. (1,1) .. (2,1); endfig; bye;" )
>>>     tex.print("[" .. tostring(res.status) .. "]")
>>>     mp:finish()
>>> end
>>> \stoplua
>> no format, so beginfig, draw etc are unknown
> 
> I thought 'plain.mem' is the default. But I see, there exists only 
> 'metafun.mem'.

If you want to "do the low-level thing", you have to read the
luatex manual carefully. MPlib is just like standalone metapost
in that it wants to load a mem file in non-ini mode, and that
file has to be generated before being used. Here is what you
wanted to do, using just the library core (I did cheat just a
little bit though, I added "dump;" at the end of my plain.mp):

% start low-level
\startlua
local function finder(name, mode, ftype)
     if mode=="w" then
         return name
     else
         return kpse.find_file(name,ftype)
     end
end
mp = mplib.new ( {
     hash_size = 100000,
     main_memory = 2000000,
     param_size = 100000,
     find_file = finder,
     ini_version = true
} )
if mp then
     res = mp:execute('plain')
     mp:finish()
end

mp = mplib.new ( {
     hash_size = 100000,
     main_memory = 2000000,
     param_size = 100000,
     find_file = finder,
} )

if mp then
     res = mp:execute("\\beginfig(1) draw (0,0) .. (1,1) .. (2,1); 
endfig; bye;" )
     tex.print("[" .. tostring(res.status) .. "]")
     mp:finish()
end
\stoplua
% stop low-level

If you just want to run plain metapost images inside of
a context document (instead of metafun), it is much easier
to use Hans' high-level API (once again, you need "dump;"
at the end of plain.mp):

\startlua
metapost.process(
   metapost.format("plain"),
   "beginfig(0); draw (0,0) .. (1,1) .. (2,1); endfig;")
\stoplua

This makes sure that all memory values are the same,
that the mem file is cached inbetween runs, removes the
need for "\\" and "bye;" etc.

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


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

* Re: luatexing
  2008-04-12 19:47 ` luatexing Wolfgang Werners-Lucchini
  2008-04-13  8:59   ` luatexing Taco Hoekwater
@ 2008-04-13 11:58   ` Hans Hagen
  1 sibling, 0 replies; 7+ messages in thread
From: Hans Hagen @ 2008-04-13 11:58 UTC (permalink / raw)
  To: mailing list for ConTeXt users

Wolfgang Werners-Lucchini wrote:
> On 12 Apr 2008 at 9:39, ntg-context-request@ntg.nl wrote:
> 
>>> I have a few silly questions about
>>>
>>>   tex.print()
>>>
>>> To produce 
>>>
>>>   $\sqrt{2}=1.4142135623731$
>>>
>>> it should be enough to write
>>>
>>>   tex.print("$\\sqrt{2}=" .. math.sqrt(2) .. "$")
>> this is because \\ can mean anything, for instance it may expand to
>> \par  or \crlf or ..
> 
> May be I do not understand this right, but I thought that '\' is luas 
> escape character and tex.print() returns '\' not '\\'. So TeX sees no 
> macro '\\' which could expand to whatever.

it depends on where you code lives ... in a lua file, then \\ is an 
escape, in \directlua (or \ctxlua cum suis), then it's a tex cs

your mail only shows the one line of code so we have to guess

>> there is a \luaescapestring primitive which catches things like
>> quotes
> 
> Can you make a little example of usage?
> 
>> tex.print("\detokenize{$\sqrt{2}=}" .. math.sqrt(2) .. "$")

well, if you put that in your document, you'l get a typeset tex.sprint, 
so i assume that tis is wrapped in \directlua or so?

> Could not find the definition of \detokenize.

an etex primitive

-----------------------------------------------------------------
                                           Hans Hagen | PRAGMA ADE
               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
      tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com
                                              | 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://tex.aanhet.net
archive  : https://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________


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

* Re: luatexing
  2008-04-11 23:37 luatexing Wolfgang Werners-Lucchini
@ 2008-04-12  7:29 ` Hans Hagen
  0 siblings, 0 replies; 7+ messages in thread
From: Hans Hagen @ 2008-04-12  7:29 UTC (permalink / raw)
  To: mailing list for ConTeXt users

Wolfgang Werners-Lucchini wrote:
> Hallo,
> 
> I have a few silly questions about
> 
>   tex.print()
> 
> To produce 
> 
>   $\sqrt{2}=1.4142135623731$
> 
> it should be enough to write
> 
>   tex.print("$\\sqrt{2}=" .. math.sqrt(2) .. "$")

this is because \\ can mean anything, for instance it may expand to \par 
or \crlf or ..

there is a \luaescapestring primitive which catches things like quotes

tex.print("\detokenize{$\sqrt{2}=}" .. math.sqrt(2) .. "$")

may also work ok

> or better
> 
>   tex.print([[$\sqrt{2}=]] .. math.sqrt(2) .. "$")
> 
> but that's both not working. The following instead does the job:
> 
>   tex.print("$\string\\sqrt{2}=" .. math.sqrt(2) .. "$")
> 
> why?
 >
> Another question:
> 
> What is the differenz between 'tex.sprint()' and 'tex.write()'?

tokenization under a catcode regime versus writing strings

-----------------------------------------------------------------
                                           Hans Hagen | PRAGMA ADE
               Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
      tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com
                                              | 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://tex.aanhet.net
archive  : https://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________


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

* luatexing
@ 2008-04-11 23:37 Wolfgang Werners-Lucchini
  2008-04-12  7:29 ` luatexing Hans Hagen
  0 siblings, 1 reply; 7+ messages in thread
From: Wolfgang Werners-Lucchini @ 2008-04-11 23:37 UTC (permalink / raw)
  To: ntg-context

Hallo,

I have a few silly questions about

  tex.print()

To produce 

  $\sqrt{2}=1.4142135623731$

it should be enough to write

  tex.print("$\\sqrt{2}=" .. math.sqrt(2) .. "$")

or better

  tex.print([[$\sqrt{2}=]] .. math.sqrt(2) .. "$")

but that's both not working. The following instead does the job:

  tex.print("$\string\\sqrt{2}=" .. math.sqrt(2) .. "$")

why?

Another question:

What is the differenz between 'tex.sprint()' and 'tex.write()'?

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


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

end of thread, other threads:[~2008-04-13 11:58 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <mailman.4851.1207985975.4340.ntg-context@ntg.nl>
2008-04-12 19:47 ` mplib Wolfgang Werners-Lucchini
2008-04-13 10:31   ` mplib Taco Hoekwater
2008-04-12 19:47 ` luatexing Wolfgang Werners-Lucchini
2008-04-13  8:59   ` luatexing Taco Hoekwater
2008-04-13 11:58   ` luatexing Hans Hagen
2008-04-11 23:37 luatexing Wolfgang Werners-Lucchini
2008-04-12  7:29 ` luatexing Hans Hagen

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).