梅花雀莊

何震邦的個人網站,通常寫電腦和橋牌相關的文章,未來可能會寫關於日本麻將的東西

2026

polish.club 的花色配色

我的叫牌系統書都是用 mdBook 寫的。最近幾週先拿 polish.club 當試驗場,在版面上做了幾個小改動,改好再推到其他幾本。改動都繞著同一件事:♠♥♦♣ 四個花色符號要在每個主題、每個位置都看得清楚。整份 style.css 只有七十幾行,改動也都是幾行的事,但效果值得記一下。

下面這個 demo 把 mdBook 的五種主題和側欄、表格搬了過來,用的是同一份 CSS。切換主題,勾選「改動前」就能比較。

Natural 1♥

1♥ -
1♠F, 4+♠
1NTNAT NF, 0–3♠, 0–3♥
2♣!(R), FG, 0–3♥, 0–3♠
2♦!TRF, CONST+ 3+♥
2♥PRE, 3+♥
2♠!PRE, 6+♠

紅色依主題調整

原本 ♥♦ 寫死 #d33,淺色底還行,深色底就顯得暗沉。現在用一個 --red 變數,依主題給值:

  • Light 用 #b22,比原本深一點,對白底的對比較好。
  • Coal、Navy、Ayu 三個深色主題用 #f66,深底要亮紅才跳得出來。
  • Rust 是淺褐底,用 #a21。但 Rust 的側欄是深色的,側欄另外給 #f77。

mdBook 的主題靠 JavaScript 切換,沒有 JavaScript 時會照系統偏好退回 Light 或 Coal。所以多一條 @media (prefers-color-scheme: dark) 配 html:not(.js),讓沒腳本的深色模式也拿到亮紅。

側欄的黑花色

♠♣ 原本 color: var(--fg),用的是內文的前景色。在 Rust 主題下,內文 --fg 是深色,側欄背景也是深色,側欄裡的 ♠♣ 就幾乎看不見。 Demo 切到 Rust 再勾「改動前」,「Polish 1♣」和「Natural 1♠」的花色就消失了。

第一版修法是在側欄把 --fg 覆寫成 --sidebar-fg。能看見了,但滑鼠移到連結上、或是目前章節的連結變色時,花色不跟著變,一行字兩種顏色。最後改成側欄的 ♠♣ 直接 color: inherit,跟著連結走;♥♦ 則在 :hover、.active 時把 --red 設成 --sidebar-active。這樣整行連結連花色一起變色,而且不用動 mdBook 自己的變數。

表格

瀏覽器預設把表頭置中,叫牌表格的表頭是「1♥ -」這類叫牌序列,置中反而和下面的叫品對不齊,改成靠左。

叫牌記法也順手統一:叫品之間留空格,對手的叫品加括號,pass 用 -,每一輪用 <br> 分開。有個 fmt.py 幫忙對齊 Markdown 表格,只動兩欄的叫牌表,其他表格留給手排。

網址

檔名原本有 COMP_1、CB_Gladiator、BTUVU 這種縮寫加底線的組合,現在拼成 Competition、CheckbackGladiator、BTUvsUnusual。各開叫下的兩個競叫頁面也合併成一頁。舊網址都在 book.toml 裡設了轉址。

姊妹系統書

在 polish.club 上試好的 style.css,接著推到 Blueberry Precision、Watermelon Dutch、Muscat Walsh 和橋牌入門。沒有共用的 theme 套件,就寫了個 sync-css.sh,把 style.css 的 commit 用 git format-patch 丟給姊妹 repo git apply。作者頁也補上各系統的 favicon 連結。

萬年曆與八字命盤

最近做了兩個跟日期有關的小工具:日常・萬年曆和八字命盤。 都是繁體中文網頁,打開就能用,不用安裝或註冊,手機也可以操作。

日常・萬年曆

想知道某一天是農曆幾月幾日,或是今年的農曆生日落在西曆哪一天,可以用這個 萬年曆查詢。支援西元 1801–2100 年,月曆上並列西曆與農曆, 點選日期可以看干支年、生肖、節氣和節慶;「查詢換算」也能從農曆反查西曆,包含閏月。

除了日期,還並列清朝/民國紀年與日本年號,方便對照不同的紀年方式。 其中日本 1873 年以前的年號是西曆推算,沒有還原日本舊曆的年界與改元日。

二十四節氣另外有全年一覽,採用日本國立天文台的資料,以 UTC+8 顯示到分鐘。 月曆也收錄台灣常見節日與部分世界節慶,不過節慶不等於放假,這裡沒有計算補班補假。 選好日期後,複製網址就可以分享同一天。

八字命盤

八字命盤則是輸入出生日期、時間與性別,就能排出年、月、日、時四柱, 以及十神、藏干、納音、十二長生、空亡等資料。下方有格局、胎元、命宮、身宮, 也列出起運時間與各步大運,展開大運可以看流年,年齡以虛歲表示。

另外放了依日主排列的十神對照表和五行生剋圖,方便一邊看命盤,一邊對照彼此的關係。 格局依《子平真詮》的月令取格方式判定,目前只處理正格。

子時有兩種設定可以切換:「23:00 起算隔日」與「早晚子時」,後者在晚子時不換日柱。 輸入內容與設定也會保存在網址裡,可以收藏或分享同一張命盤。

兩個工具都固定使用台灣標準時間 UTC+8,支援 1801–2100 年,不還原歷史夏令時間; 八字排盤也不校正真太陽時。萬年曆的節氣時刻取自天文台表,八字則使用 lunar-javascript 的演算法,出生時間若恰好在節氣交接附近,排盤結果可能與其他曆書不同。

農曆換算與八字排盤使用的套件是 lunar-javascript,計算都在瀏覽器裡完成。 兩個專案的原始碼也都以 MIT 授權公開:calendar、bazi。 歡迎試用!