Parsing \...luacode within a \def
Hello, I encountered a phenomena that I cannot understand. Let's have the following code: ---- \def\T{% \startluacode context("t") \stopluacode } \def\U{% \startluacode -- context("u") \stopluacode } \starttext A \startluacode -- context("b") \stopluacode \T \U \stoptext ---- This gives "Abt" - but there is no "u". It seems that the (first) comment mark "--" within a \startluacode within \def (here: \def\U) causes all code till \stopluacode is being ignored. But why? Maybe I'm missing something very basic... Best regards, Lukas -- Ing. Lukáš Procházka | mailto:LPr@pontex.cz Pontex s. r. o. | mailto:pontex@pontex.cz | http://www.pontex.cz | IDDS:nrpt3sn Bezová 1658 147 14 Praha 4 Mob.: +420 702 033 396
Hi Lukáš, I am not sure but I guess that the problem is related with the behaviour of the input processor which erases characters at the end of line (CR, LF) and replace them by a space. Then, the whole content between \start/stopluacode is at only one line. If you the second way of comment marks, the letter "u" will be shown at the output. Tomáš \def\U{% \startluacode --[[ blahblah ]]-- context("u") \stopluacode } Thu, Jun 14, 2018 ve 08:48:40PM +0200 Procházka Lukáš Ing. napsal(a): # Hello, # # I encountered a phenomena that I cannot understand. Let's have the following code: # # ---- # \def\T{% # \startluacode # context("t") # \stopluacode # } # # \def\U{% # \startluacode # -- # # context("u") # \stopluacode # } # # \starttext # A # \startluacode # -- # # context("b") # \stopluacode # \T # \U # \stoptext # ---- # # This gives "Abt" - but there is no "u". # # It seems that the (first) comment mark "--" within a \startluacode within \def (here: \def\U) causes all code till \stopluacode is being ignored. # # But why? # # Maybe I'm missing something very basic... # # Best regards, # # Lukas # # # -- # Ing. Lukáš Procházka | mailto:LPr@pontex.cz # Pontex s. r. o. | mailto:pontex@pontex.cz | http://www.pontex.cz | IDDS:nrpt3sn # Bezová 1658 # 147 14 Praha 4 # # Mob.: +420 702 033 396 # # ___________________________________________________________________________________ # 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://context.aanhet.net # archive : https://bitbucket.org/phg/context-mirror/commits/ # wiki : http://contextgarden.net # ___________________________________________________________________________________ Tomáš Hála -------------------------------------------------------------------- Mendelova univerzita, Provozně ekonomická fakulta, ústav informatiky Zemědělská 1, CZ-613 00 Brno, tel. +420 545 13 22 28 -------------------------------------------------------------------- http://akela.mendelu.cz/~thala
On 6/14/2018 9:20 PM, Tomas Hala wrote:
Hi Lukáš,
I am not sure but I guess that the problem is related with the behaviour of the input processor which erases characters at the end of line (CR, LF) and replace them by a space. Then, the whole content between \start/stopluacode is at only one line. If you the second way of comment marks, the letter "u" will be shown at the output.
Tomáš
\def\U{% \startluacode --[[ blahblah ]]--
context("u") \stopluacode } indeed, \startluacode inside a macro body acts like any such catcode regime changing operation ..
\def\foo{% f%oo } Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
Hello,
thanks for explanation -
I could not understand difference in behavior inside \def ("--" dismiss all following) and out of \def ("--" acts on the one line only);
so the explanation is "\startluacode INSIDE MACRO body acts like any such catcode regime changing operation"...
Best regards,
Lukas
On Thu, 14 Jun 2018 21:41:28 +0200, Hans Hagen
On 6/14/2018 9:20 PM, Tomas Hala wrote:
Hi Lukáš,
I am not sure but I guess that the problem is related with the behaviour of the input processor which erases characters at the end of line (CR, LF) and replace them by a space. Then, the whole content between \start/stopluacode is at only one line. If you the second way of comment marks, the letter "u" will be shown at the output.
Tomáš
\def\U{% \startluacode --[[ blahblah ]]--
context("u") \stopluacode } indeed, \startluacode inside a macro body acts like any such catcode regime changing operation ..
\def\foo{% f%oo }
Hans
----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
-- Ing. Lukáš Procházka | mailto:LPr@pontex.cz Pontex s. r. o. | mailto:pontex@pontex.cz | http://www.pontex.cz | IDDS:nrpt3sn Bezová 1658 147 14 Praha 4 Mob.: +420 702 033 396
participants (3)
-
Hans Hagen
-
Procházka Lukáš Ing.
-
Tomas Hala