文件
文件是依序閱讀並列印在紙上的產物。這兩個事實限制了版面設計:單一欄位的文字、真實的分頁,以及任何不能依賴滑鼠懸停的效果。
先決定分頁方式
- 流動排版(預設)— 單一連續的文字流;瀏覽器的列印引擎會自動將其分割成多頁。適用於報告、備忘錄、信件、論文,以及任何長度不受你控制的內容。
- 固定頁面 — 明確使用
<section class="page">區塊,每個區塊代表一頁。適用於頁數本身就是設計重點的情況:一頁的履歷表、雙面的傳單、證書、海報。
如果對方要求「兩頁」,表示固定頁面。如果對方要求「一份報告」,表示流動排版。當真的不清楚時,請詢問 — 採用錯誤的製作方式會浪費整份文件。
幾何設定
在 <head> 中連結 Token 檔案,如果文件使用了其元件,也一併連結 components.css,並使用其變數來設定色彩、字體和間距。以下規則僅為紙張幾何設定:
@page { size: A4; margin: 0; } /* 或:size: letter; */
body { margin: 0; background: white; }
.page { width: 210mm; min-height: 297mm; padding: 24mm 22mm; box-sizing: border-box; }
.page + .page { break-before: page; }
@media screen {
body { background: gainsboro; padding: 32px 0; }
.page { margin: 0 auto 24px; box-shadow: 0 2px 24px color-mix(in srgb, black 12%, transparent); }
}
對於流動排版的文件,請移除固定的 .page 並在 @page { margin: 22mm } 中設定一個 max-width: 66ch 的欄寬。紙張大小:除非使用者明顯是美國人,否則使用 A4;若是美國人則使用 Letter。如果他們提供了尺寸,則使用他們的尺寸。
字體
- 內文 11–12pt,行高 1.5–1.6。任何需要閱讀的內容,字體大小不得低於 10.5pt。
- 每行字數 60–75 個字元。超過此寬度,眼睛會難以對齊。
- 內文使用一種字體家族,標題可選擇性地使用第二種。如果存在設計系統,則使用相同的配對方式。
- 標題應按照比例縮放,其中頂層標題應明顯較大 — 28–36pt — 而不是 14pt 粗體。
- 強調應透過字重和間距來實現,而非僅依賴顏色。一份以灰階列印的文件仍需能正常閱讀。
結構
- 使用真正的語意元素:
h1–h3、p、ul、table、figure、blockquote。不要使用已設定樣式的 div。 - 如果文件長度超過兩頁,則透過
@page計數器設定頁碼:瀏覽器支援有限 — 在每個固定頁面上使用類似註腳的數字是一種可靠的備用方案。@page { @bottom-center { content: counter(page); } } - 表格:數字靠右對齊,文字靠左對齊,使用細線而非完整邊框,透過
thead { display: table-header-group }讓表頭在跨頁時重複顯示。 - 避免在高度超過頁面三分之一的元素上使用
break-inside: avoid。 - 圖表必須有標題。沒有標題,就不要使用圖表。
內容
保留使用者的文字。你可以依照要求進行刪減和重新排序,但不得改寫。如果某個章節因為使用者尚未撰寫而為空,請留下明確標示的空白區域,而非自行編造文字。
不使用圖庫照片,也不使用僅作為裝飾的生成圖像。當文件需要真實圖片時,如果 FLUX 工具可用,則使用它來生成;否則,使用一個帶有等寬字體註記的佔位框,說明該處應放置什麼內容。
最後校驗
在以列印寬度執行 design-verify 後,檢視截圖:
node ~/.config/opencode/lib/design/verify.mjs "design/Report.html" \
--width 900 --height 1200 --full --out design/.verify/report.png
檢查項目:文字是否被頁面邊緣裁切、標題是否在頁面底部孤行、表格是否分割不當,以及任何水平溢出 — 在列印中這意味著內容遺失於右側邊緣之外。
接著,請親自將文件輸出為 PDF 一次(Cmd-P,另存為 PDF),以確認頁數以及內容在實際紙張尺寸下不會位移。