MDViewer

功能一覽

2026-07-27 2569 字 約 6 分鐘

算繪能力、閱讀體驗、搜尋、編輯、匯出與技術實作的完整說明。

功能

算繪能力

Markdown 語法

在 CommonMark 與 GitHub Flavored Markdown 的基礎上,額外支援:

語法 寫法 說明
表格 | a | b | 支援三種對齊,標題列可排序
待辦清單 - [x] 完成 已完成項自動加刪除線
刪除線 ~~文字~~ GFM
標示 ==文字== 黃色螢光筆效果
插入 ++文字++ 底線
下標 H~2~O
上標 x^2^
註腳 文字[^1] 雙向跳轉
定義清單 術語 換行 : 解釋
縮寫 *[HTML]: HyperText... 停留時顯示全稱
表情符號 :rocket: 名稱轉 Emoji
自動連結 <https://…> 裸 URL 也會辨識

數學公式

KaTeX 算繪,速度遠快於 MathJax。

  • 行內$E = mc^2$\(E = mc^2\)
  • 區塊$$…$$\[…\]
  • 支援矩陣、aligned 多行對齊、cases 分段函數、級數積分、希臘字母與常用巨集套件符號

閱讀器對 $ 做了保護性判斷:$100$5 - $10 這類價格寫法不會被誤判成公式。

圖表

Mermaid 算繪,寫在 ```mermaid 程式碼區塊裡即可。支援流程圖、時序圖、類別圖、狀態圖、ER 圖、甘特圖、圓餅圖、使用者旅程圖、心智圖、Git 分支圖、象限圖、時間軸等。

圖表主題綁定網站主題變數,切換深色模式時會自動重新算繪換色。滑鼠停在圖表上,右上角可複製原始碼或下載 SVG。

語法標示

  • 伺服器端由 Chroma 上色(文件頁),用戶端由 highlight.js 上色(閱讀器),兩者共用同一套配色變數,視覺一致
  • 每個程式碼區塊提供:語言標籤、複製按鈕、行號開關、自動換行開關
  • 超過 24 行自動摺疊,點擊展開
  • 支援用 title 標註檔名:
1
2
3
```js {title="app.js"}
const a = 1;
```

警示區塊

兩種寫法都支援。GitHub 風格(文件站與閱讀器都可用):

1
2
3
4
5
6
7
8
> [!NOTE]
> 一般性說明

> [!TIP]
> 實用建議

> [!WARNING]
> 需要注意

容器風格(僅閱讀器可用,文件頁不解析):

1
2
3
::: tip 自訂標題
容器語法支援 note / tip / important / warning / caution / danger / details
:::

六種類型:NOTE TIP IMPORTANT WARNING CAUTION DANGER

Front Matter

YAML(---)、TOML(+++)、JSON({})三種格式都能辨識。titledescriptiondateauthortagscategories 會擷取到文件頂部顯示,其餘欄位摺疊在「Front Matter」卡片裡。

閱讀體驗

主題

  • 淺色 / 深色 / 跟隨系統三檔,按 D 循環切換
  • 首屏算繪前用行內指令碼套用主題,不會閃白
  • 深色模式下程式碼配色、圖表配色、公式顏色全部同步調整

排版調整

, 開啟設定面板:

項目 範圍
內文字級 13 – 22 px
行距 1.40 – 2.40
內文寬度 窄 / 標準 / 寬 / 滿版
內文字型 無襯線 / 襯線
程式碼行號 顯示 / 隱藏

設定存在瀏覽器的 localStorage 裡,跨頁面、跨工作階段保持。

導覽

  • 檔案樹:目錄可摺疊,支援依檔名即時篩選
  • 大綱:二到四級標題,捲動時用 IntersectionObserver 標示目前章節,大綱本身也會跟著捲動
  • 閱讀進度:頂端漸層進度條,捲動超過 600px 出現回到頂端按鈕
  • 位置記憶:每篇文件的捲動位置依比例儲存,重新開啟時復原
  • 上下篇J / K 在檔案清單裡前後跳轉

圖片

點擊放大進入燈箱:滾輪縮放、拖曳平移、按兩下切換 1×/2×、+ - 0 鍵盤控制,可直接下載。

搜尋

閱讀器內的跨檔案搜尋

/Ctrl+K 開啟。載入資料夾後會在背景讀取所有 Markdown 建立 Fuse.js 模糊索引,權重依次為標題 > 檔名 > 內文 > 路徑。結果顯示檔案路徑與標示命中的上下文片段,方向鍵選擇、Enter 開啟。

文件內尋找

FCtrl+F,在目前文件內逐項標示符合處,Enter 跳下一個、Shift+Enter 跳上一個,並顯示「第幾個 / 共幾個」。

全站搜尋

文件頁面的索引是預先產生的,搜尋框直接在瀏覽器裡查這份索引,純前端、不需要後端。

編輯

M 進入編輯模式:左邊寫 Markdown 原始碼,右邊即時預覽(防抖 260 ms),中間的分隔條可拖曳,比例會記進設定。

  • 工具列:標題、粗體、斜體、刪除線、行內程式碼、三種清單、引用、連結、圖片、表格、程式碼區塊、公式、Mermaid、提示區塊、分隔線。已套用的格式再點一次即可取消
  • 鍵盤Ctrl+B/I/K 粗體、斜體、連結;Tab 縮排多行選取範圍;清單中按 Enter 自動續行並遞增編號,在空條目上按則結束清單。所有操作都走 execCommand,保留瀏覽器原生的復原堆疊
  • 儲存Ctrl+S 寫回本機原始檔案。第一次儲存時瀏覽器會跳出授權視窗,把先前的唯讀授權升級為讀寫
  • 草稿:每 1.2 秒閒置就把內容存進 IndexedDB。切換檔案、關閉工作區、關閉頁面時若有未儲存的修改都會攔一道確認;下次開啟該檔案會提示復原草稿
  • Mermaid 快取:預覽會依圖表原始碼快取算繪結果,打字時不會反覆重繪圖表

說明

寫回原始檔案依賴 File System Access API,只有 Chrome / Edge 等瀏覽器支援。Firefox、Safari,以及用拖放方式開啟的工作區,儲存會自動降級為下載 .md 檔案。

匯出

方式 快速鍵 產物
匯出 HTML E 單一 .html 檔,CSS 內嵌、圖片轉為 data URI,斷網也能開啟
匯出 PDF P 跳出選項對話方塊後走瀏覽器列印管線,輸出向量文字,可選取可搜尋

PDF 匯出可調整:紙張(A4 / Letter / A5)、方向、邊界、內文縮放、標題頁、可點擊的目錄頁、H1 或 H2 是否另起一頁、程式碼是否換行、是否列印外部連結網址。深色主題下會暫時把 Mermaid 圖表切成淺色重繪,避免深底淺字印到白紙上。

重要

最後一步是瀏覽器的列印對話方塊,把「目的地」選成「另存為 PDF」。頁碼與頁首頁尾由該對話方塊的「頁首及頁尾」選項控制——Chrome 不支援 CSS @page 的頁邊區塊,純 CSS 無法自行繪製頁碼。

技術實作

相依套件與體積

模組 用途 體積 載入時機
主套件 markdown-it + 外掛、highlight.js、Fuse.js、應用程式碼 約 505 KB 首屏
文件頁套件 加強指令碼 + 搜尋 約 60 KB 首屏
KaTeX 公式 約 261 KB + 660 KB 字型 頁面出現公式時
Mermaid 圖表 約 3.3 MB 頁面出現圖表時

所有相依套件都在建置期打包進產物,執行時不請求任何第三方 CDN,可完全離線部署,也不會有外部資源被擋的問題。

隱私

  • 閱讀器的檔案讀取與寫回全部在瀏覽器內完成,沒有任何上傳行為
  • 不載入第三方指令碼,無埋點、無統計、無 Cookie
  • 設定存 localStorage,目錄控制代碼、閱讀位置與編輯草稿存 IndexedDB,都在本機

多語言

介面提供 English、簡體中文、繁體中文、日本語、Español、Français 六種語言。英文在根路徑,其餘語言帶 /zh//zh-hant//ja//es//fr/ 前綴,各有獨立可分享的網址。頂欄的地球圖示可隨時切換,會盡量跳到目前頁面的對應譯文。

介面文案集中在 data/i18n/<lang>.toml,範本與瀏覽器端指令碼共用同一份表;頁面只載入目前語言的文案。首次造訪時若瀏覽器語言與目前頁面不一致,底部會出現一次可永久關閉的切換提示。

相關