如何获取子目录中的项目或更改 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
参数。context
context --path ~/garden/