# TeX equivalent to #line

In C there is #line which allows stating the origin of a particular line of code. This is useful for autogenerated C source files: The (unreadable) code in the generated file is mapped back to the original source. All subsequent lines will inherit the file name from the last #line directive and advance the line counter. Here's a completely artificial example:

Source file input.in:

a <- b* c
c <- (a)


Autogenerated C source input.in.c:

#line 1 "input.in"
while (b) do_b();
#line 1 "input.in"
do_c();
#line 2 "input.in"
do_open_paren();
#line 2 "input.in"
do_a();
#line 2 "input.in"
do_close_paren();


Is there something similar in TeX? What would have to be done to make TeX think that it is in a particular line of a particular source file, effective from the beginning of the next line?

The purpose of this exercise is to have SyncTeX refer to the original file instead of the autogenerated code. Autogenerated TeX files appear when you knit R, and also if you Replace \input{fileX} by the content of fileX automatically. Of course, the code generator will have to emit the #line equivalent into the generated code.

-

TeX has an internal register \inputlineno that keeps track of the line number.

aaaa \the\inputlineno

aaaa \the\inputlineno

\newcount \inputlineno  \inputlineno=3 xaaaa \the\inputlineno


as shown above you can't assign to it but you can mask it with a count register of the same name. I don't know synctex but if it picks up the value from the csname \inputlineno rather directly accessing the primitive, then this may be enough if in each section of the generated file you assign a value to a masked copy of \inputlineno

-
Thank you. Unfortunately, this had no effect for SyncTeX, so I'll have to be looking for other ways. And I haven't even found anything similar for the file name in the TeX book. –  krlmlr Jun 22 '12 at 19:14
The top level filename is \jobname tex doesn't give primitive access to files that are \input although of course you can redefine input to save the argument in a macro (as latex does for \listfiles) –  David Carlisle Jun 22 '12 at 22:40