运行“上下文”的正确方法是什么?

运行“上下文”的正确方法是什么?

某人之前context问和之间的区别texexec这一页说你“用命令启动 Mark IV context,用命令启动 Mark II texexec”。所以,我开始使用context

但似乎context为了正确排版文档,您必须运行多次?这类似于 LaTeX,但我不必考虑它,因为我可以使用latexmk

ConTeXt 有类似的东西吗?还是每次我想排版时都要运行它很多次?

答案1

context和都不texexec是可执行文件(像pdflatex),而是脚本。由于texexec(Ruby 脚本)已弃用,您可以立即忘记它,我将重点介绍context

contextLinux 系统上的内容是

#!/bin/sh
mtxrun --script context "$@"

它只是启动了mtxrun一个大约有 26000 行的 Lua 脚本。该脚本是 ConTeXt 的核心,执行格式生成、字体数据库管理、文件查找等任务。

该参数--script指定要运行的另一个脚本。所有可用的脚本都可以在texmf-context/scripts/context/lua独立发行版的文件夹。该参数--script context加载mtx-context.lua脚本。在此脚本中,您可以找到多程循环其内容基本上是

for currentrun=1,maxnofruns do

    local returncode = -- run LuaTeX

    if not returncode then
        -- you pressed Ctrl+C
        break
    elseif returncode == 0 then
        -- check multipass data
        if multipass_changed then
            -- rerun
        else
            break
        end
    else
        -- report error and exit
        break
    end

end

还有一些细节我省略了,但您可以在链接的文件中查找。


底线,也就是说,context如果没有其他指示,它会自动对文档进行多次扫描。你可以指示context只执行一次扫描,

context --once file.tex

或执行精确的<n>运行(其中<n>是数字)

context --forcedruns=<n> file.tex

相关内容