Community程式設計與開發github.com

a5-coin

生成適用於 A5 Filofax 活頁夾的列印級硬幣收藏檢查表 PDF。每當使用者要求可列印的硬幣檢查表、活頁內頁、硬幣收藏 PDF、A5 硬幣清單,或任何結合「硬幣」與「列印/活頁/檢查表/PDF」的請求時,務必啟用此技能。

a5-coin 是什麼?

此技能專為產生高品質、可直接列印的 A5 尺寸硬幣收藏檢查表 PDF 而設計,特別優化以適用於 Filofax 6 孔活頁夾。它整合了針對 ReportLab 的嚴格版面配置規則,包括:A5 紙張的 6 孔打孔邊距、16-18 pt 行高與 124mm 可用寬度、強制以 Carlito (Calibri 相容) 字型呈現,以及純灰階列印設計。關鍵格式化規則包括:所有主要欄位(名稱、時期、現有)強制使用統一的 11pt 字型大小、在灰階雷射印表機上使用對角線條紋強調已收集行、透過精確的欄位定位(年代標記在 84mm、現有欄在 89mm)來避免「時期」文字(約 28mm 寬)與相鄰欄位的重疊——這是多次反覆調整的修正成果。此技能支援連續頁面流程(不會每個章節獨佔一頁),並包含防孤兒標題邏輯;此外也支援根據 Numista 匯出資料交叉比對系列主清單,以及迭代現有硬幣 PDF(重新排版、新增系列、修正版面)。最後會儲存 PDF 並使用 `pdf2image` 進行視覺化品質檢查。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/cercit/AI-Skills/tree/main/a5-coin

Installed? Explore more 程式設計與開發 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

A5 硬幣檢查表 PDF 產生器

使用時機

  • 使用者想要一份可列印的硬幣收藏檢查表
  • 使用者提及 A5、Filofax、活頁夾或適合硬幣的計畫表頁面
  • 使用者想要將 Numista 匯出清單與系列主清單做交叉比對
  • 使用者正在迭代之前產生的硬幣檢查表 PDF

頁面設定

from reportlab.lib.pagesizes import A5
PAGE_W, PAGE_H = A5  # 148mm x 210mm (419.53 x 595.28 pts)

LEFT_M = 18*mm    # 較寬 — 可避開 6 孔 Filofax 打孔
RIGHT_M = 6*mm
TOP_M = 9*mm
BOT_M = 8*mm
USABLE_W = PAGE_W - LEFT_M - RIGHT_M  # ~124mm

6 孔打孔導引

每頁皆繪製。Filofax A5 標準孔位距紙張頂端距離:

HOLE_POSITIONS_MM = [19, 51, 70, 140, 159, 191]
for h in HOLE_POSITIONS_MM:
    y = PAGE_H - h*mm
    c.setStrokeColor(HexColor("#CCCCCC"))
    c.setLineWidth(0.25)
    c.circle(4.5*mm, y, 2.2*mm, stroke=1, fill=0)

字型

使用 Carlito(與 Calibri 公制相容,基於 SIL 開放字型授權免費提供)。在 Linux 上通常位於:

/usr/share/fonts/truetype/crosextra/Carlito-Regular.ttf
/usr/share/fonts/truetype/crosextra/Carlito-Bold.ttf
/usr/share/fonts/truetype/crosextra/Carlito-Italic.ttf

在 Windows 或 macOS 上,請從 Google Fonts 下載 Carlito,並將路徑指向那些檔案。

請註冊所有三種變體。切勿退回使用 Helvetica:以下版面是針對 Calibri 風格的度量調校的。

排版規則(強制限制)

元素字型大小備註
封面標題Carlito-Bold20pt置中,位於黑色橫幅中
封面副標題Carlito-Bold16pt標題下方
章節標題Carlito-Bold8.5-9pt白字,黑底橫條
欄位標題Carlito-Bold7.5pt灰色,位於分隔線上方
內文 — 所有欄位Carlito / Carlito-Bold11pt名稱、時期、現有欄位統一使用
已收集明細行Carlito-Italic8.5pt灰色,位於已收集行下方
頁尾Carlito6pt頁碼 + 檢查表名稱
面額欄Carlito9pt靠右對齊,縮寫(5Y、10Y、1J)

關鍵:保持名稱、時期與現有欄位使用相同的字型大小 (11pt)。 混合大小在列印頁面上顯得不專業。

行版面

ROW_H = 16-18      # pts — 行之間寬敞的間距
SEC_H = 17          # 章節標題列高度
COL_H = 13          # 欄位標題高度
COLLECTED_EXTRA = 11 # 已收集行額外詳情行的高度
  • 在每行底部繪製一條細分隔線 (0.2pt, #DDDDDD)
  • 交替行底色:每個偶數行填滿 #EBEBEB
  • 已收集行:粗體文字 + 勾選記號在核取方塊中

欄位位置(從 LEFT_M 起算)

COL_CK = 0          # 核取方塊
COL_YR = 11         # 年份
COL_NM = 36         # 硬幣名稱(主要欄位)
# 右側欄位 — 向右推,避免與時期文字重疊
COL_ERA = 84*mm     # 時代標記 (B/P/N) 或面額
COL_NOW = 89*mm     # 目前狀態 / 次要資訊

關鍵教訓:像「300 BCE-1279」的字串在 11pt 下約 28mm 寬。時代標記與 NOW 欄位必須從 84mm 之後開始,以避免重疊。 這是經過多次反覆修正的成果。

灰階設計(強制)

專為灰階雷射印表機設計。絕不依賴顏色傳達含義。

視覺元素灰階處理方式
已收集行強調對角線條紋(非顏色填滿)
章節標題白字,純黑底橫條
交替行#EBEBEB 與白色交替
時代指示文字字母 (B/P/N),非有色圓點
已收集鑄造標記粗體 vs 一般粗細(非顏色)
核取方塊以線條繪製勾選記號,非 Unicode

條紋實作:

def hatch(c, x, y, w, h):
    c.saveState()
    p = c.beginPath(); p.rect(x, y, w, h)
    c.clipPath(p, stroke=0)
    c.setStrokeColor(HexColor("#CCCCCC"))
    c.setLineWidth(0.35)
    for i in range(-int(h), int(w+h), 5):
        c.line(x+i, y, x+i+h, y+h)
    c.restoreState()

勾選記號(非 X,非 Unicode):

c.setStrokeColor(BLK); c.setLineWidth(1.2)
cx = LEFT_M + COL_CK + 1; cy = ty - 1
c.line(cx+2, cy+4, cx+4, cy+1.5)
c.line(cx+4, cy+1.5, cx+8, cy+7.5)

頁面流程(連續)

切勿讓每個章節獨佔一頁。 章節應連續排列。小型章節(3-5 項)必須與前一章節的尾端排在同一頁上。

# 防止孤兒:章節標題至少需要標題 + 欄位標題 + 1 行的最小空間
if item_type == 'section_header':
    needed = h + COL_H + 2 + ROW_H + 4
    if y - needed < BOT_M:
        y = new_page(c)

封面頁面結構

  1. 黑色橫幅包含標題 (20pt) 與副標題 (16pt)
  2. 橫幅下方副標題行 (12pt, 灰色)
  3. 水平分隔線
  4. 統計方塊 (#EBEBEB 填滿):「總計: X 已有: Y 缺少: Z」(14pt 粗體)
  5. 覆蓋率百分比 (11pt, 灰色)
  6. 收藏家姓名 (14pt 粗體) + Numista 帳號 (11pt)
  7. 圖例章節(如適用)
  8. 系列摘要(含數量,靠右對齊)

請勿包含

  • 獨立的空白筆記頁(浪費紙張)
  • 依賴顏色的元素
  • Unicode 勾選記號或特殊字元(字型覆蓋問題)
  • 任何元素小於 7pt 的字型大小
  • 文件中任何地方超過 1 頁的空白空間

輸出

將 PDF 儲存到使用者可以開啟的位置(在 claude.ai 上:/mnt/user-data/outputs/ 並呼叫 present_files;在 Claude Code 中:工作資料夾)。在交付前,使用 pdf2image 呈現頁面進行視覺化品質檢查。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相關技能