如何定制规范、可复用的幻灯片图表模板:think-cell 简介及配置指南

前天 21:42

如果你在工作中也需要根据公司 VI 规范定制图表版式,不妨尝试运用这些方法,让 think-cell 图表更好地服务于你的企业沟通场景。


在许多办公场景下,制作幻灯片是一种刚需,而一份美观、规范的幻灯片往往离不开模板的帮助。但是,大部分公司都有自己的视觉识别(VI)规范,直接应用外部模板通常意味着字体、配色、字号、标题等都需要大幅修改,最终交付成果还可能存在版权风险。因此,为公司定制专属模板就显得尤为重要。

虽然 PowerPoint 本身提供了模板功能,但在灵活性、便捷性和细节控制方面往往不尽如人意,使得模板的制作和使用常常需要第三方插件的辅助——你或许听说或用过像 iSlide、Office 工具箱这类面向大众用户的插件。

然而,在商业管理咨询、金融等专业领域,特别是在商业图表制作方面,一款名为 think-cell 的插件占据了主导地位。它专注于「更便捷高效地制作专业商业图表」,能够帮助用户轻松创建和管理各种复杂图表,显著提升幻灯片的专业性和图表制作效率,在这些行业中几乎形成了垄断。

think-cell的主要用户群体

除了操作上的便捷性,think-cell 的一个核心优势在于允许用户通过自定义 XML 样式文件,对图表的方方面面(从配色到线条样式)做细致入微的定制。这使得演示文稿能够完美契合公司的 VI 系统要求,确保最终交付成果的统一性和专业性,也能提高效率。

以下是一些使用 think-cell 制作的图表示例:

think-cell制作的图表风格

think-cell 支持 Office 2010 及 Office for Mac 2016 以来的所有版本,采用订阅制授权,定价为每用户每月 28.5 美元。部分高校用户可以申请教育用途的免费许可证。对于双系统用户而言,think-cell 充分支持 Mac 平台,且 Mac 版的功能和操作体验与 Windows 版基本一致,这也是它的一大优点。

接下来,本文将一步步为你演示 think-cell 是如何通过 XML 样式文件实现这些强大定制功能的。希望这篇文章能帮助已经了解这款工具的朋友深入掌握其用法,也为那些尚不了解但有类似需求的朋友提供一种新的解决方案。

样式文件定制入门

think-cell 使用 XML 格式的样式文件(style file)来定义幻灯片中图表的外观。在开始定制之前,让我们先简单了解一下 XML。

XML(Extensible Markup Language,可扩展标记语言)是一种用于结构化存储与交换数据的标记语言,广泛应用于配置文件、数据传输和文档结构等领域。它并非专属于某个软件,而是一种开放的、与平台无关的技术。

我们熟悉的 Office 文档格式 Office Open XML (OOXML),就是一套基于 XML 的文件格式标准。你可以尝试将任何一个 .docx.pptx 文件后缀改为 .zip 再解压缩,就会发现其中包含了一整套 XML 文件。

由于 think-cell 是 PowerPoint 的插件,其样式文件的结构在某些方面与 OOXML 有相似之处。

要开始定制,首先需要找到 think-cell 的样式文件。你可以打开 think-cell 插件菜单中的「工具」>「关于」,在弹出的窗口中会显示其程序配置文件的位置。

找到xml配置文件的默认位置
之后点击菜单中的「关于」即可以找到默认样式文件所在目录

建议使用专业的代码编辑器(如 VS Code、Sublime Text 等)来编辑 XML 文件,这些编辑器提供的代码高亮、自动补全和文件目录管理功能,将大大提升编辑体验。

think-cell 样式文件的核心设计思想可以概括为「先声明、再应用」。简单来说,就是先在一个地方(通常是文件的前部)集中定义好所有可用的基础元素,如颜色、线条样式、标记形状等;然后在需要应用这些元素的地方(如具体的图表配色方案),通过名称来「引用」这些已声明的元素。这样,修改一处声明,所有引用该声明的地方都会自动更新,极大地便利了样式的统一维护。

让我们通过一个简化的例子来理解这个引用关系。假设我们想定义一个名为 makubex 的配色方案,那么它在样式文件里会依次留下这些足迹:

xml文件名称引用关系

上图中:

  • fillLst (颜色列表): 这里集中声明了所有可用的颜色,每个颜色都有一个唯一的名称和对应的色值。
  • fillSchemeLst (配色方案列表): 这里定义了各种配色方案。每个方案 (fillScheme) 内部通过引用 fillLst 中声明的颜色名称 (fillRef name="...") 来指定其颜色序列。
  • fillSchemeRefDefault (默认配色方案引用): 这个元素指定了在未明确选择时,think-cell 默认使用哪个配色方案。

更一般地,根据官方文档,think-cell 的样式文件主要包含以下几类模块,用于定义图表的各种外观属性:

分类 模块(XML 元素) 作用
样式定义基础 fillLst, lnLst, markerLst 定义所有可用的基础填充颜色、线条样式、标记形状。可以理解为「原材料库」。
图表配色方案 fillSchemeLst, lnfillmarkerSchemeLst, fillmarkerSchemeLst 组合基础元素,形成具体的配色方案或样式组合。可以理解为使用「原材料」制作的「菜谱」。
默认颜色填充方案 fillSchemeRefDefault 等 11 种默认引用 指定在插入不同类型图表时,默认应用的配色方案。
默认图表样式方案 lnfillDefault, lnfillGridline, shapestyleLst 定义图表在没有单独指定方案时的默认外观,如网格线样式等。
标签与图表装饰线 label, chart 控制标签文本样式和图表内部辅助线的样式。
特殊组件样式 harveyball, checkbox, gantt 为 Harvey Ball、复选框、甘特图等特殊图形和功能性元素定义样式。

对于初学者来说,不必一次性掌握所有模块。我们将从最常用、最重要的部分开始,结合实例进行定制。

样式文件定制实战:打造你的专属图表风格

现在,让我们开始动手定制一个个性化的 XML 样式文件。我们将逐步完成定义公司专属颜色、创建不同类型的图表方案,并最终设置默认样式。

一、定义公司专属颜色

实现公司品牌形象统一的第一步,也是最重要的一步,就是定制专属配色。在 think-cell 的 XML 样式文件中,所有可用的颜色都在 <fillLst> (颜色列表) 元素中统一定义。这个列表就像一个调色盘,后续创建的所有配色方案都将从这里选取颜色。

每个颜色定义通常包含两个核心信息:一个易于识别的名称 (name 属性) 和具体的颜色值 (通常使用 sRGB 十六进制色值或引用 PowerPoint 主题颜色)。

假设我们需要定义以下四种公司品牌颜色:

  • Cyan1 (水蓝): #00FFF6
  • Cyan2 (冰蓝): #00E7FF
  • Azure (天蓝): #009EFF
  • Blue (蓝色): #0014FF
选择的颜色
我们将要定义的自定义颜色

我们可以在 <fillLst> 标签内添加如下代码:

<fillLst>
  <!-- 这里可能已经存在很多think-cell默认的颜色定义 -->
  <!-- 建议在已有颜色的末尾,或使用<separator/>分隔后添加新颜色 -->
  <separator/> <!-- 在菜单中显示为一条分割线,方便组织 -->
  
  <!--  新增:Cyan1 / Cyan2 / Azure / Blue  -->
  <solidFill name="Cyan1">
    <srgbClr val="00FFF6"/>
  </solidFill>
  <solidFill name="Cyan2">
    <srgbClr val="00E7FF"/>
  </solidFill>
  <solidFill name="Azure">
    <srgbClr val="009EFF"/>
  </solidFill>
  <solidFill name="Blue">
    <srgbClr val="0014FF"/>
  </solidFill>
</fillLst>

代码解释:

  • <fillLst>...</fillLst>: 这是颜色列表的容器标签。
  • <solidFill name="颜色名称">...</solidFill>: 定义一个纯色填充。
    • name 属性:为这个颜色指定一个易于识别的名称。这个名称会显示在 think-cell 操作界面的颜色选择菜单中,所以尽量起得有意义。
  • <srgbClr val="十六进制色值"/>: 指定颜色的 sRGB 值,val 属性的值是不带 # 号的六位十六进制颜色代码。注意这是一个自闭合标签,因为它没有子元素或内容,也就没有匹配的终止标签。XML 中类似的自闭合标签还有 <separator/><noLine/> (无边框)、<noMarker/> (无标记) 等。
  • <separator/>: 在 think-cell 的颜色选择菜单中插入一条分割线,有助于组织和区分不同的颜色组。

在 think-cell 默认的样式文件中,你可能还会看到类似 <schemeClr val="tx1"/><schemeClr val="accent1"/> 这样的颜色定义。这表示该颜色引用的是当前 PowerPoint 演示文稿主题中预设的颜色(例如,「文本颜色 1」或「强调颜色 1」)。这样做的好处是,当 PowerPoint 主题颜色改变时,think-cell 图表中引用了这些主题色的部分也会随之自动更新,保持与演示文稿整体风格的一致。

PPT 的主题设计菜单中关于模板主题色的定义

完成上述颜色的定义并加载此样式文件后,在 think-cell 的颜色选择菜单中,你就能看到刚才添加的自定义颜色了:

我们定义的颜色将在菜单中显示

除了上述主要填充色之外,我们再定义一组额外的,以蓝色为基础的梯度填充颜色,给后续的 marker 部分使用(这里不理解可先略过):

<fillLst>
  <!-- 追加到已经存在的颜色定义下方 -->
  <separator/>
  <solidFill name="Blue Dark Grey">
    <srgbClr val="748FFC"/>
  </solidFill>
  <solidFill name="Blue Med. Light Grey">
    <srgbClr val="BAC8FF"/>
  </solidFill>
  <solidFill name="Blue Light Grey">
    <srgbClr val="DBE4FF"/>
  </solidFill>
  <solidFill name="Blue Lightest Grey">
    <srgbClr val="EDF2FF"/>
  </solidFill>
  <separator/>
</fillLst>
额外定义一组梯度色

二、创建图表配色方案(SchemeLst

定义好基础颜色后,下一步是创建图表配色方案 (Scheme)。方案决定了这些颜色在图表中的应用顺序和方式。think-cell 中有几种不同类型的方案列表 (SchemeLst),分别对应不同类型的图表元素组合:

方案列表 (XML 元素) 控制的内容 主要应用的图表类型
fillSchemeLst 填充颜色方案 柱状图、堆积图、瀑布图、Mekko 图、饼图、面积图、气泡图等以「填充区域」为主的图表。
lnfillmarkerSchemeLst 线条颜色、线型、标记组合方案 折线图、组合图中的折线部分,以及所有用「线条」表示数据系列的图表。
fillmarkerSchemeLst 标记形状 + 填充颜色方案 散点图,甘特图中的里程碑标记等以「数据点标记」为主的图表。

我们将依次为这几类方案创建自定义配置。

1. 柱形图等填充类图表的配色方案 (<fillSchemeLst>)

首先,我们为最常用的柱状图、瀑布图、饼图等创建配色方案。这些方案定义在 <fillSchemeLst> 元素内。我们来创建一个名为 benjamin2025 的方案,并额外创建一个颜色顺序相反的版本 benjamin2025 Rev

<fillSchemeLst>
  <!-- 这里可能已有很多think-cell默认的配色方案 -->
  <separator/> <!-- 在菜单中显示分割线 -->

  <!--  新增:benjamin2025 和 benjamin2025 Rev 两个图表方案 -->
  <fillScheme name="benjamin2025" fillRefOtherSeries="White" repeatLast="1">
    <!-- 定义图表段(如柱子)的边框样式 -->
    <lnfillSegment>
      <noLine/> <!-- 表示柱子之间没有边框线 -->
    </lnfillSegment>
    <!-- 专门为 Mekko 图定义边框样式 -->
    <lnfillSegmentMekko>
      <lnRef name="Solid 0.75 pt"/> <!-- 引用预定义的 0.75 磅实线 -->
      <solidfillRef name="bg1"/> <!-- 边框颜色引用 PowerPoint 背景色 1 -->
    </lnfillSegmentMekko>
    
    <!-- 引用在 <fillLst> 中定义的颜色名称,决定了颜色顺序 -->
    <fillRef name="Cyan1"/>
    <fillRef name="Cyan2"/>
    <fillRef name="Azure"/>
    <fillRef name="Blue"/>
  </fillScheme>

  <fillScheme name="benjamin2025 Rev" reverse="true" fillRefOtherSeries="White" repeatLast="1">
    <lnfillSegment>
      <noLine/>
    </lnfillSegment>
    <lnfillSegmentMekko>
      <lnRef name="Solid 0.75 pt"/>
      <solidfillRef name="bg1"/>
    </lnfillSegmentMekko>
    <!-- 颜色引用顺序与上面相同,但因为 reverse="true",实际应用时会反转 -->
    <fillRef name="Cyan1"/>
    <fillRef name="Cyan2"/>
    <fillRef name="Azure"/>
    <fillRef name="Blue"/>
  </fillScheme>
  <separator/>
</fillSchemeLst>

代码解释:

会员专属文章,欢迎加入少数派会员。
优质内容
权益周边
会员社群
power+
评论区
全部评论0
成为少数派会员方可评论,立即加入 。若已是少数派会员,点击登录
还没有评论,来发表第一个评论吧
全部评论
还没有评论,来发表第一个评论吧
成为少数派会员方可评论,立即加入 。若已是少数派会员,点击登录
会员新功能
内容侧边栏
点击这里拉开侧边栏,即可查看会员内容列表,快速切换内容。