Communitygithub.com

VesperaZephyr/agent-skills

用於高保真 LaTeX 數學書重排(re-typeset,非翻譯)的工程方法論與坑位庫,涵蓋四類原書的硬性紀律、交叉引用策略與驗收腳本。

agent-skills 是什麼?

這項技能提供了一套完整的工程方法論與坑位庫,專門用於將掃描版或 PDF 數學專著**高保真重排**為可編譯、可檢索且可跳轉的 LaTeX 原始碼。它涵蓋了四類主要的原書風格:① Springer GTM 類西文書(共享計數器、原生 TikZ);② 中文數學書(xeCJK + Fandol);③ 分章頁碼西文專著;④ 單卷連續頁碼、小節裸編號專著。技能的核心在於其嚴格的紀律(如行尾格式、建構次數、內容來源確認)以及對各類「坑」的詳盡處理,例如 OCR 雙層文字陷阱、編號公式計數器錯位、\(\pagestyle{empty}\) 頁首頁尾洩漏、biblatex 分類遺漏末條,以及中文書中 TikZ 曲線解析失敗和缺字問題。它還包含一套完整的交叉引用補全策略(七輪遞進)以及多個自動化審計腳本,用於驗證內部連結、連結顏色、PDF 文本層品質等。此技能適用於「重排」項目,不適用於純翻譯(mathtranslation)項目。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/VesperaZephyr/agent-skills/tree/HEAD/latex-book-retypeset

在你喜歡的 AI 中提問

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

說明文件

LaTeX 數學書重排(Re-typeset)工程技能

目標與範圍

把掃描版 / PDF 版數學專著高保真重排為可編譯、可檢索、可跳轉的 LaTeX 原始碼的工程方法論與坑位庫。 實戰來源:

  • 西文:Conway《A Course in Functional Analysis》GTM 96 全書重排(436 頁、11 章 + 3 附錄、 0 編譯錯誤 / 0 死鏈 / 1606 個內部跳轉)。

  • 中文:徐森林、薛春華《數學分析(第一冊)》全書重排(551 頁、6 章 + 前言 + 參考文獻、 40 個章節原始檔、23 幅原生 TikZ、0 錯誤 / 0 缺字元 / 0 未定義引用 / 0 Overfull / PDF 層 ?? 0)。

  • 分章頁碼西文:Serre《Abelian l-Adic Representations and Elliptic Curves》全書重排 (203 頁原書 → 129 頁,前言 + 4 章 + 兩套參考文獻 + 索引,分章頁碼 I-1/II-42/B-5/Index-3, 0 錯誤 / 0 未定義 / 0 重複 label,手工編號陳述環境 + biblatex sortkey 鎖定原書編號)。

  • 單卷連續頁碼西文:Samuel《Algebraic Theory of Numbers》全書重排(原書 110 頁正文 → 104 頁, 小節裸編號 Theorem 1/(1)、參考文獻 [1]–[9]、習題按章編號、索引 V.2 鏈接; 371 label / 846 內部鏈接目標 / 922 PDF Link 註釋 / 110 Q.E.D.,0 錯誤 / 0 死鏈 / 鏈接顏色實測 (0,0,178))。

  • 適用:原書重排(不翻譯)。三條路線:① Springer GTM 類單計數器版式(gtmitem 共享計數器, 編號 \thesection.\arabic{gtmitem});② 中文書自建 cls(xeCJK + Fandol,按章分檔案 + 生成器落盤); ③ 分章頁碼專著自建 cls(\chapcode + 重定義 \thepage,手工編號陳述環境); ④ 單卷連續頁碼、小節裸編號專著自建 cls(按關鍵詞分計數器 + 按節重啟、只鎖分部起點的 \folio)。 圖形按下文「普通數學插圖」分流:可編輯重繪用原生 TikZ;保真複用可保留原書向量 PDF。

  • 不適用:mathtranslation 類純翻譯項目(屬 mathtranslation 技能)。

何時使用

  • 用戶說「重排某書」「把 PDF 排成 LaTeX」「補交叉引用」「修 overfull」「公式編號錯位」「OCR 亂碼」。
  • 接手一個重排項目,需要先建立紀律紅線再動手。
  • 編譯出現 multiply defined / undefined references / 編號錯位 / 大量 overfull。

硬性紀律(紅線,動手前確認)

項要求
行尾CRLF,UTF-8 無 BOM(.tex/.cls/.py 全部)
建構xelatex -interaction=batchmode main.tex × 3(改 label 後清 aux × 4)
品質紅線0 編譯錯誤、0 未定義引用、0 缺字元、新增章節 0 overfull
內容來源以原書 PDF 圖像為準,OCR 僅作檢索索引
改內容只改生成器(make_chNN_secM.py)→ assemble;絕不直接編輯 chapters/*.tex
編號先按原書選路線:GTM 用 gtmitem 共享計數器;手工編號專著或試卷可用原始顯示號 + 隱藏錨點計數器。不得為連續性擅改原號
公式未編號行間公式用裸 \[\] / align*,或 equation\notag;嚴禁給它們編號
圖形重繪優先原生 TikZ/PGFPlots;原書有可靠向量圖時可直接保留向量 PDF。禁止把向量圖先轉 PNG 再聲稱無損;原書本身的點陣圖須記錄原始限制

原書頁碼映射

物理頁 = 書頁 + offset(GTM96 offset = 15)。先量出偏移,後續所有「回原書核對」都按物理頁定位。

普通數學插圖:保真、可讀與逐圖驗收

本節適用於曲線、曲面、向量場、座標網格、定向/邊界、分面幾何圖等; 交換圖繼續執行下一節的逐邊審計。使用兩技能共用的 插圖修復流程,不要機械套用某一本書的裁框或縮放比例。

先獨立盤點原書與實際建構鏈中的圖,再建逐圖檯帳,記錄物理頁/裁框、圖號、 所有子圖、標籤、箭頭/定向、源資產、最終 PDF 頁與驗證證據。相同數量或相同檔名 不能排除「錯圖替代了正確圖」;核對相鄰圖,尤其同頁多圖及左右側排圖註。

優先保留原書可靠的向量內容;需中文化、統一字型或修復幾何時用原生 TikZ/PGFPlots 重繪。重繪前列出可見數學事實:座標/曲線關係、向量端點、水平集條數與數值、 定向、邊界符號、遮擋和投影。不得為美觀改變這些事實。複雜曲面與場圖不應退化成 含義相近的示意圖。重新排布子圖須保留閱讀順序、比例意義與連接關係。

400 DPI 渲染只是點陣圖;真正向量複用須保留 PDF 路徑/字形/透明度,並複查輸出。 繪圖包給出的路徑包圍框可能含曲線控制點或受內部裁切約束,既不能盲目取聯集, 也不能把它與裁框相交直接當成截斷證據。自動裁圖只生成候選;必須目視核對 完整原頁、候選圖、最終書頁。保留細箭頭、遠處標籤、子圖編號與適當安全邊。

圖幅由最終字型大小與頁面空間決定,不設全書統一寬度下限/上限;寬度使用局部 \linewidth,保持縱橫比。密集分圖可放大或重排,不能靠裁掉邊緣/標籤來縮小。 全書交付須逐圖有最終頁對應關係;編譯通過、256 個圖號對應 256 個檔案、 像素相似度高,都分別不能代替內容、覆蓋率和目視驗收。

交換圖與箭頭保真審校

本節專指由節點和態射組成的交換圖、正合列網格、拉回/推出圖等;普通幾何插圖、曲線圖和公式矩陣仍按各自規則處理。繪製或審校時使用 tikzcd,不要預設用 array 拼箭頭圖。發現舊稿時不能只搜 tikzcd:運行配套審計技能的 scripts/inventory_diagrams.py,覆蓋所有實際參與建構的原始檔、輸入檔案、腳註/附錄和鉅集定義;候選逐項分類為交換圖、公式/表格、待展開鉅集或未決。array/aligned/matrix/CD/xymatrix 中的箭頭圖同樣納入,普通矩陣不因含矩陣環境而機械遷移。

逐圖分別從原書 PDF 與重排稿建立節點網格和邊清單,再逐邊比較:起點、終點、箭頭頭端、單射鉤端、雙頭/等號/無頭線、實虛線、標籤及側別、空節點與零行列。r/l/u/d 是幾何位移,不能代替對映射方向的判斷;檢查顯式 from/to、反向箭頭選項、命名節點及實際展開後的鉅集。單射必須在最終 PDF 中確實顯示鉤,滿射顯示雙頭。hook' 只換鉤所在側,不會反轉箭頭;標籤中的 \hookrightarrow 也不會改變邊樣式。檢查局部選項與 \tikzcdset、every arrow/.style、自訂鉅集的疊加順序,後續 rightarrow 等設置可能抹掉前面的 hook。編譯成功及原始碼裡出現 hook 都不能代替端部核對。

以原書出版版圖像確定節點和箭頭的可見事實;原始 TeX、OCR、數學語義只作輔助證據。分別映射原書和重排稿物理頁,不用定理/證明的頁碼直接推定圖所在頁。先看整圖結構,再放大檢查鉤、雙頭、箭頭端點及裁切;同時檢查孤立小樣和最終書頁。

若無法直接查看圖像,先確認本地圖片路徑和查看工具,再重試一次;路徑/工具錯誤不等同於模型沒有視覺能力。仍無法目視時,按配套技能的無視覺核驗流程:從原始碼按頂層 &/\\ 展開網格(保留空節點並處理巢狀鉅集),核對邊方向和生效樣式;在已確認的 PDF 裁剪區域檢查文字跨度與向量路徑/字形,區分原始碼拓樸、PDF 幾何和直接目視三類證據。PDF 沒提取到箭頭頭筆畫不能證明原圖沒有箭頭。保留無法確認的具體圖、邊、行號、原書頁/裁剪位置;這些細節必須標為未決,不能用編譯通過或 OCR 的 → 代替視覺驗收。

關鍵坑位速查

完整表見 references/pitfalls.md。最高頻:

  • PDF 雙層文本陷阱:原書內嵌 HiddenHorzOCR 隱藏文字層,get_text() 混排吐亂碼 (Jf=ℋ、&i(=ℬ)。公式必須 get_pixmap 渲染目視確認。
  • 編號公式共享計數器:編號行間公式用 gtmeq(推進計數器);左側空白的號用 equation\notag (不推進)。裸 equation 會掉進 equation 計數器渲染成章號。
  • Claim 按章編號:第一/二章 claim* 無號,第三/四/九章 claim 帶號。
  • 不要憑語義加環境標籤:原書大量裸段落,誤包 remark 會吃掉編號、頂高後續全部條目。
  • 交叉引用 A–E(詳見 references/crossref.md):\item 前 \gtmtarget 錯位、習題塊兩種寫法、 正則 \\S 誤傷、批量補空格二次置換 + 陳舊 .aux 假錯誤、補零章號 / 空 \ref{}。
  • \pagestyle{empty} 洩漏(全書頁首頁尾遺失):扉頁檔案設 \pagestyle{empty} 卻從不恢復, 致全書所有續頁無頁首無頁碼。\thispagestyle 只影響首頁,須在章/前置/文獻/索引各頭鉅集裡 顯式 \pagestyle{fancy} 恢復(詳見下文「分章頁碼專著專項」)。

分章頁碼專著專項(\chapcode 版式)

Serre 類原書每章頁碼獨立起算且帶章前綴(I-1…I-30、II-1…II-42、B-1…B-8、Index-1…Index-3), 自建 cls 比 GTM 共享計數器路線多一整類坑,完整版見 references/chapcode-retypeset.md。最高頻五條:

症狀正解
全書續頁無頁首無頁碼front/titlepages.tex 的 \pagestyle{empty} 洩漏;在每個頭鉅集(\chapterhead/\fmhead/bib/index)內顯式 \pagestyle{...} 恢復,不能只靠 \thispagestyle(只管首頁)
頁碼格式被 \pagenumbering 重置kernel \pagenumbering{roman} 重定義 \thepage;須把「列印格式」與「計數」分離,每次 \pagenumbering 後重建 \thepage/\theHpage(後者 = 列印頁碼,使錨點與頁碼一致)
前置 folio 反覆跳頁 / 列印兩次\fmhead[folio#] 只在目標 folio > 當前值時才 bump(只進不退),避免向前跳頁
陳述編號與原書不符原書手工編號(有號/無號混排、常重新起數):用「手工編號參數 + 隱藏錨點計數器」,\begin{stmt}{LEMMA}{3},無號則第二參空
biblatex 編號打亂原書順序自訂排序模板 + 每條 sortkey 欄位,把 refnumber 鎖死原書 [1]–[88]
分 category 列印恰好丟每條 category 的末條\addtocategory 的收尾 } 另起一行 → TeX 把換行讀成空格,末鍵變 xxx␠,biblatex 記進 .aux 後匹配不到條目。修:末鍵行尾加 % 吞換行。先查 .aux 的 \abx@aux@category{...} 有無尾空格(defernumbers=true 修不了)
目錄頁碼是死鏈hyperref 部分頁不生成 page.<folio> 目標;改用 \hyperref[<條目自己的 label>](章 chap:I/節 sec:I.2/文獻 bib:main),\@ifundefined{r@…} 兜底回退 \hyperlink{page.<folio>}

分章頁碼書的頁首四類約定(照原書逐類核對,references/chapcode-retypeset.md 有完整表): 正文各章(偶頁書名/奇頁章短題)、前置部分(節名取代書名)、正/補充參考文獻、索引(兩側僅外側裸頁碼)。

小節裸編號專著專項(Samuel 類)

單卷、連續阿拉伯頁碼、陳述按關鍵詞分計數器並按節重啟印裸號、公式按節重啟印 (1)、 參考文獻 [n]、習題按章編號的書,完整版見 references/samuel-style-retypeset.md。最高頻九條:

症狀正解
有名字的陳述後編號錯位(Proposition 3 印成 2)statement 包裝器必須無條件 \refstepcounter,可選參數只負責列印名字
逐頁對不上掃描頁不要逐頁強排;只在章/Supplement/Exercises/Bib/Index 起點調 \folio{n}(只進不退)
頁首要顯示本節在頁內的節號區間\pagefirstsec + \afterpage 記上一頁第一節;verso folio|章名|§§ c.a–c.b,recto 反向
外部文獻章號被誤鏈([1], Algèbre, Chapter VI、Chapter V of [9])按 [n] 與 Chapter 的鄰近、of [n]、\emph{Algèbre} 三條規則排除,先保護 \divhead{Chapter X}
參考文獻 [n] 點不動\item[\textbf{[n]}] \phantomsection\label{bib:n};正文 \hyperref[bib:n]{[n]}(顯示文字鎖死)
習題引用鏈不上\exitem 內 \refstepcounter{exno} + \label{exer:章.n};每章 \exchap{X} 重置;Review Problems 用 R1/R2/R3 防與末章重號
列表條目 (1)(2) 無錨點\item\label{prop:c.s.i};正文仍寫 \hyperref[...]{(1)},因 enumerate 的 \ref 不帶括號
裸引用審計滿屏假陽性必須整段屏蔽 \hyperref[...]{...}(花括號配平);\[...\] 屏蔽要 re.S
.aux 報 label 不存在 / 顏色原始碼與 PDF 不符\newlabel 用配平解析(條目值形如 {{(1)}});顏色用 300 dpi 取樣 Link 矩形斷言 (0,0,178)

建構:cls 用了 fontspec 時 pdflatex 必失敗(fontspec requires XeTeX or LuaTeX), 用 lualatex/xelatex;latexmk 殘留 fdb 仍可能拉 pdflatex,必要時直接呼叫。

中文書(xeCJK)專項

中文數學書重排有一整類西文書遇不到的坑,完整版見 references/cjk-retypeset.md。最高頻五條:

症狀正解
TikZ \draw/\fill/\path[domain=…] plot (…) 解析失敗改 plot[smooth] coordinates{…},座標由 scripts/gen_tikz_curve.py 在 Python 裡算好注入
Missing character: … (U+6685) in font FandolSongFandol 全字族缺生僻字;cls 加 \newCJKfontfamily\zmbhan{SimSun} 回退族,正文 祖{\zmbhan 暅}
純 CJK 行 2–3pt Overfull,\hspace{0pt plus 3pt} 無效、plus 1fil 出巨隙\tracingparagraphs 先診斷;正解是局部 \begingroup\xeCJKsetup{CJKglue={\hskip 0pt plus 1pt}}…\endgroup 均勻鬆排
密集刻度標籤重疊(2n / 2n+1 / 2n+2)照原書用「錯落下沉」或「斜引線」兩種佈局,勿硬擠一行
全書出現 \extref{6.3.2} 純文本引用目標章節落盤後回填為 定理~\ref{thm:6.3.2},且只改生成器源頭再重新落盤

中文書另有三條易誤判為缺陷的「正常現象」: xelatex fatal: memory exhausted(瞬時記憶體壓力,重跑即過)、 正文末尾空白頁(\makebibliography 內 \cleardoublepage,與原書奇偶一致即預期版式)、 底料 OCR 跨頁截斷漏題(須對照影印頁逐題點數)。

交叉引用補全(七輪遞進)

正文硬編碼引用(Theorem X.Y / (2.3) / Exercise N / Section N)→ 超連結 \ref/\eqref 的完整策略, 見 references/crossref.md:先規範化 label 命名(kind:c.s.i)、補 sec:/exercise: label, 再跨章 → 章內括號 → 章內裸編號逐輪轉換,每輪編譯驗證。

單卷裸編號書另有三類 crossref.md 未覆蓋的物件:參考文獻 [n](錨在條目行、正文用 \hyperref[bib:n]{[n]})、按章習題號(exer:c.n,Review Problems 另用 R 前綴)、 陳述內列表條目 (1)(2)(\item\label{...})。另有兩類必須保留純文本:外部著作自身的 Chapter 號、原書筆誤(如 “§4, Proposition 2” 而該節只有 Proposition 1——保留印刷字, 鏈接指向真實目標並記入 STATE.md)。詳見 references/samuel-style-retypeset.md。

配套審計技能(已安裝,按需呼叫)

  • latex-eq-numbering-audit — 編號公式與原書逐項核對
  • latex-display-layout-audit — 行間公式版式(over-wrap / 假對齊)
  • latex-footnote-fidelity-audit — 腳註是否全部落地
  • latex-ocr-math-defect-audit — OCR 靜默毀壞的數學
  • 交換圖審計技能 — 舊式圖候選盤點、逐邊方向/鉤/雙頭核驗、樣式覆蓋檢查與無視覺證據流程
  • latex-bookmark-anchor-audit — PDF 書籤錨點
  • mathtranslation — xelatex/biber 編譯與視覺驗證(references/build-verify.md)

驗收門檻

見 references/verification.md:清 aux 後 4 遍 exit=0;0 錯誤 / 0 重複 / 0 未定義 / 0 死鏈; 習題編號逐節連續;CRLF/BOM 合規;原書自身編號不一致處保留純文本並審計數量。

中文書額外三項(用 scripts/verify_cjk_book.py main.pdf --log main.log --bib-page N 一次跑完): PDF 文本層 ?? 0 處、Missing character 0 處、回填後的引用在 PDF 中確實解析為編號(而非原文)。

分章頁碼書額外一項:用 scripts/dump_page_heads.py main.pdf 逐頁 dump 頂/底文字帶, 斷言每一續頁都有頁首與頁碼、每一首頁無頁首而底部居中裸頁碼,且頁碼格式(I-2 / B-5 / Index-3 / 羅馬數字)正確。 目錄頁碼超連結另用 --check-toc-links 斷言 page.* 命名目標全部解析。

單卷裸編號書額外兩項:scripts/audit_internal_links.py 斷言全部 \ref/\eqref/\pageref/\hyperref 目標 0 缺失(不要只查 \ref);scripts/check_link_color.py main.pdf --expect 0,0,178 用像素取樣 斷言鏈接顏色(原始碼裡的 colorlinks 不算證據)。裸引用掃描用 scripts/audit_bare_xrefs.py, 殘留項必須逐條判定是「列表標號/外部文獻」而不是引用。

關鍵腳本

  • scripts/audit_text_refs.py:掃描 .tex 列出尚未 \ref 化的硬編碼引用(開工清單,不改檔案)。
  • scripts/rebuild_exercise_labels.py:安全重建 exercise:c.s.i(預設 dry-run,正確處理同行 \gtmtarget 與手工習題塊)。
  • scripts/gen_tikz_curve.py:xeCJK cls 下 plot[domain=…] 不可用,用它把參數 / 笛卡爾 / 極座標 曲線算成 plot[smooth] coordinates{…} 字面量(--wrap 直接輸出完整 \draw)。
  • scripts/verify_cjk_book.py:全書終檢器(?? 殘留 / 書籤條數 / 回填引用落點 / 參考文獻條目 / 缺字元),任一硬門檻不過即 exit=1;交付前必跑。
  • scripts/dump_page_heads.py:分章頁碼書頁首/頁碼終檢器。逐頁 dump 頂/底文字帶,報告每頁的 running head 與 folio;--check-toc-links 另斷言目錄 page.* 命名目標全部解析。
  • scripts/audit_internal_links.py:把 \ref/\eqref/\pageref/\hyperref[...] 全部對 main.aux 核驗(\newlabel 花括號配平;自動跳過 work/bak/render/build 備份目錄),有缺失即 exit=1。
  • scripts/audit_bare_xrefs.py:先整段屏蔽已鏈接文本、數學、\item[...]/\pdfbookmark[...] 等可選參數,再列舉裸 Theorem 3 / (4) / [3] / exercise 8,輸出 STMT/PAREN/FORM/BIB/EXERC 計數。
  • scripts/check_link_color.py:渲染 PDF、對每個 Link 矩形做非白像素直方圖,斷言鏈接文字顏色; --expect 0,0,178 對應 blue!70!black,防 \hypersetup 後寫覆蓋。

Resources

  • references/discipline.md — 文件類 / 計數器速查、頁碼映射、文獻區排版參數
  • references/pitfalls.md — 西文書全部坑位(OCR / 編號公式 / Claim / 環境標籤 / overfull / 交叉引用 A–E)
  • references/cjk-retypeset.md — 中文書專項(TikZ 曲線 / 缺字回退 / CJKglue 鬆排 / 標籤重疊 / extref 回填 / memory exhausted / biber 書目 / 單一落盤出口)
  • references/chapcode-retypeset.md — 分章頁碼專著專項(\chapcode 頁碼機制 / \pagestyle{empty} 洩漏 / 四類頁首約定 / 手工編號陳述 / biblatex sortkey 鎖定 / 目錄頁碼超連結)
  • references/samuel-style-retypeset.md — 單卷裸編號專著專項(按關鍵詞/按節重啟編號、\folio 只鎖分部起點、頁首節號區間、外部文獻章號排除、bib:n 與 exer: 錨點、列表條目引用、.aux 配平解析、鏈接顏色像素驗收)
  • references/crossref.md — 交叉引用七輪補全策略 + 習題重建演算法 + 保留純文字清單
  • references/verification.md — 建構命令、驗收清單、CRLF/BOM 檢查
  • scripts/audit_text_refs.py — 硬編碼引用掃描器
  • scripts/rebuild_exercise_labels.py — 習題 label 安全重建器
  • scripts/gen_tikz_curve.py — 參數/笛卡爾/極座標曲線 → plot[smooth] coordinates{…} 片段
  • scripts/verify_cjk_book.py — 全書終檢(PDF 層 ?? / 書籤 / 回填引用落點 / 參考文獻條目 / 缺字元)
  • scripts/dump_page_heads.py — 分章頁碼書頁首/頁碼 + 目錄頁碼超連結終檢器
  • scripts/audit_internal_links.py — 全部內部鏈接目標(\ref/\eqref/\pageref/\hyperref)對 aux 核驗
  • scripts/audit_bare_xrefs.py — 屏蔽已鏈接文本後的裸引用列舉(STMT/PAREN/FORM/BIB/EXERC)
  • scripts/check_link_color.py — PDF Link 矩形像素取樣,斷言鏈接顏色(預設 0,0,178)

中文回憶版試卷合集

多校多年試卷、各卷獨立題號與分值、重排同時審題時,讀取 回憶版試卷專項。必須分開識別錯誤與原題錯誤,檢查被 OCR 丟棄的頁首頁尾是否藏著題號;未完成逐題證明時不將首輪初篩寫作全題已證正確。

有界並行與頁級 OCR 來源

全書任務需要縮小單個代理上下文時,參閱有界子代理、OCR頁級來源與索引映射。包含檔案所有權、代理中斷交接、修訂表查重、數學字型與陳述範圍、PDF 雜湊綁定驗收,以及 Ahlfors 底稿中跨頁段落搬移、分卷局部頁號重啟、一塊多圖、索引語義分組終審、疑點定案、腳註跨頁複核和編輯性校勘留痕的已驗證方法。

相關技能