deferred variable lookup in environment?
Hi, sorry if the subject is misleading, I'm not sure how to say it in few words. I'm trying to have the date in a layer in an environment. In the text using the environment, I want to be able to set the date. If the date is not set, the current date should be used, otherwise the set date. This is what I've tried, but it is always the currentdate, that is displayes. Environment file: \def\mydate{} \definelayer[firstpage] % name of the layer [x=0mm, y=0mm, % from upper left corner of paper width=\paperwidth, height=\paperheight] % let the layer cover the full paper \setlayer[firstpage] % name of the layer [hoffset=14cm, voffset=3.5cm] % placement (from upper left corner of the layer) {\framed[frame=on, width=4cm, height=2cm]{ % always shows \currentdate \doiftextelse{\mydate}{\mydate}{\currentdate} }} \setupbackgrounds[page][background={firstpage}] File using this environment: \environment[testenv] \def\mydate{2011-11-11} \starttext % this shows the value from mydate \doiftextelse{\mydate}{\mydate}{\currentdate} \stoptext Is it possible to get \mydate in the layer? Kind regards, Ingo
On 2013–02–02 Ingo Hohmann wrote:
I'm trying to have the date in a layer in an environment. In the text using the environment, I want to be able to set the date. If the date is not set, the current date should be used, otherwise the set date. This is what I've tried, but it is always the currentdate, that is displayes.
You are trying to use the date before it is defined. You can use a two-pass mechanism: \define\mydate{\datasetvariable{mydata}{date}{date}} \definelayer [firstpage] \setlayer [firstpage] [hoffset=14cm, voffset=3.5cm] {\framed[frame=on, width=4cm, height=2cm]{%% \doiftextelse{\mydate}{\mydate}{\currentdate}}} \setupbackgrounds [page] [background=firstpage] \definedataset [mydata] \setdataset [mydata] [date] [date=2011-11-11] \starttext \doiftextelse{\mydate}{\mydate}{\currentdate} \stoptext Marco
On 02/02/2013 12:31 AM, Marco Patzer wrote:
On 2013–02–02 Ingo Hohmann wrote:
I'm trying to have the date in a layer in an environment. In the text using the environment, I want to be able to set the date. If the date is not set, the current date should be used, otherwise the set date. This is what I've tried, but it is always the currentdate, that is displayes. You are trying to use the date before it is defined. You can use a two-pass mechanism:
\define\mydate{\datasetvariable{mydata}{date}{date}}
Thank you Marco, this works. Is it possible to update fields in the datasetvariables table, or is it only possible to replace the whole table? \setdataset[data][info][date=\currentdate] \setdataset[data][info][subject={subject}] After the second line, the first value is gone. Thank you, Ingo
On 2013–02–05 Ingo Hohmann wrote:
Is it possible to update fields in the datasetvariables table, or is it only possible to replace the whole table?
I don't know of an interface allowing that without directly dealing with the Lua tables. Maybe you can use the tag for that:
\setdataset[data][info][date=\currentdate] \setdataset[data][info][subject={subject}]
\setdataset[data][dateinfo] [date=\currentdate] \setdataset[data][subjectinfo][subject={subject}] Marco
participants (2)
-
Ingo Hohmann
-
Marco Patzer