✍️ 田冬冬 • 📅 2024-09-09

# 当前CPT

在现代模式下，几乎不需要显式命名CPT。当某个模块创建CPT时，例如grd2cpt，makecpt，或者没有颜色表可用时的grdimage，GMT会将CPT写入会话目录中的隐藏文件中。

当模块需要CPT时，例如，当grdimage未提供-C，或提供-C但没指定名称）时，GMT会读取此隐藏的CPT。该文件称为当前CPT。

实际上，当前的CPT有几个级别，可能全部不同，有些可能不存在。如果在绘制图中图时创建CPT，则只能在绘制该图中图期间访问该CPT。因此，它只能将图中图作为其使用范围。

如果在某个特定子图中时创建CPT，则该CPT同样只能由该子图访问。如果在子图开始之后但在绘图开始之前创建CPT，则该CPT可用于所有子图（但可以被上述子图特定的CPT局部覆盖）。

每次调用图形，都应该创建特定于图形的CPT。如果不存在，则使用会话CPT。 gmt遵循的规则是，始终使CPT具有最受限制的范围，该范围处于绘图层次结构中。

如果在本绘图层次结构中找不到，GMT会将层次结构扩展到范围更广的结构中去寻找CPT。如果最终没有找到CPT（并且绘图模型不同于grdimage，无法单独创建CPT时），会提示出错。

在现代模式下，有些情况下必须使用-H选项以显式创建命名CPT。一种情况是，在制作动图时，因为需要创建一次CPT并多次访问它。由于每个电影帧都是一个单独的会话，因此不能跨会话共享当前cpt。