synctex 无法在 macOS 上与 ConTeXt MkIV 配合使用

synctex 无法在 macOS 上与 ConTeXt MkIV 配合使用

我无法让 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.synctexConTeXt 生成的文件使用较旧的 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!

相关内容