dwww Home | Manual pages | Find package

SYNCTEX(5)                     File Formats Manual                   SYNCTEX(5)

NAME
       synctex — Synchronize TeXnology help file

DESCRIPTION
       Synchronize  TeXnology help file (synctexs) are text files that help in-
       put/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 com-
       mand line utility, and the synctex_parser library which  are  both  pub-
       licly  available.  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>

                   (<Form(k)>|<Input Line>)*

                   <sheet(1)>

                   (<Form(k)>|<Input Line>)*

                   <sheet(2)>

                   (<Form(k)>|<Input Line>)*

                   ...

                   <sheet(N)>

                   (<Form(k)>|<Input Line>)*

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

             <sheet(n)> ::=

                   <byte offset record>

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

                   <vbox section>|<hbox section>

                   <byte offset record>

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

             <Form> ::=

                   <byte offset record>

                   "<" <form tag> <end of record>

                   <vbox section>|<hbox section>

                   <byte offset record>

                   ">" <end of record>

             <form tag> ::= <integer>

       Forms are available with pdfTeX.  All the numbers are  integers  encoded
       using the decimal representation with "C" locale.  The <box content> de-
       scribes  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>|<form ref record>|<Form>

             <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>

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

             <point> ::= <full point>|<compressed point>

             <full point> ::= <integer> "," <integer>

             <compressed point> ::= <integer> ",="

             <line> ::= <integer>

             <column> ::= <integer>

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

             <Width> ::= <integer>

             <Height> ::= <integer>

             <Depth> ::= <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>

             <form ref record> ::= "f" <form tag> ":" <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 of records> <EOL>

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

             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 pre-
       viously 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. The second coordinate of a compressed point has been re-
       placed by a "=" character which means that it is the  second  coordinate
       of the last full point available above.

SEE ALSO
       synctex(1) tex(1)

AUTHOR
       The  Synchronize  TeXnology  is  essentially due to Jerome Laurens, with
       useful suggestions by some well known actors of the TeX world.   SyncTeX
       is maintained as part of TeX Live.

HISTORY
       This  document  has  been updated on Sat Apr 22 09:57:20 UTC 2017 to in-
       clude \pdfxform support.

Independent                       Aug 30, 2022                       SYNCTEX(5)

Generated by dwww version 1.16 on Tue Dec 16 05:45:55 CET 2025.