jlaurens at users.sourceforge.net
Mon Feb 11 23:42:27 CET 2008
Le 11 févr. 08 à 19:47, Hans Hagen a écrit :
> LAURENS Jérôme wrote:
>> Couldn't we adopt an intermediate position?
> i see no reason for 'tex' in the name, after all, we are running
> tex; also, nowadays there is no need to have short names (many new
> primitives have verbose names)
>> where you consider synctex as a whole word, just like mutex,
>> cortex, vortex, vertex and of course latex
>> In fact, due to performance reasons, only approximate output
>> positions are traced,
>> the output position unit is tex sp, but the synctex position unit
>> is 8192 sp.
>> I would expect a \traceoutputpositions to really report the output
>> position, not just something approximate.
> well, i'm more thinking along the line ...
> \traceoutputpositions = 0 : disabled
> \traceoutputpositions = 1 : low resolution
> \traceoutputpositions = 2 : medium resolution (8192 resolution)
> \traceoutputpositions = 3 : high resolution
Unfortunately, this is not what synctex is designed for.
It is more like
\tracesynctexpositions=1:math, kern, glue, hbox
\tracesynctexpositions=3:add some whatsits
All this is dedicated to the Editor/Viewer synchronization, and it is
not advisable to use it for something else.
Roughly speaking, here is how synctex works:
1 - some nodes have been extended to -always- store synchronization
2 - if some flag is enabled, this information is used to help
Point 1 belongs to the data model, it is public and can be used by any
other tex extension.
Point 2 is a controller, which means a piece of code that uses the
data; it is -private- to synctex.
The \synctex (or \tracesynctexpositions) primitive controls the
behaviour of this synctex controller.
So it is dedicated to point 2 and this is why it must be named
If someone plans to use point 1 for another tex extension, then it
will be possible to use your \traceoutputpositions terminology if this
> although position are always approximations (take for instance
> complex ligatures orgenerated code) i wonder if we should divert
> from the full sp resolution; i'd say: output the full number (no
> devision) and provide resolution in the amount of sync points
ok, the question is about precision
> (if this feature also ends up in luatex, then it will be full
> resolution if only because all dimensions accessible at the lua end
> are in scaled
no, you are confusing the data and the controller.
Actually, the dimensions are available in full dimensions, but this is
a deliberate choice of the controller to truncate them to a lower
If the controller is implemented in lua, it will also decide to
truncate simply because it is a matter of efficiency.
The purpose of the lower precision in synctex end is simply to reduce
the size of the auxiliary output file.
If we use full resolution, then the size increases by 40%, which is -
very- significant because I/O operations are involved.
8192 is the best choice for that purpose.
I hope this explanation will enlight the design of synctex, and make
you understand how tex and synctex are tied together.
More information about the ntg-pdftex