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 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 |
表格儲存格裡其他特殊字元的處理方式:
- 字面管道符用
\| - 如果需要
&符號,用&這樣的 HTML 實體 - 用行內程式碼反引號包住內容,防止 Markdown 解析
程式碼區塊問題
問題 4:程式碼區塊轉換後語法高亮消失
你看到的狀況: 編輯器裡標記得漂漂亮亮的 Python 或 JavaScript 程式碼,到了 Word 文件裡變成黑白純文字。
為什麼會這樣:
兩個常見原因:
- 沒有語言識別字 —— 你只用了三個反引號,沒有指定語言
- 轉換器不支援高亮 —— 很多基本款轉換器在匯出 Word/PDF 時會把語法高亮拿掉
差別在這裡:
<!-- NO highlighting — missing language tag -->
```
function hello() {
console.log("Hello");
}
```
<!-- WITH highlighting — language specified -->
```javascript
function hello() {
console.log("Hello");
}
```
怎麼修:
在開頭的三個反引號後面一律指定語言。常用的語言識別字:
| 語言 | 識別字 |
|---|---|
| JavaScript | javascript 或 js |
| Python | python 或 py |
| TypeScript | typescript 或 ts |
| Bash/Shell | bash 或 shell |
| JSON | json |
| SQL | sql |
| HTML | html |
| CSS | css |
| Go | go |
| Rust | rust |

如果你的轉換器還是產出不了帶高亮的輸出,MarkFlow 在 Word 和 PDF 匯出中都保留語法高亮——程式碼會有正確的顏色、字型和縮排。
問題 5:行內程式碼格式消失
你看到的狀況: 用單反引號包住的文字,例如 config.yaml 或 npm 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 文件裡顯示的是破圖圖示、空白區域,或是替代文字而不是真正的圖片。
為什麼會這樣:
這是我們看到最多的轉換抱怨,幾乎都歸結到圖片路徑:
- 轉換器解析不了的相對路徑 ——
在編輯器裡能用,是因為編輯器知道檔案在哪。轉換器不一定知道 - 需要驗證的遠端 URL —— 託管在私有 GitHub repo、Google Drive 或 Notion 上的圖片,轉換時下載不了
- 協定問題 —— 有些轉換器不處理
file://路徑或本機絕對路徑 - 檔案格式不支援 —— 某些轉換器處理不了 SVG、WebP 或 TIFF
怎麼修:
| 情境 | 解決方案 |
|---|---|
| 使用相對路徑 | 轉成絕對 URL 或 base64 嵌入 |
| 圖片在私有伺服器上 | 先把圖片下載下來,用本機路徑 |
| 使用 SVG 格式 | 轉換文件前先轉成 PNG 或 WebP |
| 超大圖片(>10MB) | 轉換前先調整尺寸或壓縮 |
可靠的做法是使用公開可存取的圖片 URL:
<!-- Most reliable: absolute URL -->

<!-- Also reliable: base64 embedding (for small images) -->


用 MarkFlow: 把 .md 檔案和它的圖片資料夾一起拖進去——MarkFlow 會自動解析相對路徑。你也可以貼上帶圖片 URL 的 Markdown,圖片會被嵌入到 Word 輸出裡。
問題 8:圖片在 Word 輸出裡太大或太小
你看到的狀況: 在 Markdown 預覽裡看起來完美的圖片,轉成 Word 文件後要麼很小,要麼巨大,把頁面版面撐壞了。
為什麼會這樣:
Markdown 沒有原生的圖片尺寸語法。 格式不接受寬度或高度參數。大多數轉換器會按圖片原始像素尺寸插入,這可能跟 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 錯誤:
<!-- 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 的轉換器的折衷方案:
- 用 Mermaid Live Editor 渲染你的流程圖
- 匯出為 PNG 或 SVG
- 把 Markdown 裡的 Mermaid 程式碼區塊換成圖片參考
- 照常轉換
這多了一個手動步驟,但能保證流程圖在任何轉換器的輸出裡都出現。
格式和結構問題
問題 12:Word 輸出裡標題層級出錯
你看到的狀況: Word 裡的標題層級和你的 Markdown 對不上。H2 標題顯示成 H1,或所有標題都渲染成同一個大小。
為什麼會這樣:
兩個常見原因:
- 你的 Markdown 裡有多個 H1 標題。 一份文件應該只有一個 H1(標題)。有些轉換器在偵測到多個 H1 時會合併或重新對應標題
- 轉換器把 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 轉 Word 轉換器 —— 支援完整格式的轉換,包括表格、程式碼和數學公式
- Markdown 轉 PDF 轉換器 —— 從 Markdown 產生可列印的 PDF
- Markdown 轉 HTML 轉換器 —— 匯出乾淨的語意化 HTML
- 如何用 Markdown 寫作 —— 掌握語法,避免轉換問題
- ChatGPT Markdown 輸出指南 —— 從 AI 工具獲取結構良好的 Markdown
- 最佳 Markdown 轉 PDF 轉換器 —— 詳細的工具對比
覺得好用?分享給更多朋友吧!