Provided by: texlive-binaries_2009-11ubuntu2_i386 bug

NAME

     synctex -- Synchronize TeXnology help file

DESCRIPTION

     Synchronize TeXnology help file (synctexs) are text files that help
     input/output synchronization during document preparation with the TeX
     typesetting system.

BASICS

     The structure of this file should not be considered public, in the sense
     that no one should need to parse its contents, except the synctex command
     line utility, and the synctex_parser library.  Unless it is absolutely
     not avoidable, access to the contents of the synctex file should only be
     made through requests made to the synctex command line utility.

STRUCTURE

     The element structure of a synctex file is a list of text line records as
     follows.  '*', '+', and '?' have their usual EBNF meanings: '*' means
     zero or more, '+' means one or more, and '?' means zero or one (i.e.,
     optional).

           <SyncTeX> ::= (The whole contents in 4 sections)

                 <Preamble>

                 <Content>

                 <Postamble>

                 <Post Scriptum>

     Each section starts with the first occurrence of a sectioning line, and
     ends with the next section, if any.  In the following definitions, we do
     not mention the section ending condition.

The preamble

           <Preamble> ::=

                 "SyncTeX Version:" <Version Number> <EOL>

                 <Input Line>*

                 "Magnification:" <TeX magnification> <EOL>

                 "Unit:" <unit in scaled point> <EOL>

                 "X Offset:" <horizontal offset in scaled point> <EOL>

                 "Y Offset:" <vertical offset in scaled point> <EOL>

           <Input Line> ::= "Input:" <tag> ":" <File Name> <EOL>

The content

           <Content> ::=

                 <byte offset record>

                 "Content:" <EOL>

                 <sheet(1)>

                 <Input Line>*

                 <sheet(2)>

                 <Input Line>*

                 ...

                 <sheet(N)>

                 <Input Line>*

           <byte offset record> ::= "!" <byte offset> <end of record>

           <sheet(n)> ::=

                 <byte offset record>

                 "{" <the integer n> <end of record>/

                 <box content>*

                 <byte offset record>

                 "}" <the integer n> <end of record>

     The <box content> describes what is inside a box.  It is either a
     vertical or horizontal box, with some records related to glue, kern or
     math nodes.

           <box content> ::=

                 <vbox section>|<hbox section>

                 |<void vbox record>|<void hbox record>

                 |<current record>|<glue record>|<kern record>|<math record>

           <vbox section> ::=

                 "[" <link> ":" <point> ":" <size> <end of record>

                 <box content>*

                 "]" <end of record>

           <hbox section> ::=

                 "(" <link> ":" <point> ":" <size> <end of record>

                 <box content>*

                 ")" <end of record>

     Void boxes:

           <void vbox record> ::= "v" <link> ":" <point> ":" <size> <end of
           record>

           <void hbox record> ::= "h" <link> ":" <point> ":" <size> <end of
           record>

           <size> ::= <Width> "," <Height> "," <Depth>

           <Width> ::= <integer>

           <Height> ::= <integer>

           <Depth> ::= <integer>

           <link> ::= <tag> "," <line>( "," <column>)?

           <line> ::= <integer>

           <column> ::= <integer>

     The forthcoming records are basic one liners.

           <current record> ::= "x" <link> ":" <point> <end of record>

           <kern record> ::= "k" <link> ":" <point> ":" <Width> <end of
           record>

           <glue record> ::= "g" <link> ":" <point> <end of record>

           <math record> ::= "$" <link> ":" <point> <end of record>

The postamble

     The postamble closes the file If there is no postamble, it means that the
     typesetting process did not end correctly.

           <Postamble>::=

                 <byte offset record>

                 "Count:" <Number fo records> <EOL>

The post scriptum

     The post scriptum contains material possibly added by 3rd parties.  It
     allows to append some transformation (shift and magnify).  Typically, one
     applies a dvi to pdf filter with offset options and magnification, then
     he appends the same options to the synctex file, for example

          synctex update -o foo.pdf -m 0.486 -x 9472573sp -y 13.3dd source.dvi

           <Post Scriptum>::=

                 <byte offset record>

                 "Post Scriptum:" <EOL>

                 "Magnification:" <number> <EOL> (Set additional
                 magnification)

                 "X Offset:" <dimension> <EOL> (Set horizontal offset)

                 "Y Offset:" <dimension> <EOL> (Set vertical offset)
           This second information will override the offset and magnification
           previously available in the preamble section.  All the numbers are
           encoded using the decimal representation with "C" locale.

USAGE

     The <current record> is used to compute the visible size of hbox's.  The
     byte offset is an implicit anchor to navigate the synctex file from sheet
     to sheet.