返回部落格
Blog Article2026-04-03

Markdown 轉換疑難排解:表格、程式碼、圖片問題全攻略

DA
Daipeng (sosojustdo)
30 min read

Markdown 轉換疑難排解指南

你的 Markdown 寫得乾乾淨淨,按下「轉換」,結果輸出和你預期的完全不一樣——表格整個跑掉,程式碼區塊變成純文字,圖片不見了,LaTeX 公式變成一串亂碼。

很熟悉吧?Markdown 轉 Word 和 PDF 往往就是在那幾種相同的方式上翻車。本指南涵蓋最常見的 15 個問題——每一個都附上真實原因和具體解法。

問題速查表:問題 → 解法

問題最可能的原因快速解法
表格欄位錯亂管道符語法缺漏或不一致用 linter 檢查表格
程式碼區塊高亮消失沒有指定語言識別字在 ``` 後面加上語言標籤
圖片不顯示路徑無效或協定不支援改用絕對 URL 或 base64 嵌入
LaTeX 渲染成純文字轉換器不支援數學公式換用支援 KaTeX/MathJax 的工具
Mermaid 流程圖缺失沒有 Mermaid 渲染引擎用支援 Mermaid 的轉換器
巢狀列表被壓平Tab 和空格混用統一用 4 個空格縮排
註腳消失轉換器忽略註腳語法確認是否支援 GFM 註腳
Emoji 顯示為方框字型不包含 Emoji 字形用支援 Emoji 字型對應的轉換器

表格問題

問題 1:表格欄位在 Word 裡錯位或合併

你看到的狀況: 在 Markdown 裡排得整整齊齊的表格,轉成 Word 之後變成一團亂——欄位合併在一起、內容溢出,甚至整個表格結構直接消失。

為什麼會這樣:

最常見的原因就是表格語法無效。Markdown 表格的格式要求其實非常嚴格。少一個管道符或分隔列錯位,整個表格就會壞掉。

下面是常見的錯誤寫法:

<!-- BROKEN: Missing leading pipe -->
Header 1 | Header 2
--- | ---
Cell 1 | Cell 2

<!-- BROKEN: Separator row doesn't match column count -->
| Header 1 | Header 2 | Header 3 |
| --- | --- |
| Cell 1 | Cell 2 | Cell 3 |

怎麼修:

一律使用一致的管道符語法,並保持欄數相符:

| Header 1 | Header 2 | Header 3 |
|:---------|:--------:|----------:|
| Left     | Center   | Right     |
| Cell 1   | Cell 2   | Cell 3    |

幾個關鍵規則:

  • 每列首尾都要有管道符 |
  • 分隔列的欄數必須和表頭一致
  • 用對齊冒號 —— :--- 靠左,:---: 置中,---: 靠右
  • 不要用合併儲存格 —— 標準 Markdown 不支援。如果需要合併儲存格,轉換後必須在 Word 文件裡手動編輯

Markdown 表格修復前後對比:左邊是缺少管道符導致錯位的表格,右邊是格式正確、欄位對齊到位的表格

專業提示: 轉換之前,先把表格貼到 Markdown linter 或預覽工具裡。大多數編輯器(VS Code、Typora、Obsidian)會立刻告訴你表格有沒有寫錯。


問題 2:表格欄寬在 Word 輸出裡分配不均

你看到的狀況: 表格在 Markdown 編輯器裡渲染正常,但轉成 Word 之後某一欄佔了 80% 的頁面寬度,其他欄被擠得很窄。

為什麼會這樣:

大多數 Markdown 轉 Word 的轉換器會根據內容長度計算欄寬。如果某個儲存格塞了一長串文字或一條 URL,而其他儲存格只有很短的值,分配就會失衡。和 HTML 不同,Markdown 沒有指定欄寬的語法。

怎麼修:

  • 保持儲存格內容簡潔。 把長說明移到註腳或表格下方的獨立段落裡
  • 把長 URL 處理成連結文字:[Link text](url) 而不是在儲存格裡直接貼裸 URL
  • MarkFlow 轉換 —— 它預設會做欄寬平衡處理,產出的 Word 表格比大多數轉換器更好讀

如果需要精確的欄寬,轉換後在 Word 裡編輯表格:選取表格 → 表格內容 → 欄選項卡 → 設定慣用寬度。


問題 3:儲存格裡的特殊字元破壞渲染

你看到的狀況: 表格儲存格裡的管道符 | 破壞了欄位結構,或是 HTML 實體被當成原始文字渲染。

為什麼會這樣:

管道符 | 是 Markdown 表格的欄位分隔符。當儲存格內容裡出現了字面意義的管道符,解析器會把它當成欄位邊界。

怎麼修:

用反斜線跳脫管道符:

| Command | Description |
|:--------|:------------|
| `echo "a \| b"` | Pipes output through filter |
| `status: pass\|fail` | Shows pass or fail status |

表格儲存格裡其他特殊字元的處理方式:

  • 字面管道符用 \|
  • 如果需要 & 符號,用 &amp; 這樣的 HTML 實體
  • 用行內程式碼反引號包住內容,防止 Markdown 解析

程式碼區塊問題

問題 4:程式碼區塊轉換後語法高亮消失

你看到的狀況: 編輯器裡標記得漂漂亮亮的 Python 或 JavaScript 程式碼,到了 Word 文件裡變成黑白純文字。

為什麼會這樣:

兩個常見原因:

  1. 沒有語言識別字 —— 你只用了三個反引號,沒有指定語言
  2. 轉換器不支援高亮 —— 很多基本款轉換器在匯出 Word/PDF 時會把語法高亮拿掉

差別在這裡:

<!-- NO highlighting — missing language tag -->
```
function hello() {
  console.log("Hello");
}
```

<!-- WITH highlighting — language specified -->
```javascript
function hello() {
  console.log("Hello");
}
```

怎麼修:

在開頭的三個反引號後面一律指定語言。常用的語言識別字:

語言識別字
JavaScriptjavascriptjs
Pythonpythonpy
TypeScripttypescriptts
Bash/Shellbashshell
JSONjson
SQLsql
HTMLhtml
CSScss
Gogo
Rustrust

程式碼區塊對比:左邊是沒有語言標籤的黑白純文字程式碼,右邊是帶顏色和正確格式的語法高亮 JavaScript

如果你的轉換器還是產出不了帶高亮的輸出,MarkFlowWordPDF 匯出中都保留語法高亮——程式碼會有正確的顏色、字型和縮排。


問題 5:行內程式碼格式消失

你看到的狀況: 用單反引號包住的文字,例如 config.yamlnpm install,在轉換後的文件裡變成普通文字,沒有任何視覺區分。

為什麼會這樣:

有些轉換器把行內程式碼當普通文字處理,不套用任何樣式。反引號語法有被辨識到,但輸出格式不包含等寬字型或背景色。

怎麼修:

  • 用尊重行內程式碼樣式的轉換器。 MarkFlow 在 Word 輸出中用等寬字型和淡色背景渲染行內程式碼,讓它和周圍文字有明顯區分
  • 避免在行內程式碼裡巢狀反引號。 如果程式碼裡含有反引號,用雙反引號:`code with `backtick` → 用 ``code with `backtick` ``
  • 不要把行內程式碼拿來當強調用 —— 強調請用 粗體斜體。反引號留給真正的程式碼、指令、檔案名稱和技術識別字

問題 6:程式碼縮排和空白出錯

你看到的狀況: Word 輸出裡的程式碼區塊縮排不對——要麼全部靠左,要麼 Tab 被轉成長短不一的間距。

為什麼會這樣:

Markdown 解析器和 Word 渲染引擎對 Tab 轉空格的處理方式不同。有些轉換器還會吃掉開頭的空白,或把多個空格壓成一個。

怎麼修:

  • 在 Markdown 程式碼區塊裡用空格,不要用 Tab。 大多數風格指南建議 2 或 4 個空格。Tab 在不同轉換器裡的解釋不一致
  • 用圍籬式程式碼區塊(三個反引號)而不是縮排式程式碼區塊(4 個空格)。圍籬式程式碼區塊解析更可靠:
<!-- PREFERRED: Fenced code block -->
```python
def nested():
    if True:
        for i in range(10):
            print(i)
```

<!-- AVOID: Indented code block (4 spaces) -->
    def nested():
        if True:
            for i in range(10):
                print(i)
  • 轉換後立刻檢查輸出。 如果空白有問題,問題出在轉換器上,不是你的 Markdown。換個工具試試,或回報 bug

圖片問題

問題 7:圖片轉換後不顯示

你看到的狀況: 轉出來的 Word 或 PDF 文件裡顯示的是破圖圖示、空白區域,或是替代文字而不是真正的圖片。

為什麼會這樣:

這是我們看到最多的轉換抱怨,幾乎都歸結到圖片路徑

  1. 轉換器解析不了的相對路徑 —— ![Alt](./images/photo.png) 在編輯器裡能用,是因為編輯器知道檔案在哪。轉換器不一定知道
  2. 需要驗證的遠端 URL —— 託管在私有 GitHub repo、Google Drive 或 Notion 上的圖片,轉換時下載不了
  3. 協定問題 —— 有些轉換器不處理 file:// 路徑或本機絕對路徑
  4. 檔案格式不支援 —— 某些轉換器處理不了 SVG、WebP 或 TIFF

怎麼修:

情境解決方案
使用相對路徑轉成絕對 URL 或 base64 嵌入
圖片在私有伺服器上先把圖片下載下來,用本機路徑
使用 SVG 格式轉換文件前先轉成 PNG 或 WebP
超大圖片(>10MB)轉換前先調整尺寸或壓縮

可靠的做法是使用公開可存取的圖片 URL:

<!-- Most reliable: absolute URL -->
![Architecture diagram](https://your-domain.com/images/diagram.png)

<!-- Also reliable: base64 embedding (for small images) -->
![Icon](data:image/png;base64,iVBORw0KGgo...)

常見的圖片路徑失敗:相對路徑找不到、私有 URL 回傳 403、不支援的 SVG 格式、超大檔案逾時

MarkFlow.md 檔案和它的圖片資料夾一起拖進去——MarkFlow 會自動解析相對路徑。你也可以貼上帶圖片 URL 的 Markdown,圖片會被嵌入到 Word 輸出裡。


問題 8:圖片在 Word 輸出裡太大或太小

你看到的狀況: 在 Markdown 預覽裡看起來完美的圖片,轉成 Word 文件後要麼很小,要麼巨大,把頁面版面撐壞了。

為什麼會這樣:

Markdown 沒有原生的圖片尺寸語法。![alt](url) 格式不接受寬度或高度參數。大多數轉換器會按圖片原始像素尺寸插入,這可能跟 Word 頁面寬度不相符。

怎麼修:

部分 Markdown 方言支援透過 HTML 指定圖片尺寸:

<!-- Control image size with HTML -->
<img src="./diagram.png" alt="System architecture" width="600" />

不過,不是所有 Markdown 轉 Word 的轉換器都處理 HTML 標籤。你的選擇:

  • 把來源圖片調整到大約 600-800px 寬,然後再加到 Markdown 裡——這適配大多數 Word 頁面版面
  • 如果你的轉換器支援行內 HTML,就用帶 width 的 HTML img 標籤
  • 轉換後在 Word 裡調整尺寸: 對圖片按右鍵 → 大小及位置 → 把寬度設成想要的百分比

Word 輸出建議的圖片尺寸:

  • 全寬圖片:600-800px 寬
  • 行內示意圖:400-500px 寬
  • 圖示或徽章:100-200px 寬

問題 9:Base64 嵌入的圖片轉換失敗

你看到的狀況: 在 Markdown 裡用 base64 data URI 嵌入的圖片在預覽裡能用,但在轉換後的文件裡顯示成破圖或被完全移除。

為什麼會這樣:

Base64 編碼的圖片會顯著增大檔案體積(大約比二進位大 33%)。有些轉換器對行內 data URI 有大小限制,或是乾脆不解析 data:image/...;base64,... 這種格式。

怎麼修:

  • 把 base64 圖片保持得小一點 —— 100KB 以下(原始二進位約 75KB)。圖示和小 logo 效果不錯;截圖和照片通常不行
  • 任何大圖都用實際的圖片檔案。 把它們託管起來,或跟你的 .md 檔案放在一起
  • 查看你的轉換器文件了解 data URI 支援情況。MarkFlow 在 Word 和 PDF 輸出中都處理 base64 嵌入的圖片,但實際上每張圖片有大約 2MB 的大小上限

LaTeX 數學公式和 Mermaid 流程圖問題

問題 10:LaTeX 公式渲染成純文字

你看到的狀況: Word 文件裡顯示的不是正確渲染的公式,而是原始 LaTeX 原始碼:$E = mc^2$$$\int_{0}^{1} x^2 dx$$ 以字面文字出現。

為什麼會這樣:

LaTeX 數學公式支援不屬於標準 Markdown 或 GFM。它是一個擴充功能,需要特定的渲染引擎(KaTeX 或 MathJax)。大多數基礎 Markdown 轉換器——包括沒加正確參數的 Pandoc、沒裝擴充套件的 VS Code,以及 Dillinger——都不處理 LaTeX 語法。

怎麼修:

先確認你的語法沒寫錯:

<!-- Inline math: single dollar signs -->
The formula $E = mc^2$ describes mass-energy equivalence.

<!-- Block math: double dollar signs -->
$$
\frac{-b \pm \sqrt{b^2 - 4ac}}{2a}
$$

然後,用一個支援 LaTeX 的轉換器:

工具LaTeX 支援備註
MarkFlow支援KaTeX 渲染,行內和區塊都行
Pandoc支援需要 --mathjax 或 LaTeX 引擎
Typora支援內建 KaTeX/MathJax
VS Code部分支援需要 KaTeX CSS 擴充套件
Dillinger不支援

LaTeX 渲染對比:左邊是 Word 裡以純文字顯示的原始 LaTeX 原始碼,右邊是正確渲染的帶分數和積分的數學公式

導致渲染失敗的常見 LaTeX 錯誤:

<!-- WRONG: Space after opening $ -->
$ E = mc^2 $

<!-- CORRECT: No space after opening $ -->
$E = mc^2$

<!-- WRONG: Missing closing delimiter -->
$$\int_{0}^{1} x^2 dx

<!-- CORRECT: Matching delimiters -->
$$\int_{0}^{1} x^2 dx$$

對於學術論文和技術文件,MarkFlow 會在 Word 輸出中把 LaTeX 渲染成真實的公式圖片——所以即使在不支援公式編輯器的 Word 版本裡,你的方程式也能正確顯示。


問題 11:Mermaid 流程圖在輸出裡不出現

你看到的狀況: 轉出來的 Word/PDF 裡顯示的不是渲染好的流程圖或序列圖,而是把原始 Mermaid 程式碼當成普通程式碼區塊。

為什麼會這樣:

Mermaid 是一個基於 JavaScript 的渲染引擎。它需要瀏覽器或 Node.js 環境來產生視覺化圖形。大多數 Markdown 轉 Word 的轉換器只把 Markdown 當純文字處理,不執行 JavaScript,所以它們把 Mermaid 區塊當成普通程式碼。

怎麼修:

先確認你的 Mermaid 語法:

```mermaid
graph TD
    A[Start] --> B{Decision}
    B -->|Yes| C[Action 1]
    B -->|No| D[Action 2]
    C --> E[End]
    D --> E
```

能把 Mermaid 渲染到 Word/PDF 的工具:

  • MarkFlow —— 把 Mermaid 流程圖渲染成圖片嵌入 Word 輸出。支援流程圖、序列圖、甘特圖等
  • Typora —— 在預覽中渲染 Mermaid,並匯出為 PDF
  • Pandoc —— 需要 mermaid-filter 外掛(npm install -g mermaid-filter

Mermaid 流程圖對比:左邊是 Word 裡以普通程式碼區塊顯示的原始 Mermaid 程式碼,右邊是帶彩色節點和方向箭頭的渲染流程圖

不支援 Mermaid 的轉換器的折衷方案:

  1. Mermaid Live Editor 渲染你的流程圖
  2. 匯出為 PNG 或 SVG
  3. 把 Markdown 裡的 Mermaid 程式碼區塊換成圖片參考
  4. 照常轉換

這多了一個手動步驟,但能保證流程圖在任何轉換器的輸出裡都出現。


格式和結構問題

問題 12:Word 輸出裡標題層級出錯

你看到的狀況: Word 裡的標題層級和你的 Markdown 對不上。H2 標題顯示成 H1,或所有標題都渲染成同一個大小。

為什麼會這樣:

兩個常見原因:

  1. 你的 Markdown 裡有多個 H1 標題。 一份文件應該只有一個 H1(標題)。有些轉換器在偵測到多個 H1 時會合併或重新對應標題
  2. 轉換器把 Markdown 標題對應到 Word 樣式的方式不同。 有些工具會把第一個標題當文件標題,不管它是幾級

怎麼修:

遵循正確的標題層級:

# Document Title (H1 — use exactly once)

## Section Title (H2 — main sections)

### Subsection (H3 — within sections)

#### Detail (H4 — rarely needed)
  • 不要跳級 —— 別從 H2 直接跳到 H4
  • H1 只在文件開頭用一次,或讓轉換器從標題 metadata 裡新增
  • 檢查 Word 輸出的樣式面板 —— 標題應該顯示為「標題 1」「標題 2」等。如果顯示為「內文」,代表轉換器沒有正確對應

問題 13:巢狀列表遺失縮排

你看到的狀況: 你精心巢狀的項目符號列表或編號列表,在 Word 輸出裡完全被壓平了——所有項目都在同一層。

為什麼會這樣:

罪魁禍首是縮排不一致。Markdown 需要一致的間距才能偵測巢狀層級。混用 Tab 和空格,或一處用 2 個空格、另一處用 3 個,都會讓解析器搞混。

怎麼修:

每層巢狀統一用 4 個空格(或 1 個 Tab):

- First level item
    - Second level item
        - Third level item
    - Back to second level
- Back to first level

1. First item
    1. Sub-item one
    2. Sub-item two
2. Second item
    - Mixed bullet under number

常見錯誤:

<!-- BROKEN: Inconsistent indentation (2 spaces then 3) -->
- Item A
  - Sub A (2 spaces)
   - Sub B (3 spaces — parser gets confused)

<!-- FIXED: Consistent 4-space indentation -->
- Item A
    - Sub A
    - Sub B

如果你的轉換器還是把列表壓平,試試換個轉換器。MarkFlow 在 Word 輸出中保留巢狀列表縮排,包括有序和無序列表混用的情況。


問題 14:註腳消失或顯示異常

你看到的狀況: [^1] 這樣的註腳參考在轉換後的文件裡變成了字面文字,而你 Markdown 底部的註腳內容不見了,或被渲染成普通段落。

為什麼會這樣:

註腳是 GFM 擴充,不屬於原始 Markdown 規格。只支援基礎 Markdown 的轉換器不會處理註腳語法。

怎麼修:

正確的註腳語法:

This claim needs a source[^1]. Another point here[^note].

[^1]: Smith, J. (2025). "Research Paper Title." Journal Name.
[^note]: This is a longer footnote with multiple sentences.
    Indent continuation lines with 4 spaces.

確認:

  • 參考 [^id] 和定義 [^id]: 使用相同的識別字
  • 註腳定義放在文件末尾(至少在所有參考之後)
  • 你的轉換器支援 GFM 註腳 —— MarkFlow、Pandoc 和 Typora 都能正確處理

問題 15:Emoji 字元顯示為空白方框

你看到的狀況: 🚀⚠️ 這樣的 Emoji 在 Word 輸出裡顯示成空白矩形或問號。

為什麼會這樣:

Word 文件使用了不包含 Emoji 字形的字型。轉換器把 Markdown 文字對應到 Word 時,會套用一個標準字型(例如 Calibri 或 Times New Roman),而這個字型可能不包含 Unicode Emoji 字元。

怎麼修:

  • 轉換後: 在 Word 裡選取 Emoji 字元,把字型改成 "Segoe UI Emoji"(Windows)或 "Apple Color Emoji"(macOS)
  • 轉換前: 如果 Emoji 渲染很關鍵,考慮用文字替代或圖片代替它們
  • 用能處理 Emoji 字型的轉換器: MarkFlow 會在 Word 輸出中把 Emoji 字元對應到合適的系統字型,所以它們在 Windows 和 macOS 上都能正確渲染
做法優點缺點
Markdown 裡用 Unicode Emoji簡單、標準渲染取決於字型
HTML Emoji(:white_check_mark:相容性更好不是所有轉換器都解析簡碼
圖片替代顯示有保障額外工作量、檔案較大

預防:怎麼在轉換問題發生前就避免它

大部分轉換問題是可以預防的。把這些習慣融入你寫 Markdown 的工作流程:

轉換前先檢查

用 Markdown linter 在語法問題變成轉換問題之前就抓出來:

# Install markdownlint CLI
npm install -g markdownlint-cli

# Lint your file
markdownlint document.md

VS Code 使用者:裝一個 "markdownlint" 擴充套件來做即時檢查。

用一個跟輸出一致的預覽

你編輯器的預覽和轉換器的輸出用的是不同的渲染引擎。在 VS Code 裡看起來沒問題的東西,到了 Word 裡可能就壞了。正式匯出之前,永遠先做一次測試轉換。

統一你的 Markdown 風格

訂好慣例並持續遵守:

  • 縮排: 巢狀用 4 個空格
  • 換行: 區塊之間空一行
  • 程式碼區塊: 一律用圍籬式(不用縮排式),一律帶語言標籤
  • 圖片: 路徑格式一致(全部相對或全部絕對)
  • 表格: 每列首尾都有管道符

維護一份測試文件

維護一個 Markdown 檔案,裡面對你用到的每一種元素都放一個範例——表格、程式碼區塊、數學公式、流程圖、巢狀列表、註腳、Emoji。每次更新工具時都用它跑一遍轉換器。這能在影響真實文件之前抓出回歸問題。


什麼時候用哪個轉換器

不同的工具處理不同的問題集合:

如果你需要……最佳選擇原因
一切開箱即用MarkFlow零設定處理 GFM、LaTeX、Mermaid、Emoji 和程式碼高亮
含複雜數學公式的學術論文Pandoc 配 LaTeX 引擎公式渲染品質最高
最大程度控制 Word 樣式Pandoc 配自訂 reference.docx基於範本的方式
快速轉換簡單文件任何瀏覽器端工具大多數轉換器都能搞定基礎 Markdown
在 CI/CD 裡批次處理Pandoc 或 markdown-pdf可腳本化、可自動化

關於轉換工具的詳細對比,請看我們的 Markdown 轉 PDF 轉換器對比。


常見問題

問:為什麼我的 Markdown 表格轉 Word 時會壞掉? 答:最常見的原因是管道符語法不一致——缺少首尾管道符,或分隔列的欄數和表頭對不上。轉換前先在 Markdown 預覽裡檢查你的表格語法。

問:轉 Word 時怎麼保留程式碼區塊的語法高亮? 答:一律在開頭三個反引號後面指定語言(例如 ```python)。然後用 MarkFlow 這類能在 Word 輸出中保留高亮的轉換器。

問:為什麼 Markdown 轉 Word 後我的圖片不見了? 答:轉換器解析不了你的圖片路徑。遠端圖片用絕對 URL,或用 MarkFlow 這類工具——上傳 .md 檔案連同它的圖片資料夾時,它會處理相對路徑。

問:能在不丟格式的情況下把 LaTeX 數學公式轉成 Word 嗎? 答:可以,但你需要一個支援 LaTeX 的轉換器。MarkFlow、Pandoc(加數學參數)和 Typora 都能正確渲染 LaTeX。基礎轉換器會把原始 LaTeX 原始碼當純文字輸出。

問:為什麼 Mermaid 流程圖在我轉換後的文件裡顯示成程式碼? 答:大多數轉換器不執行 Mermaid 所需的 JavaScript。用 MarkFlow 實現自動 Mermaid 渲染,或用 Mermaid Live Editor 把流程圖預先渲染成圖片。

問:怎麼修復 Word 輸出裡巢狀列表的縮排? 答:在你的 Markdown 裡每層巢狀嚴格用 4 個空格。不要混用 Tab 和空格。如果問題還在,試試換個轉換器——有些轉換器處理巢狀列表更好。


相關資源

#Markdown Conversion#Troubleshooting#Markdown to Word#Markdown to PDF#Formatting Issues#LaTeX#Mermaid

覺得好用?分享給更多朋友吧!