当我使用 编译我的 ConTeXt 文档时context file.tex
,编译器似乎多次编译代码。我从未注意到 中常见的任何消息,pdflatex
要求我再次编译代码。我是否需要多次运行此命令以确保文档中的所有内容都已解决?
答案1
ConText MkIV 使用 mtxrun 来管理“运行”——即使用适当的开关调用 luatex 多少次才能完成任务。但是,它足够聪明,可以理解实际完成任务需要多少次运行。第一次“编译”(好吧,luatex 是一个解释器而不是编译器,但我们使用这个词是因为这并不那么错误,毕竟我们可以说每个 *tex 都是一个“文档编译器”)这个例子
\开始文本 你好 \停止文本
有 3 次运行,但第二次编译这个
\开始文本 你好世界 \停止文本
有 1 次运行(仅当您不删除临时文件时)并且这个
\开始文本 \dorecurse{10}{\input knuth\page} \停止文本
需要运行 2 次,只要您不删除临时文件即可。
另一方面,需要一些经验才能认识到
\开始文本 \开始TEX页面 \framed{\externalfigure[牛]\externalfigure[磨坊]} \停止TEXpage \停止文本
第一次使用 3 次运行,但在这里您可以安全地使用context --once
--- 没有引用、新页面等等,--- 并保存两次运行。这里也是一样,如果我们假设有图片 cow1,..cow100 和 mill1,..mill100:
\开始文本 \dorecurse{100}{% \开始TEX页面 \framed{\externalfigure[cow\recurselvel]\externalfigure[mill\recurselevel]} \停止TEXpage } \停止文本
作为一个经验法则context <file>
是可以的;context --once
如果你不确定,请避免,因为你最终可能会得到未完成的临时文件,这可能会混淆上下文(最终使用context --purge
或context --purgeall
)。
最后要说的是,您总能找到一个每次运行时都会自我修改的“邪恶”文档。为了避免无限循环,有一个“硬连线”限制(当然,您可以随时编辑 mtxrun 文件来更改它),即 8;如果您的文档确实需要 9 次或更多次传递,那么在最后一次运行结束时,您会看到类似“需要另一次运行”的内容 --- 对我来说,这意味着我的文档设计得不好。
答案2
不,不需要。context
处理好它。