TOML的全名是Tom’s Obvious, Minimal Language(湯姆的明顯、極簡語言)。它的設計目標是成為一個比JSON更易讀、比YAML更嚴謹的組態設定格式。不同於YAML依賴縮排,TOML主要是透過方括號 [] 來定義資料結構。

核心規則

三個特點:

  1. 使用等號 = 賦值
    TOML的鍵值對一律使用等號(例如 title = "我的文章" )。

  2. 對空格非常寬容
    等號兩邊有沒有空格都沒關係( title=1title = 1 都對),而且縮排只為了美觀,不影響程式解析。

  3. 嚴格的型態與字串要求:字串必須用引號包起來,布林值必須是小寫的 truefalse

四大基礎語法與資料型態

在Markdown的文章開頭(Front Matter),你會用到的TOML語法主要有以下四種:

  1. 基礎鍵值對(Key-Value)
tomltitle = "我的第一篇文章" # 字串:TOML的字串「一定要」加引號
draft = false # 布林值:必須小寫
weight = 10   # 整數
price = 99.9  # 浮點數
  1. 字串與引號(String)
    TOML區分雙引號與單引號的方式:
  • 雙引號 "" (基本字串):支援跳脫字元(例如 \n 代表換行)。

    tomldescription = "第一行\n第二行"
    
  • 單引號 '' (字面字串):不解析任何跳脫字元,裡面寫什麼就完全顯示什麼(適合用來寫網址或正則表達式)。

    tomlimage_url = 'https://example.com'
    
  1. 陣列 / 列表(Array)
    用來設定多個同類型的資料(如文章標籤)。
  • 單行寫法(最常用):

    tomltags = ["網站架設", "Hugo", "教學"]
    
  • 多行寫法(適合項目很多時):

    tomltags = [
    "網站架設",
    "Hugo",
    "教學"
    ]
    
  1. 表格 / 物件(Table / Object)

當設定下還有子設定時,TOML使用方括號 [鍵名] 來宣告一個獨立的區塊(稱為Table)。

# 宣告一個叫做author的區塊
[author]
name = "Sandy"
email = "sandy@example.com"

# 宣告另一個叫做seo的區塊
[seo]
keywords = ["搬家", "SSG"]

進階技巧

多行文字處理(寫摘要、長敘述):
TOML使用三個引號來處理多行文字。

  1. 三個雙引號 “""(支援跳脫)
tomldescription = """
這是第一行文字。
這是第二行文字,\n這裡會觸發換行。
"""
  1. 三個單引號 ‘’’(純文字、不跳脫)
tomldescription = '''
這是一段很長的文章摘要,
裡面的 "雙引號" 或 \n符號都會被原封不動保留,
最適合拿來貼程式碼片段或複雜內文。
'''

實戰演練

把上述所有語法組合起來成一個完整的Markdown TOML範本,一篇文章的開頭看起來就像這樣:

+++
title = "掌握Hugo中的TOML語法:從基礎到進階完整指南"
date = 2026-01-01
draft = false
weight = 1
author_name = "林小明"
is_featured = true
read_time_minutes = 5

categories = [
  "網頁開發",
  "前端技術"
]
tags = ["Hugo", "TOML", "Markdown"]

[author_details]
title = "資深開發者"
website = "https://example.com"

[author_details.contact]
email = "xiaoming@example.com"

seo = { keywords = "toml教學, hugo設定", robots = "noindex" }

poetic_quote = """
床前明月光,
疑是地上霜。
舉頭望明月,
低頭思故鄉。"""

post_summary = """
這是一段為了教學而編寫的超長文章摘要。\
雖然我們在TOML設定檔中將它拆成了兩行書寫,\
但因為使用了反斜線符號,Hugo在解析時會將它們自動串接成同一個流暢的長句。\
"""
+++