SYNCTEX(5) | File Formats Manual | SYNCTEX(5) |
synctex
—
Synchronize TeXnology help file
Synchronize TeXnology help file (synctexs) are text files that help input/output synchronization during document preparation with the TeX typesetting system.
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 which are both publicly 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.
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)
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.
<Preamble> ::=
<Input
Line>*
<Input
Line> ::=
"Input:" <tag> ":"
<File Name> <EOL><Content> ::=
<byte
offset record>
(<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>
<vbox
section>|<hbox section>
<byte
offset record>
<Form>
::=
<byte
offset record>
<vbox
section>|<hbox section>
<byte
offset 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> 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> ::=
<box
content>*
<hbox
section> ::=
(
<link> ":" <point> ":" <size>
<end of record><box
content>*
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 closes the file If there is no postamble, it means that the typesetting process did not end correctly.
<Postamble>::=
<byte
offset record>
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>
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 replaced by a "=" character which means that it is the second coordinate of the last full point available above.
The Synchronize TeXnology is essentially due to Jerome Laurens, with useful suggestions by some well known actors of the TeX world.
This document has been updated on Sat Apr 22 09:57:20 UTC 2017 to include \pdfxform support.
January 17, 2018 | Independent |