On 9/3/2021 12:58 PM, Thierry Horsin via ntg-context wrote:
Hi everybody
Is there a way to have an automatic access to the current line number of a specific place inside a tex file ? To be more precise, here is what I would like to do.
I am currently trying to have some automatic external compilation by g++ of some portion of my tex file as in the following example below. \startC \stopC defines a framed part of text written between lines 538 and 549. Of course, if I add something before or inbetween my framed code, 538 and/or 549 will change. Thus I would like to get these two numbers automatically.
Thank you. Thierry
\startC #include <iostream>
using namespace std; int mysum(int,int); int a; int b; int main () { a=2; b=9; cout << mysum(a,b) << endl; return 0; } int mysum(int a, int b) { return a+b; } \stopC
\startluacode myout = io.open("test.cpp", "w") myin = io.open(tex.jobname..".tex", "r") local n=0 for line in myin:lines() do n=n+1 if n>539 and n<550 then myout:write(line.."\n") end end myout:close() myin:close() os.execute("g++ -o test test.cpp") os.execute("./test > tmp") local file=assert(io.open("tmp","r")) local t = file:read("*all") tex.print(t) \stopluacode in this case, thinking a bit different is easier ...
\starttext \startbuffer[MyBuffer] #include <iostream> using namespace std; int mysum(int,int); int a; int b; int main () { a=2; b=9; cout << mysum(a,b) << endl; return 0; } int mysum(int a, int b) { return a+b; } \stopbuffer We compile and run: \typebuffer[MyBuffer][option=C] \startluacode io.savedata("test.cpp",buffers.getcontent("MyBuffer")) --os.execute("g++ -o test test.cpp") --os.execute("./test > test.tmp") os.execute("echo done > test.tmp") buffers.assign("MyBuffer",io.loaddata("test.tmp")) \stopluacode And get: \typebuffer[MyBuffer] Or just: \typefile{test.tmp} \stoptext ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------