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

# 转义序列

前面介绍了如何设置文字的文字大小、字体和颜色以及如何输入特殊字符。 在此基础上，GMT提供了转义字符，以实现上标、下标等功能，并可以在一个字符串内 随意切换字体、字号和颜色，给文本加入了更丰富的效果。

## 转义字符

GMT用 @ 符号实现转义的功能。将 @ 符号与某些字符结合起来，即构成了一系列 可以实现特殊效果的转义字符。

GMT可以识别的转义字符在下表列出：

GMT转义字符
转义字符 | 说明
--- | ---
@+ | 打开/关闭上标
@- | 打开/关闭下标
@_ | 打开/关闭下划线
@# | 打开/关闭小型大写字母（small caps）
@%fontno% | 切换至另一字体；@%% 重置回前一字体
@:size: | 切换至另一文本尺寸；@:: 重置回前一尺寸
@;color; | 切换至另一文本颜色；@;; 重置回前一颜色
@~ | 打开/关闭Symbol（12号）字体
@! | 用接下来的两个字符创建组合字符
@. | 输出 ° 符号
@@ | 输出 @ 符号自身

除此之外，GMT还为一些常用的欧洲字母专门定义了转义字符。如下表：

欧洲特殊字母
代码 | 效果 | 代码 | 效果
--- | --- | --- | ---
@E | Æ | @e | æ
@O | Ø | @o | ø
@A | Å | @a | å
@C | Ç | @c | ç
@N | Ñ | @n | ñ
@U | Ü | @u | ü
@s | ß | @i | í

## 小练习

下面给出了一些使用转义字符的示例，左边Input是命令中的输入，右边Output是图上显示的效果：

`Source Code`

读者可以将下面命令中的 TEXT 和 Label 修改为不同的值，以体验转义字符的效果:

    echo 5 2 TEXT | gmt text -R0/10/0/3 -Jx1c -Bxaf+l"Label" -BWSen -F+f20p -pdf test

## 注意事项

1. 上标/下标不支持嵌套，即只支持一层上标/下标

2. text 命令中有选项可以在文本周围加上文本框，该选项对转义序列无效

3. 转义序列需要成对存在，与括号类似，开启转义之后必须关闭转义

4. 在Windows下，由于bat脚本中 % 表示变量，因此当你需要在GMT中使用百分号时， 应使用 %% 来表示一个百分号，即bat脚本中的 %% 相当于字符 %； 切换字体时 @%%15%% 相当于正常情况下的 @%15%。