我无法让 synctex 与 ConTeXt MkIV 协同工作。生成了一个 .synctex 文件,但在 TeXShop 或 Texpad 中均无法实现同步。MkII 可以工作。
详细信息如下:我正在排版最简单的文档。
\starttext
This is my {\em first} ConTeXt document.
\stoptext
在 TeXShop 中我使用两个引擎,一个用于 TexLive 安装:
set path= ($path /usr/texbin /usr/local/bin)
mtxrun --script context --autogenerate --synctex=1 "$1"
一个用于独立的 ConTeXt Suite (系统范围安装)。
set path= (/Applications/context/tex/texmf-osx-64/bin)
mtxrun --script context --autogenerate --synctex=1 "$1"
两者都生成 .synctex 文件,但 TeXShop 不同步。如果我使用引擎用 MkII 排版,一切都很好:
set path= ($path /usr/texbin /usr/local/bin)
texexec --synctex=1 "$1"
然而,我需要使用 MkIV 来进行实际工作。
我还在 Texpad 中尝试使用构建脚本:
export PATH=/Applications/context/tex/texmf-osx-64/bin:$PATH
mtxrun --script context --autogenerate --synctex=1 "$TEXPAD_ROOTFILE"
这也会生成一个 .synctex 文件,但同步不起作用。
.log 文件显示“> synctex 功能已启用,预计运行时间开销为 5-10%!”
有什么想法吗?谢谢!
加文
答案1
我不知道是否有针对 Texpad 的解决方案,或者更通用的解决方案,但针对 TeXShop 的解决方案很简单。添加行
% !TEX useOldSyncParser
到文件开头source.tex
。此行告诉 TeXShop,source.synctex
ConTeXt 生成的文件使用较旧的 synctex 标准。由于 TeXShop 在打开文件时会读取该行,因此添加该行不会执行任何操作,直到source.tex
关闭并重新打开。然后排版和同步工作正常。
我还添加了 Henri 建议的那行代码,并--synctex=1
从 TeXShop 引擎中删除了该标志。这与我遇到的同步问题无关,但它可以更好地控制 synctex。
我不确定为什么 synctex 和 ConTeXt 不能更好地相处。TeXShop 的开发人员 Richard Koch 认为这是一个时机不佳的案例。“2017 年,[Jérôme] Laurens 大幅重写了引擎 synctex 支持和 synctex_parser。”同时,“ConTeXt 的作者 Hans Hagen 为 ConTeXt 编写了自己的 synctex 代码,不幸的是,该代码基于 2016 版 synctex。”(TeXShop 3.89 发行说明)在 Hagen 的书“Workflows”中,听起来他的 synctex 版本可能设计为以不同的方式运行,以应对 ConTeXt 的独特需求,因此这也可能导致这种情况。我不确定。
现在我对 TeXShop、ConTeXt 和 synctex 非常满意。感谢 Henri、Richard、Hans 和 Jérôme!