特殊字符

除了鍵盤上可以直接輸入的一般字符之外,GMT還可以打印一些常用的特殊字符,如大小寫的希臘字母、加減號、大於等於號等一些特殊符號。

這些特殊字符無法通過鍵盤直接輸入,GMT中可以通過輸入八進制碼的方式指定特殊字符。

八進制碼指定特殊字符

GMT中可以用一個三位的八進制碼指定一個特殊字符。八進制碼與特殊字符之間的對應關係,可以通過查詢下表得到:

../_images/GMT_stand+_iso+.png

ISOLation1+ 和 Standard+ 編碼下的八進制碼

下載: 八進制碼錶 PDF版 | 八進制碼錶 PNG版

左右兩張表分別是什麼?該用哪一張 GMT支持多種字符編碼,其中最常用的編碼是 Standard+ISOLation1+。通常,GMT的默認字符編碼是 ISOLatin1+,所以只需要看左表即可;如果當前字符編碼是 Standard+,則需要查詢右表。可以通過 gmt get PS_CHAR_ENCODING 命令查到你所安裝的GMT的默認字符編碼方式。

這張表如何查詢呢? 假如你的GMT的默認字符編碼方式爲 ISOLation1+ 編碼。假如想要輸入加減號 ±,查左表可知,加減號位於第 26x 行、第 1 列,因而其八進制碼爲 \261。而如果你的GMT默認字符編碼爲 Standard+ 編碼,則 ± 對應的八進制碼則是 \234。因而,當你需要輸入某個特殊字符時,只需要輸入其對應的八進制碼即可。

使用12號或34號字體輸入特殊字符

如果文本使用了12號字體(Symbol)或34號字體(ZapfDingbats),則此時八進制碼具有不同的含義。需要查詢下表:

../_images/GMT_symbol_dingbats.png

Symbol和Pifont字體八進制碼

當文本字體爲12號字體(Symbol字符集)時,應查詢左表,例如字符 λ 對應的八進制碼爲 \154。當文本字體爲34號字體(Pifont ZapfDingbats)時,應查詢右表。

下載: 特殊字體八進制碼 PDF版 | 特殊字體八進制碼 PNG版

特殊字符小結

GMT中特殊字符可以通過八進制碼的方式輸入。想要輸入特殊字符,首先需要找到該字符對應的八進制碼。從上面四張表中找到自己需要的特殊符號的八進制碼及其位於哪張表內。總共分四種情況:

  1. 字符在 ISOLatin1+ 表內:可以直接使用該字符對應的八進制碼
  2. 字符在 Standard+ 表內:該表內的字符是與 ISOLatin1+ 中的字符完全重合的,建議在 ISOLatin1+ 表中找到自己需要的字符,然後使用其對應的八進制嗎
  3. 字符在 Symbol 表內:將文本字體設置爲12號字體,並使用該字符對應的八進制碼
  4. 字符在 ZapfDingbats 表內:將文本字體設置爲34號字體,並使用該字符對應的八進制碼

小練習

使用 ISOLatin1+ 表中的八進制碼輸入字符 ± 234:

echo 5 2 \261 234 | gmt text -Jx1c -R0/10/0/4 -Baf -pdf test

試驗之後會發現,圖上顯示的是 261 234 而不是 ± 234。產生這一現象的原因是因爲反斜槓在很多腳本語言裏有特殊的含義,此處反斜槓首先被bash所解釋,真正傳給 GMT的是 5 2 261 234。針對這種情況,有四種解決辦法:

# 1. 使用兩個反斜槓來代替一個反斜槓
echo 5 2 \\261 234 | gmt text -Jx1c -R0/10/0/4 -Baf -pdf test

# 2. 使用單引號將字符串括起來
echo 5 2 '\261 234' | gmt text -Jx1c -R0/10/0/4 -Baf -pdf test

#. 3. 使用EOF輸入字符串
gmt text -JX10c/10c -R0/10/0/10 -F+f15p,12 -pdf test << EOF
5 5 \141
EOF

#. 4. 從文本文件中讀取字符串
gmt text input.txt -JX10c/10c -R0/10/0/10 -F+f15p,12 -pdf test

輸入希臘字母,此時需要指定文本使用12號字體(即 -F+f15p,12 選項):

echo 5 5 '\141' | gmt text -JX10c/10c -R0/10/0/10 -F+f15p,12 -pdf test

如果需要在一堆正常字符中插入一個Symbol表中的特殊字符,可以使用轉義字符(下一節會詳細介紹) @~@%12% 臨時將字體Symbol字體。例如:

gmt basemap -R0/10/0/10 -JX10c/10c -BWSne -Bx2+l"T@~\161@~t" -pdf test