背景

背景

背景

寻求了解项目、产品、环境和组件之间的明确关系。

最小工作示例

以下是显示问题的目录结构:

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

得出的结果为:

输出,不与网格对齐

如果我们删除\setuplayoutfrom prd_para.tex,输出将更改为网格对齐排版:

输出,网格对齐

相关内容