Hello, I'd need to to hook \stoptext by Lua - I'd need to write something right before the end of the text. See the simple example: ---- t-Hook.mkiv \startluacode local stoptext_p = context.stoptext context.stoptext = function(...) context("END") stoptext_p(...) end \stopluacode \starttext \input knuth \stoptext % To be hooked by Lua ---- This code should write "END" right before the end of the document, but it doesn't. How to achieve that? - I'd rather Lua to TeX do the job as I need Lua to do more complicated things (the example above is very simplified). TIA. Best regards, Lukas -- Ing. Lukáš Procházka [mailto:LPr@pontex.cz] Pontex s. r. o. [mailto:pontex@pontex.cz] [http://www.pontex.cz] Bezová 1658 147 14 Praha 4 Tel: +420 244 062 238 Fax: +420 244 461 038
2012/3/7 Procházka Lukáš Ing. - Pontex s. r. o.
Hello,
I'd need to to hook \stoptext by Lua - I'd need to write something right before the end of the text.
At least \let\Oldstoptext\stoptext \def\stoptext{% \startluacode context("END") \stopluacode \Oldstoptext} \starttext \input knuth \stoptext % To be hooked by Lua But there are several \every* tokens list for this. -- luigi
On Wed, Mar 7, 2012 at 3:39 PM, luigi scarso
2012/3/7 Procházka Lukáš Ing. - Pontex s. r. o.
Hello,
I'd need to to hook \stoptext by Lua - I'd need to write something right before the end of the text.
At least \let\Oldstoptext\stoptext \def\stoptext{% \startluacode context("END") \stopluacode \Oldstoptext}
\starttext \input knuth \stoptext % To be hooked by Lua
But there are several \every* tokens list for this. -- luigi
\appendtoks% \startluacode context("END") \stopluacode \to\everylastshipout \starttext \showframe \input knuth \page \input tufte \stoptext % To be hooked by Lua It's hooked by Lua too, but is it what you want ? -- luigi
... OK, your solution works -
- But I'd need one which doesn't force user to hook manually; i.e. without:
----
\let\Oldstoptext\stoptext
\def\stoptext{%
\startluacode
context("END")
\stopluacode
\Oldstoptext
}
----
Hooking should be performed in a Lua function and should be "invisible" to the user.
More complicated example:
---- t-Hook4.mkiv
\startluacode
function foo()
local stoptext_p = context.stoptext
context.stoptext = function(...)
context("END")
stoptext_p(...)
end
end
\stopluacode
\starttext
\input knuth
\ctxlua{foo()} % This should cause "END" to appear at the end of the document
\stoptext
----
In this case, "foo()" is a function which does the hooking; and "foo()" may be placed in another file or Lua toolbox, so user is to call Lua's "require 'my-Lua-toolbox-with-foo' foo()".
So user is not forced to know how the function works; once he uses it, the text "END" will appear at the end of the document.
- And this doesn't happen to me; and my goal is to make it work.
Lukas
On Wed, 07 Mar 2012 15:39:23 +0100, luigi scarso
2012/3/7 Procházka Lukáš Ing. - Pontex s. r. o.
Hello,
I'd need to to hook \stoptext by Lua - I'd need to write something right before the end of the text.
At least \let\Oldstoptext\stoptext \def\stoptext{% \startluacode context("END") \stopluacode \Oldstoptext}
\starttext \input knuth \stoptext % To be hooked by Lua
But there are several \every* tokens list for this.
-- Ing. Lukáš Procházka [mailto:LPr@pontex.cz] Pontex s. r. o. [mailto:pontex@pontex.cz] [http://www.pontex.cz] Bezová 1658 147 14 Praha 4 Tel: +420 244 062 238 Fax: +420 244 461 038
On 2012-03-07 15:28, Procházka Lukáš Ing. - Pontex s. r. o. wrote:
Hello,
I'd need to to hook \stoptext by Lua - I'd need to write something right before the end of the text.
See the simple example:
---- t-Hook.mkiv \startluacode local stoptext_p = context.stoptext
context.stoptext = function(...) context("END") stoptext_p(...) end \stopluacode
\starttext \input knuth \stoptext % To be hooked by Lua ----
This code should write "END" right before the end of the document, but it doesn't.
context.stoptext() just calls “\stoptext”, not the other way round. Btw CLD are implemented as metatable so afaik you would have to redefine the “__index” attribute.
How to achieve that?
········································································ \startluacode local old_stoptext = commands.stoptext commands.stoptext = function(...) context"END" old_stoptext(...) end \stopluacode \starttext \input knuth \stoptext % To be hooked by Lua ········································································ Cf. file.job.mkvi at line 107. Hth Philipp
- I'd rather Lua to TeX do the job as I need Lua to do more complicated things (the example above is very simplified).
TIA.
Best regards,
Lukas
-- Ing. Lukáš Procházka [mailto:LPr@pontex.cz] Pontex s. r. o. [mailto:pontex@pontex.cz] [http://www.pontex.cz] Bezová 1658 147 14 Praha 4
Tel: +420 244 062 238 Fax: +420 244 461 038
___________________________________________________________________________________ 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 ___________________________________________________________________________________
-- () ascii ribbon campaign - against html e-mail /\ www.asciiribbon.org - against proprietary attachments
... Yes, that's it! Thanks a lot!
Best regards,
Lukas
On Wed, 07 Mar 2012 16:50:01 +0100, Philipp Gesang
On 2012-03-07 15:28, Procházka Lukáš Ing. - Pontex s. r. o. wrote:
Hello,
I'd need to to hook \stoptext by Lua - I'd need to write something right before the end of the text.
See the simple example:
---- t-Hook.mkiv \startluacode local stoptext_p = context.stoptext
context.stoptext = function(...) context("END") stoptext_p(...) end \stopluacode
\starttext \input knuth \stoptext % To be hooked by Lua ----
This code should write "END" right before the end of the document, but it doesn't.
context.stoptext() just calls “\stoptext”, not the other way round. Btw CLD are implemented as metatable so afaik you would have to redefine the “__index” attribute.
How to achieve that?
········································································ \startluacode local old_stoptext = commands.stoptext
commands.stoptext = function(...) context"END" old_stoptext(...) end \stopluacode
\starttext \input knuth \stoptext % To be hooked by Lua ········································································
Cf. file.job.mkvi at line 107.
Hth Philipp
- I'd rather Lua to TeX do the job as I need Lua to do more complicated things (the example above is very simplified).
TIA.
Best regards,
Lukas
-- Ing. Lukáš Procházka [mailto:LPr@pontex.cz] Pontex s. r. o. [mailto:pontex@pontex.cz] [http://www.pontex.cz] Bezová 1658 147 14 Praha 4
Tel: +420 244 062 238 Fax: +420 244 461 038
___________________________________________________________________________________ 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 ___________________________________________________________________________________
-- Ing. Lukáš Procházka [mailto:LPr@pontex.cz] Pontex s. r. o. [mailto:pontex@pontex.cz] [http://www.pontex.cz] Bezová 1658 147 14 Praha 4 Tel: +420 244 062 238 Fax: +420 244 461 038
Am 07.03.2012 um 16:57 schrieb Procházka Lukáš Ing. - Pontex s. r. o.:
... Yes, that's it! Thanks a lot!
You can also write your own stop/stop-commands for the document like \def\startmydocument {\starttext} \def\stopmydocument {\ctxlua{…}% \stoptext} and use them instead of \starttext and \stoptext. Wolfgang
Am 07.03.2012 um 18:37 schrieb Wolfgang Schuster:
Am 07.03.2012 um 16:57 schrieb Procházka Lukáš Ing. - Pontex s. r. o.:
... Yes, that's it! Thanks a lot!
You can also write your own stop/stop-commands for the document like
\def\startmydocument {\starttext}
\def\stopmydocument {\ctxlua{…}% \stoptext}
and use them instead of \starttext and \stoptext.
Or you use the predefined document environment which has before and after keys. \setupdocument[after={\blank\midaligned{\bf THE END}}] \startdocument \input knuth \stopdocument Wolfgang
participants (5)
-
luigi scarso
-
Philipp Gesang
-
Procházka Lukáš Ing. - Pontex s. r. o.
-
Wolfgang Schuster
-
Wolfgang Schuster