\startcomponent project
\environment doc-env
\product ctxnotes

\chapter{大文档项目}

对于规模比较大的文档项目而言，采用 \TEX\ 的优越性要高于 WYSIWYG 的字处理器 (MS Word)。众人谓之曰字处理器使用起来比较方便，实际这只不过表面现象，在其背后是文档更新方面的困难——难以进行多人协同撰写与版本维护。本章主要介绍 \CONTEXT\ 所提供的文档项目管理功能，探讨如何在文档项目中布置版本控制系统，建立一种比较稳定的大文档项目撰写模式。

\section{项目的部署}

一个 \TeX\ 文档项目，通常可以将文档结构分为：环境、宏、文档主体内容。这样划分的意图就是让文档的样式与内容分离开。环境，主要用于定制版面样式。宏，主要是封装一些排版命令，实现一些特定的排版功能。在 \CONTEXT\ 中，环境或宏可以由一份或多份专门的环境文件来定义，环境文件的格式如下：

\startniceTEX
\startenvironment 环境文件名
... 环境内容 ...
\stopenvironment
\stopniceTEX

如果不对文档的主体内容进行划分的话，那么它就与普通的 \CONTEXT\ 文档无异，只是多了加载环境文件的命令：

\startniceTEX
\environment 环境文档名
... ... ...
\starttext
... 文档内容
\stoptext
\stopniceTEX

如果对文档的主体内容细分下去，可以有封面、前言、正文章节、附录、封底等。文档结构划分的深浅程度，这个主要由用户来把握，主要视文档的规模而定。对于 \CONTEXT\ 而言，文档的主体内容实际上只有产品 (product) 与 组件 (component) 这两种划分\footnote{事实上还有比产品更高层的结构，就是项目 (project)，不过我们写文档一般用不到它，如果是出版期刊杂志倒是有可能用到它。}\;。对于产品与组件之间的关系，这在产品文档中便可以直观地看到，譬如：

\startniceTEX
\startproduct 产品文档名
\environment 环境文档名

\component 组件文档 1
\component 组件文档 2
... ... ...
\stopproduct
\stopniceTEX

产品文档将环境与组件的信息都记录了下来，因此当我们在使用 \CONTEXT\ 编译一个文档项目时，只需要编译产品文档即可。

组件文档的格式如下：

\startniceTEX
\startcomponent 组件文档名
\environment 环境文档名
\product 所属产品名

... 组件内容 ...

\stopcomponent
\stopniceTEX

也可以直接编译组件文档，因为在组件文档中已经记录了所使用的环境文档信息；在撰写文档的过程中，推荐使用编译组件文档的方式来查看排版效果。

\section{更多阅读……}

如果上述内容有误或者你认为讲述的不够细致，那么请阅读以下文档：

\startitemize
\item “\CONTEXT\ 文稿的物理结构”：\crlf \hbox{\tt http://garfileo.is-programmer.com/2011/1/12/project-structure.23773.html}
\stopitemize

我计划今年年底将这些外部文档归整到这份文档中。

\stopcomponent
