ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* confusion about expansion
@ 2014-03-12 14:00 Lars Huttar
  2014-03-12 14:05 ` Wolfgang Schuster
  0 siblings, 1 reply; 7+ messages in thread
From: Lars Huttar @ 2014-03-12 14:00 UTC (permalink / raw)
  To: mailing list for ConTeXt users

Hello,
I've got a running page head like this in my document:

\def\CurrentUser{\cldcontext{os.resultof"whoami"}}

\def\Markname { Compiled \date by \CurrentUser  \LUATEX +\ConTeXt\
\contextversion }

and later:

\setlayer[cropmark][preset=lefttop,x=3cm,y=-1.5\lineheight]{\Markname}

But when I run this, I get a UCS error that seems to indicate that the
*result* of \CurrentUser ("waxhaw\huttar") is getting parsed as a
command sequence.

Here's the error:

! Undefined control sequence.

 1 >>  % see ConTeXt wiki http://wiki.contextgarden.net/Imposition#Cut_marks
 2
 3     %% TODO: make sure this doesn't reevaluate every time
 4     %% the command sequence is used!
 5     \define\CurrentUser{\cldcontext{os.resultof"whoami"}}
 6
 7     \def\Markname { Compiled \date by \CurrentUser  \LUATEX
+\ConTeXt\ \conte
xtversion. SVN  }
...

l.1 waxhaw\huttar

\cldcontext #1x-\directlua {context(#1)}

\Markname #- Compiled \date by \CurrentUser
                                            \LUATEX +\ConTeXt \
\contextvers...
l.24 ...t=lefttop,x=3cm,y=-1.5\lineheight]{\Markname
                                                  }

How can I change the definition of \CurrentUser, or \Markname, to output
the result of \CurrentUser as-is, instead of parsing the result?
I tried (somewhat blindly) changing \def to \define, but it didn't make
any difference.

At the same time, I want to make sure that the processor won't be making
an OS system call to "whoami" every time \CurrentUser is evaluated: I
want it to happen only once, when \CurrentUser is defined.

Here is my complete working example:

\def\CurrentUser{\cldcontext{os.resultof"whoami"}}

\def\Markname { Compiled \date by \CurrentUser \LUATEX +\ConTeXt\
\contextversion. }

\setuplayout[location=middle,marking=on]

\definelayer[cropmark][state=repeat,width=\paperwidth,height=\paperheight]

\setupbackgrounds[page][background=cropmark]

\setlayer[cropmark][preset=lefttop,x=3cm,y=-1.5\lineheight]{\Markname}


\starttext

Foo

\stoptext


Thanks for any help.
Lars


___________________________________________________________________________________
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] 7+ messages in thread

* Re: confusion about expansion
  2014-03-12 14:00 confusion about expansion Lars Huttar
@ 2014-03-12 14:05 ` Wolfgang Schuster
  2014-03-12 14:12   ` Lars Huttar
  0 siblings, 1 reply; 7+ messages in thread
From: Wolfgang Schuster @ 2014-03-12 14:05 UTC (permalink / raw)
  To: mailing list for ConTeXt users


Am 12.03.2014 um 15:00 schrieb Lars Huttar <lars_huttar@sil.org>:

> Hello,
> I've got a running page head like this in my document:
> 
> \def\CurrentUser{\cldcontext{os.resultof"whoami"}}
> 
> \def\Markname { Compiled \date by \CurrentUser  \LUATEX +\ConTeXt\
> \contextversion }
> 
> and later:
> 
> \setlayer[cropmark][preset=lefttop,x=3cm,y=-1.5\lineheight]{\Markname}
> 
> But when I run this, I get a UCS error that seems to indicate that the
> *result* of \CurrentUser ("waxhaw\huttar") is getting parsed as a
> command sequence.

When you want to pass a backslash to Lua you have to use \letterbackslash.

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


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

* Re: confusion about expansion
  2014-03-12 14:05 ` Wolfgang Schuster
@ 2014-03-12 14:12   ` Lars Huttar
  2014-03-12 14:21     ` Wolfgang Schuster
  0 siblings, 1 reply; 7+ messages in thread
From: Lars Huttar @ 2014-03-12 14:12 UTC (permalink / raw)
  To: mailing list for ConTeXt users

On 3/12/2014 10:05 AM, Wolfgang Schuster wrote:
> Am 12.03.2014 um 15:00 schrieb Lars Huttar <lars_huttar@sil.org>:
>
>> Hello,
>> I've got a running page head like this in my document:
>>
>> \def\CurrentUser{\cldcontext{os.resultof"whoami"}}
>>
>> \def\Markname { Compiled \date by \CurrentUser  \LUATEX +\ConTeXt\
>> \contextversion }
>>
>> and later:
>>
>> \setlayer[cropmark][preset=lefttop,x=3cm,y=-1.5\lineheight]{\Markname}
>>
>> But when I run this, I get a UCS error that seems to indicate that the
>> *result* of \CurrentUser ("waxhaw\huttar") is getting parsed as a
>> command sequence.
> When you want to pass a backslash to Lua you have to use \letterbackslash.
>

Thanks... can you give me an example of what that would look like?
I don't think I want to pass a backslash to Lua, so I'm not sure how to
apply what you're saying. Or are you using "Lua" here in the sense of
LuaTeX?

A backslash appears in the output of os.resultof"whoami"; do I need to
perform some processing on that output in order to escape backslashes?

Lars

___________________________________________________________________________________
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] 7+ messages in thread

* Re: confusion about expansion
  2014-03-12 14:12   ` Lars Huttar
@ 2014-03-12 14:21     ` Wolfgang Schuster
  2014-03-12 14:51       ` Lars Huttar
  0 siblings, 1 reply; 7+ messages in thread
From: Wolfgang Schuster @ 2014-03-12 14:21 UTC (permalink / raw)
  To: mailing list for ConTeXt users


[-- Attachment #1.1: Type: text/plain, Size: 1647 bytes --]


Am 12.03.2014 um 15:12 schrieb Lars Huttar <lars_huttar@sil.org>:

> On 3/12/2014 10:05 AM, Wolfgang Schuster wrote:
>> Am 12.03.2014 um 15:00 schrieb Lars Huttar <lars_huttar@sil.org>:
>> 
>>> Hello,
>>> I've got a running page head like this in my document:
>>> 
>>> \def\CurrentUser{\cldcontext{os.resultof"whoami"}}
>>> 
>>> \def\Markname { Compiled \date by \CurrentUser  \LUATEX +\ConTeXt\
>>> \contextversion }
>>> 
>>> and later:
>>> 
>>> \setlayer[cropmark][preset=lefttop,x=3cm,y=-1.5\lineheight]{\Markname}
>>> 
>>> But when I run this, I get a UCS error that seems to indicate that the
>>> *result* of \CurrentUser ("waxhaw\huttar") is getting parsed as a
>>> command sequence.
>> When you want to pass a backslash to Lua you have to use \letterbackslash.
>> 
> 
> Thanks... can you give me an example of what that would look like?
> I don't think I want to pass a backslash to Lua, so I'm not sure how to
> apply what you're saying. Or are you using "Lua" here in the sense of
> LuaTeX?
> 
> A backslash appears in the output of os.resultof"whoami"; do I need to
> perform some processing on that output in order to escape backslashes?


Try this:

\def\CurrentUser{\cldcontext{os.resultof"whoami"}}

\def\Markname{Compiled \date by \detokenize\expandafter{\CurrentUser} \LUATEX +\ConTeXt\ \contextversion.}

\setuplayout[location=middle,marking=on]

\definelayer[cropmark][state=repeat,width=\paperwidth,height=\paperheight]

\setupbackgrounds[page][background=cropmark]

\setlayer[cropmark][preset=lefttop,x=3cm,y=1.5\lineheight]{\Markname}

\starttext

Foo

\stoptext

Wolfgang

[-- Attachment #1.2: Type: text/html, Size: 2631 bytes --]

[-- Attachment #2: Type: text/plain, Size: 485 bytes --]

___________________________________________________________________________________
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] 7+ messages in thread

* Re: confusion about expansion
  2014-03-12 14:21     ` Wolfgang Schuster
@ 2014-03-12 14:51       ` Lars Huttar
  2014-03-12 15:06         ` Wolfgang Schuster
  0 siblings, 1 reply; 7+ messages in thread
From: Lars Huttar @ 2014-03-12 14:51 UTC (permalink / raw)
  To: mailing list for ConTeXt users

On 3/12/2014 10:21 AM, Wolfgang Schuster wrote:
>
> Am 12.03.2014 um 15:12 schrieb Lars Huttar <lars_huttar@sil.org
> <mailto:lars_huttar@sil.org>>:
>
>> On 3/12/2014 10:05 AM, Wolfgang Schuster wrote:
>>> Am 12.03.2014 um 15:00 schrieb Lars Huttar <lars_huttar@sil.org
>>> <mailto:lars_huttar@sil.org>>:
>>>
>>>> Hello,
>>>> I've got a running page head like this in my document:
>>>>
>>>> \def\CurrentUser{\cldcontext{os.resultof"whoami"}}
>>>>
>>>> \def\Markname { Compiled \date by \CurrentUser  \LUATEX +\ConTeXt\
>>>> \contextversion }
>>>>
>>>> and later:
>>>>
>>>> \setlayer[cropmark][preset=lefttop,x=3cm,y=-1.5\lineheight]{\Markname}
>>>>
>>>> But when I run this, I get a UCS error that seems to indicate that the
>>>> *result* of \CurrentUser ("waxhaw\huttar") is getting parsed as a
>>>> command sequence.
>>> When you want to pass a backslash to Lua you have to use
>>> \letterbackslash.
>>>
>>
>> Thanks... can you give me an example of what that would look like?
>> I don't think I want to pass a backslash to Lua, so I'm not sure how to
>> apply what you're saying. Or are you using "Lua" here in the sense of
>> LuaTeX?
>>
>> A backslash appears in the output of os.resultof"whoami"; do I need to
>> perform some processing on that output in order to escape backslashes?
>
> Try this:
>
> \def\CurrentUser{\cldcontext{os.resultof"whoami"}}
>
> \def\Markname{Compiled \date by \detokenize\expandafter{\CurrentUser}
> \LUATEX +\ConTeXt\ \contextversion.}
>
> \setuplayout[location=middle,marking=on]
>
> \definelayer[cropmark][state=repeat,width=\paperwidth,height=\paperheight]
>
> \setupbackgrounds[page][background=cropmark]
>
> \setlayer[cropmark][preset=lefttop,x=3cm,y=1.5\lineheight]{\Markname}
>
> \starttext
>
> Foo
>
> \stoptext
>
>

Thanks again...
This gets rid of the error, but it seems to prevent any expansion of the
content of \CurrentUser, because the page head now literally looks like
this:

 Compiled March 12, 2014 by \cldcontext {os.resultof"whoami"}. 
LuaTEX+ConTEXt...

Lars

___________________________________________________________________________________
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] 7+ messages in thread

* Re: confusion about expansion
  2014-03-12 14:51       ` Lars Huttar
@ 2014-03-12 15:06         ` Wolfgang Schuster
  2014-03-12 15:45           ` Lars Huttar
  0 siblings, 1 reply; 7+ messages in thread
From: Wolfgang Schuster @ 2014-03-12 15:06 UTC (permalink / raw)
  To: mailing list for ConTeXt users


[-- Attachment #1.1: Type: text/plain, Size: 464 bytes --]


Am 12.03.2014 um 15:51 schrieb Lars Huttar <lars_huttar@sil.org>:

> This gets rid of the error, but it seems to prevent any expansion of the
> content of \CurrentUser, because the page head now literally looks like
> this:


You can try to print the string in verbatim mode:

  \def\CurrentUser{\cldcommand{sprint(tex.vrbcatcodes,os.resultof"whoami")}}

  \def\Markname{Compiled \date by \CurrentUser\ \LUATEX +\ConTeXt\ \contextversion.}

Wolfgang

[-- Attachment #1.2: Type: text/html, Size: 1212 bytes --]

[-- Attachment #2: Type: text/plain, Size: 485 bytes --]

___________________________________________________________________________________
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] 7+ messages in thread

* Re: confusion about expansion
  2014-03-12 15:06         ` Wolfgang Schuster
@ 2014-03-12 15:45           ` Lars Huttar
  0 siblings, 0 replies; 7+ messages in thread
From: Lars Huttar @ 2014-03-12 15:45 UTC (permalink / raw)
  To: mailing list for ConTeXt users

On 3/12/2014 11:06 AM, Wolfgang Schuster wrote:
>
> Am 12.03.2014 um 15:51 schrieb Lars Huttar <lars_huttar@sil.org
> <mailto:lars_huttar@sil.org>>:
>
>> This gets rid of the error, but it seems to prevent any expansion of the
>> content of \CurrentUser, because the page head now literally looks like
>> this:
>
> You can try to print the string in verbatim mode:
>
>  
> \def\CurrentUser{\cldcommand{sprint(tex.vrbcatcodes,os.resultof"whoami")}}
>
>   \def\Markname{Compiled \date by \CurrentUser\ \LUATEX +\ConTeXt\
> \contextversion.}
>

That did it. Thank you!
Lars

___________________________________________________________________________________
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] 7+ messages in thread

end of thread, other threads:[~2014-03-12 15:45 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-03-12 14:00 confusion about expansion Lars Huttar
2014-03-12 14:05 ` Wolfgang Schuster
2014-03-12 14:12   ` Lars Huttar
2014-03-12 14:21     ` Wolfgang Schuster
2014-03-12 14:51       ` Lars Huttar
2014-03-12 15:06         ` Wolfgang Schuster
2014-03-12 15:45           ` Lars Huttar

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