直到今天我才决定查看一个文件的内容.synctex
,然后我看到了很多包含包路径等等的行。
但在下面几行中我可以看到很多数字,我猜可能是坐标。
例如,
Output:pdf
Magnification:1000
Unit:1
X Offset:0
Y Offset:0
Content:
!15728
{1
[192,56:4736286,51753031:28827951,47016745,0
h192,56:4736286,4736286:0,0,0
h192,56:4736286,4736286:0,0,0
[192,56:4736286,4736286:0,0,0
(192,56:4736286,4155173:0,0,0
k192,56:4736286,4155173:-791972
)
]
[192,56:4736286,51753031:28827951,47016745,0
[192,56:5594039,51753031:27970198,47532077,0
[192,56:5594039,5007386:27970198,786432,0
(192,56:5594039,5007386:27970198,0,0
h192,56:5594039,5007386:27970198,0,0
)
]
最后我发现
Input:210:/media/./main.aux
!72
Postamble:
Count:53291
!27
Post scriptum:
那么,我们有可能知道它是如何工作的吗?这些线和数字是什么意思?
答案1
首先:最重要的(但不幸的是有点过时)参考资料是SyncTeX 手册页其中包含描述 SyncTeX 行的语法。
接下来是一些最重要的概念。 synctex 文件由几个不同的部分组成(每个部分name:
在 synctex 文件中都标有):
- 前言:本节描述 synctex 版本、输出格式、放大倍数、单位和偏移量。
- 内容:这是相关部分。内容部分包含表格和表单(后面有说明)。在这里,您可以找到有关由 TeX 排版的水平和垂直框以及粘合等的信息。
后记:此部分包含计数(同步记录数)以及字节偏移量。后记关闭文件。摘自手册页:
如果没有后记,则表明排版过程未正确结束。
- 后记:此部分大部分为空。它适用于第三方材料并允许进一步转换(移动、放大)。如果您要进一步处理 DVI 到 PDF 以影响同步,那么这可能很重要。此处提供的设置将覆盖前言中的值。
由于前言、后记和附言很少是您想要检查的内容,因此我将重点关注内容。
我们先介绍几条“线”:
- 以 开头的每一行
Input:TAG:FILENAME
都是源的更改。因此,之后所有引用都将指向此处给出的文件名。您的示例中缺少这样一行。 - 每一行以 开头
!NUMBER
是一个字节偏移记录,即到文件开头的字节距离。 - 每行以 开头
{TAG
都是一个 sheet(基本上是一页)的开头,而这个 sheet(基本上是一页)显然是以 结尾的}
。同样,还有<TAG
一个以 开头的 form(PDF form,但你不会在普通的文档中看到它)以 结尾的>
。
synctex指TAG
的是该对象的唯一标识符。您会注意到这些将是无符号整数。例如,在您的示例中{1
。
您可以拥有任意数量的工作表或表单。每个工作表或表单(以及它们的末尾)前面都会有一个字节偏移记录。工作表(或表单)可能包含垂直框和水平框。
一个 vbox 以 开始[LINK:POINT:SIZE
,以 结束]
。类似地,一个 hbox 以 开始(LINK:POINT:SIZE
,以 结束)
。在这些括号内,有不同的框类型,例如其他 vbox/hbox、void hbox/vbox(无内容,只有大小,行以hLINK:POINT:SIZE
或为前缀vLINK:POINT:SIZE
)、glue、kern、math 和 form ref 记录,甚至完整表单。
这LINK
部分非常重要,因为它包含TAG,LINE
(和可选的,COLUMN
)。点表示框的位置(X,Y
)和大小WIDTH,HEIGHT,DEPTH
。因此取直线
[192,56:4736286,51753031:28827951,47016745,0
从您的示例中,我们注意到这是标记在行192
处的未指定列的vbox 的开头56
。它具有 x 值4736286
和 y 值51753031
、宽度为28827951
、高度为47016745
和深度为0
。数字似乎很大,但通常会给出,sp
因此可以理解。
正如已经描述的,您的示例中还有一些略有不同的行:
h192,56:5594039,5007386:27970198,0,0
表示空的水平框,即没有相关内容可参考但阻挡输出空间的水平框。k192,56:4736286,4155173:-791972
是一个描述的字距记录LINK:POINT:WIDTH
,因此这是一个宽度的字距-791972
。
还有许多其他记录类型可以检查,但请参阅手册页以获得一般概述。如前所述,我得出的结论是,在某些时候,手册页与 synctex 程序的实际输出不同步。但无论如何,这是一个很好的开始。
请注意,目前只有一个真正的 synctex 库,即参考实现。因此,如果您有任何深入的问题,您将不得不查看源代码。请注意,手册页指出(关于文件结构):
该文件的结构不应被视为公开的,即除了
synctex
命令行实用程序和synctex_parser
库之外,任何人都不需要解析其内容。除非绝对无法避免,否则synctex
只能通过向synctex
命令行实用程序发出请求来访问文件的内容。