获取或更改组件/项目/环境的 ConTeXt 路径

获取或更改组件/项目/环境的 ConTeXt 路径

如何获取子目录中的项目或更改 ConTeXt 用于获取组件、环境和项目文件的路径?

换句话说,如何建立如下假设的目录结构:

  garden/
    project.tex
    env/env.tex
    components/X.tex
    components/Y.tex
    products/X.tex
    products/B.tex

这样products/X.tex就可以加载\component components/X(或\component{components/x.tex}其中一些工作变体)来加载相应的组件。这似乎不起作用,并且 ConTeXt 记录了system > jobfiles > unknown tex file 'components/X'

第 2.4 节详见手册状态:

在父目录中搜索工作目录中不存在的文件。

尽管如此,我注意到当我使用例如header.tex将它放在garden/目录中,并从产品中引用它时,实际header.tex加载的是/usr/local/texlive/2014/texmf-dist/doc/latex/epslatex-fr/header.tex

我在这里遗漏了什么?

我正在使用 MacTeX 的 ConTeXt 0.60 (2014.05.21 22:04),并使用 运行上下文context x.tex


编辑 不管怎样,这个错误似乎来自文件-job.lua#L169,调用commands.uselibrary并最终(大概)达到file-res.lua#L29::readfilename,它应该做出决议。

此外,注意到项目结构Context Garden Wiki 的页面和Context 杂志 1101,表示允许子路径。

此外,当我运行时,\enabletrackers[resolvers.readfile]我注意到以下内容被发送到日志:

files > readfile > not found by backtracking: ../type-imp-loc.mkiv files > readfile > not found by backtracking: ../../type-imp-loc.mkiv files > readfile > not found by tree lookup: type-imp-loc.mkiv files > readfile > not found by backtracking: ../type-imp-loc.tex files > readfile > not found by backtracking: ../../type-imp-loc.tex files > readfile > not found by tree lookup: type-imp-loc.tex files > readfile > not found by backtracking: ../type-loc.mkiv files > readfile > not found by backtracking: ../../type-loc.mkiv files > readfile > not found by tree lookup: type-loc.mkiv files > readfile > not found by backtracking: ../type-loc.tex files > readfile > not found by backtracking: ../../type-loc.tex files > readfile > not found by tree lookup: type-loc.tex fonts > 'fallback modern-designsize rm 12pt' is loaded system > jobfiles > unknown tex file 'components/X' system > jobfiles > unknown tex file 'components/Y'

\enabletrackers[context.trace]

cld > tex > f : 8 : \starttext cld > tex > w : - : \processfilemany{components/header.tex} cld > tex > f : 8 : \stoptext cld > tex > w : - : \dostarttextfile{components/header} system > jobfiles > unknown tex file 'components/header' cld > tex > f : 8 : \dostoptextfile

products/X.tex

\startproduct X
  \component components/X
\endproduct

components/X.tex

\startcomponent X
  \component components/X
\endcomponent

(我故意选择了X产品和组件的模糊性,因为我预计在某个时候会发生这种冲突,并且宁愿尽早知道其含义。)

因此看起来\component由于某种原因没有调用 readfile 解析器机制。

答案1

因此,正如 @Metafox 和 @Aditya 所说,问题似乎与路径有关。对这个问题的评论很有意义,但最好的答案似乎如下。

products/X.tex并编译自products/

\usepath[..]  % \usepath[..,../..] for subpaths
\component components/X

或者如果从编译garden/

\component components/X

此外,还可以为ie提供一个--path参数。contextcontext --path ~/garden/

相关内容