I used synctex to get the forward-inverse search between tex source and
pdf file. It created a .synctex file which record the coordinate
correspondences between .tex and .pdf. I have the following naive idea:
during compilation, each time we get some "output", we put an "extra
information". This "extra information" should be contents of the output
pdf, which is invisible, and do not affect the layout (using this
feature or not).
For example, it is similar to "hypperef", which has an "extra
information" so we can go to another location on the .pdf. The "extra
information" for this forward-inverse search could be "(line,column)" of
the .tex source.
The following example may make this clear:
Tex Source: .....This is an example.
And the output PDF: ...T(1,1)h(1,2)i(1,3)s(1,4) (1,5)i(1,6)s(1,7) (1,8)a(1,9)n(1,10) (1,11)e(1,12)x(1,13)a(1,14)m(
1,15)p(1,16)l(1,14)e(1,18).
The (x,y) should be invisible on PDF, and the location should be at
the same location of their corresponding "output letter" and the space
it takes is the size of a single letter. This means that:
(the above
example): when we click "T", we get an information (1,1) , just similar
to hyperref. Similarly, when we click "h", we get (1,2). If this is
done, then it is easy to do the inverse search (from pdf to tex), since
the information is on the pdf file. For forward search, it is easy also:
when we click on tex source, of course the editor knows the
(line,column), and it sends this information to pdf viewer and finally
the viewer "go to the location of this (line, column)". (Suppose the
viewer could "Find" where is (line,column), this need to be
implemented.)
Of course, the size of the output pdf with this sync option will be
large. But we can do this by using "word" instead of "letter" for text
and using "each symbol" for math formula.
The advantage of this feature (to synctex) is: We get very precise
locations when we do forward-inverse search. And the implemention should
not be difficult, since it just do "something extra" which are easy:
get the (x,y) on the source--OK ; Produce invisible output--Don't know
if this is possible. Compare to synctex method, we don't have to
calculate the coordinate correspondence between source and output. Also,
the time needed to compile is (about) double at most.
The disadvantage is that the output pdf has large size. Of course,
after we finish the work of typping, and want to publish the .pdf file,
we can compile it without sync option.
Although I say this would
be easy, I mean this would be easy for developers of pdftex. The ability
to do this is far beyond my programming ability. I would like to know
from you that if this naive idea is doable. If not, what are the
difficulities? Do you think this is a good idea? And of course, if we
agree this is a good idea, I hope the developers could implement it.
Best Regards