背景
寻求了解项目、产品、环境和组件之间的明确关系。
最小工作示例
以下是显示问题的目录结构:
project
├── project/novel
│ ├── project/novel/component.tex
│ ├── project/novel/contents.tex
│ ├── project/novel/prd_para.tex
│ └── project/novel/product.tex
├── project/prj_para.tex
└── project/project.tex
./项目/project.tex
\startproject project
\environment prj_para
\product product
\stopproject
./项目/prj_para.tex
\startenvironment prj_para
\define\bookname{Project Name}
\stopenvironment
./项目/小说/prd_para.tex
% Does not override \bookname from prj_para.tex?
\startenvironment prd_para
\define\bookname{Product Name}
\stopenvironment
./项目/小说/组件.tex
\startcomponent component
\project project
\bookname
\input contents
\stopcomponent
./项目/小说/内容.tex
Pride and Prejudice
Jane Austen
\section[title={chapter-1},reference={chapter-1}]
It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want of a wife.
./项目/小说/产品.tex
\startproduct
\project project
\environment prd_para
\component component
\stopproduct
建筑
该项目是从以下project
目录中构建的:
context novel/product --path=novel
设置
我想要实现的设置如下:
每一个产品从全局“继承”其环境设置项目。 每个产品可以覆盖特定设置。例如,项目可以定义宋体作为所有产品的基础字体,但有一个产品可以将其重新定义为海尔维提卡。
问题
理想情况下,项目级别prj_para.tex
(即“项目范围”)的设置项目结构图) 可以在产品层面进行改变prd_para.tex
。
但是, 的值\bookname
始终是Project Name
,而不是Product Name
。输出结果如下:
问题
使用环境、项目、产品和组件,项目范围环境中的设置如何通过特定于产品的环境进行更改?
简而言之,如何才能输出“产品名称”呢?
参考
各种文献资料似乎相互矛盾,例如启动组件显示:
\startcomponent *
\project projectname
尽管项目结构显示:
\startcomponent c_editorial
\product prd_year2004-01 % but you can use it in other products anyway
两者都不杂志 #1101,2011 年 7 月也不杂志 #1101,2016 年 9 月明确说明如何针对项目或产品进行编码\startcomponent
。\stopcomponent
邮件列表中有许多问题和具体答案,但范围并不广泛。Python 脚本生成文件和目录,但如果不了解这些文件和目录如何关联,它就无法提供什么帮助。
这维基百科状态:
- 项目将一个或多个产品与其环境相链接
- 一个产品包含多个组件
- 环境定义了项目的通用布局(等等)
此外,TeX.SE 上有很多答案,但很少有答案显示包含所有文件和目录的树:
答案1
使用给定的目录层次结构,以下内容可按预期工作:
% File: prj_para.tex
\startenvironment *
\setuplayout[
grid=yes,
]
\define\bookname{Project Name}
\stopenvironment
% File: prd_para.tex
\startenvironment *
\setuplayout[
grid=no,
]
\define\bookname{Product Name}
\stopenvironment
% File: component.tex
\startcomponent *
\project project
\bookname
\component contents
\stopcomponent
% File: product.tex (note that * was missing)
\startproduct *
\project project
\environment prd_para
\component component
\stopproduct
得出的结果为:
如果我们删除\setuplayout
from prd_para.tex
,输出将更改为网格对齐排版: