我安装了 MacTeX 2020,但无法让 ConTeXt 工作(在另一台从 MacTeX 2019 升级的机器上可以工作)。错误是:
$ context file.tex
mtx-context | warning: no format found, forcing remake (commandline driven)
[…] snip lots of lines
resolvers | formats | changing to format path '/var/folders/rj/hfjmjx796q102y4v23vh038c0000gp/T/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/formats/luatex'
resolvers | formats | unable to change to format path '/var/folders/rj/hfjmjx796q102y4v23vh038c0000gp/T/luatex-cache/context/a86c089b384a3076dc514ba966a1fac9/formats/luatex'
mtx-context | error, no format found with name: cont-en, aborting
system | total runtime: 5.315 seconds
我读运行 Mark IV来自 wiki 并尝试运行
context --make
context --make cont-en
但它们会以相同的unable to change to format path
消息退出。我认为这是核心问题。运行这些命令后,我在尝试构建 PDF 时仍然收到相同的错误。
我怎样才能解决这个问题?
答案1
我从 ConTeXt 邮件列表中找到了这个问题的解决方案(链接到主题),我将从中引用:
这些消息来自文件 luat-fmt.lua 的中间部分(在我的系统中分别是第 180 行和第 183 行),当时 ConTeXt 试图更改工作目录(这就是“更改”在此上下文中的意思,只是移动到其他目录,如 cd 或 chdir)。相关摘录如下
report_format("changing to format path %a",validformatpath) lfs.chdir(validformatpath) if dir.current() ~= validformatpath then return fatalerror(startupdir,"unable to change to format path %a",validformatpath) end
在你的情况下有效格式路径
$TMPDIR
是下 的 子目录/var/folders/
。但是,如果你的 Mac 和我的一样,/var
实际上是 的符号链接/private/var
,因此dir.current()
会报告以 开头的路径/private
,并且测试失败。您可以通过设置
TMPDIR
其他值来解决这个问题,这个值不以/var
-- 开头,也不是/tmp
因为这也是一个符号链接:-) 它应该与您的主文件夹中的临时目录一起工作。
所以我要做的是:
env TMPDIR=~/tmp context <file>
您可以在 shell 中将其设置为别名,例如,我有这个用于 fish 的别名:
function context
env TMPDIR=~/tmp /Library/TeX/texbin/context $argv
end