夏國強
唐人詩歌中節令繁多,詩中所描繪的禮制風俗有如一幅幅精美畫卷,組成唐代士人鮮活的生活場景。有“詩史”之稱的杜甫自然不會缺乏此類創作,林弘曾對杜詩中的節令習俗加以考證,其中的重要節日在經籍典制中都有驗證。但對《太歲日》一詩題名中的“太歲日”為何節日未有詳論,而該詩中所記錄的“閶闔開黃道,衣冠拜紫宸”宏大場面,又顯得頗為隆重,詳細考之,應與“太歲紀年”的歷史變遷及文化影響有關,故有說明之必要。
自宋代開始,杜詩研究者已在嘗試解決這一問題。趙子櫟《杜工部草堂詩年譜》把本詩的寫作時間定在大歷三年戊申正月旦,就是把“太歲日”與“元日”看作同日。其后,趙次公在《杜詩先后解》中明確說:“正月一日謂之太歲日,蓋當年太歲之始日也。”蒲積中《古今歲時雜詠》則把“元日、歲日、太歲日、正旦、元正”同列在“元日”下。這樣看來,北宋末至南宋初,有一種觀點認為“太歲日”就是“元日”,其理由如趙次公注文所說,是從太歲紀年的角度,把當年元日別稱為太歲年始日,進而稱之為“太歲日”。不過,宋人對“太歲日”的認識并不一致。
南宋黃鶴《補注杜詩》中就有另一種看法:“大歷三年太歲戊申,今題云太歲日,是戊申日。按:《舊史》,大歷三年春正月丙午朔。則戊申乃初三日。或以‘巫山坐復春’之句為在二年,然二年太歲丁未而正月朔為壬子,則丁未日乃在二月下旬矣。此詩云‘閶闔開黃道、衣冠拜紫宸’,正以新元而言,當是三年正月初三日作。”黃鶴認為干支紀年與太歲紀年一致,把正月之中日干支與年干支相合的那一天定為“太歲日”,再依據詩句中所描述的場景,推算本詩當寫在新元正月,并且結合前文“太歲日”的推算方法,駁斥大歷二年“復春”之說。黃注論證嚴謹,為后來注家沿用,引為確詁。降至明代,王嗣奭對黃注提出質疑:“注以初三日戊申為太歲日,然衣冠拜紫宸乃元日詩也,須再訂。”但沒有重新討論。清人錢謙益對此問題也頗有疑慮,他雖然沒有直接以“太歲日”為元日,卻把《太歲日》列在卷十七“大歷三年正月所作近體詩五十五首”篇首,在《元日示宗武》之前,似持“元日”說。其后,仇兆鰲注杜總集前人論說,有關“太歲日”的解釋仍是蹈襲黃注。謝思煒校注杜詩引用趙次公、黃鶴兩說,以“太歲日”干支應與太歲所在相同,但什么是太歲所在,仍有待研究。
傳世文獻所記錄的太歲是一個與歲星(木星)相對應的天體。《史記·天官書》稱“太歲”為“歲陰”:“攝提格歲,歲陰左行在寅,歲星右轉居丑。”司馬貞索隱云:“太歲在寅,歲星正月晨出東方。”如何確定太歲所在,鄭玄注《周禮·保章氏》時有所提及:“歲謂太歲,歲星與日同次之月,斗所建之辰也。歲星為陽,右行于天,太歲為陰,左行與地,十二歲而小周。”先民把天空分為十二個星區,當歲星和太陽在同一星區時,黃昏時以南天中星的位置為午位,觀測斗柄所指來確定太歲位置,也就是所建之辰。
現代天文學知識告訴我們,北斗星是恒顯區中的恒星,它的斗柄指向二十八宿中的角、亢宿或是根據北斗九星斗柄的位置而指向大火宿。隨著地球的繞日公轉,每月北斗斗柄與角、亢宿聯線的相對方位都會往西移動一辰。歲星運行則和地球繞日公轉方向一致,向東右行,每年大致移動一個星區。賈公彥疏《周禮·馮相氏》云:“此太歲在地,與天上歲星相應而行。歲星為陽,右行于天,一歲移一辰。”太歲的位置依據歲星與日同次月的北斗斗柄方向來確定,并不與天空中的星區一一對應,否則太歲將永遠處在角亢宿所在的壽星區,這一參照也就失去了意義。為此,賈公彥繼續解釋說:“以歲星為陽,人之所見,大(太)歲為陰,人所不睹,既歲星與大歲,雖右行左行不同,要行度不異。”
太歲的運行與太陽視運動相關,方向相反,因此也稱之為“太陰”。其設立的目的,是為了協調歲星紀年系統。張聞玉論及歲星紀年法時提到,古天文學家為了協調回歸年與朔望月之間的關系,試圖擴大回歸年的周期來抵消一回歸年與十二個朔望月之間的日數差距,約十二年繞日一周的木星無疑是一個較好的選擇,觀測者把黃道上的二十八宿按照天球度數劃分為十二個星區,用以記錄木星的運行軌跡,形成了歲星紀年法。但是,木星繞日一周的實際時間是11.8622 年,隨著周期的推移,就會出現偏差。而北斗斗柄的相對運動是地球的公轉所造成,與太陽黃道視運動相一致,在閏月的調節之下,更為穩定。
木星在以二十八宿為底盤的天球上運動,每年走一個星區;從星紀算起的十二星區,每月早晨都會在東方地平線、太陽出現之前依次出現。木星每年也就和其所在星區一起出現在早晨的東方天空中,這就是“歲星與日同次之月”。先民在木星所處星區東方晨現的月份,觀測黃昏時北斗斗柄的相對位置,在此位置上設定出一個與木星運行方向相反的太歲天體。當木星運行過快而超次,喪失天道穩定的象征意義,就用太歲來彌補。兩者,一個和太陽同出,是在天;一個和月亮同升,是在地。就是鄭玄注文所說“歲星為陽,右行于天,太歲為陰,左行與地,十二歲而小周”。陰陽調和,維持天道的正常運行。這種協調情況,在《漢書·天文志》有所反映:“太歲在寅曰攝提格。歲星正月晨出東方,《石氏》曰名監德,在斗、牽牛。失次,杓,早水,晚旱。《甘氏》在建星、婺女。《太初歷》在營室、東壁。”在不同的觀測時期,歲星運行的位置已經發生了偏移,以之紀年難以為繼,但通過與之相對的太歲,仍保持了持續紀年的功能。
木星雖然不能完整契合十二年的周期,但相去不遠。古天文學家仍然希望可以通過數字調整來彌補這一差距,這就是“歲星超辰法”,其方法記載在《漢書·律歷志》“歲術”中:“推歲所在,置上元以來,外所求年,盈歲數,除去之,不盈者以百四十五乘之,以百四十四為法,如法得一,名曰積次,不盈者名曰次余。積次盈十二,除去之,不盈者名曰定次。數從星紀起,算盡之外,則所在次也。”歲星超辰,而用于紀年的太歲不可與之同超,但“歲術”中卻附有與歲星同步的“太歲日”計算法:“欲知太歲,以六十除積次,余不盈者,數從丙子起,算盡之外,則太歲日也。”清代學者李銳注本條云:“太歲日者,如太初元年太歲在丙子,則其年丙子日為太歲日。”接著考訂說自建武二十六年后,太歲一歲一名,不用超辰之法。賈公彥也提到東漢太歲已無“跳辰之義”。馬王堆帛書《刑德》“大游甲子表”就展現了六十干支為序的太陰紀年法,如將太歲用作紀年,自然不能隨歲星超辰,同時也就割裂了太歲與歲星的聯系,喪失了其存在的意義。而太歲日的提出,一方面重新構建了歲星與太歲的聯系,另一方面,從“日”的角度協調了太歲之陰與歲星之陽之間的關聯。藉此可以協調漢代設定歷法上元與實際天象的關系:
《漢書·律歷志上》描述太初元年的天象說:“至于元封七年,復得閼逢攝提格之歲,中冬十一月甲子朔旦冬至,日月在建星,太歲在子,已得太初本星度新正。”元封七年的十一月,日月合璧在星紀次的起點,歲星也在星紀次,可以用來設定歷元起始。正月后改元封七年為太初元年,本年干支為丁丑。依據太歲日的算法,元年年數為一,不算所求年,數為〇,算外加一,從丙子數起,太歲日在丙子,與太歲紀年的丁丑并不吻合。朱文鑫《歷法通志》解釋說“超辰紀年法為丙子,干支紀年法為丁丑”,不超辰的太歲用于紀年,也就是干支紀年;而超辰的太歲日承擔與歲星相應的任務,藉此確定歲星的位置,使太歲與歲星仍能保持相對一致。隨著太歲紀年名目的逐漸消失,太歲日也失去了實際功用,更多體現了“太歲”的陰面象征意義。但是太歲日的算法仍然保留至唐宋時期。杜甫的《太歲日》詩為此提供了很好的證明。
《太歲日》的寫作時間在大歷元年到三年居夔州期間。黃鶴注文中提到有以詩中“巫山坐復春”,定詩作寫在大歷二年,頗有道理。“坐”是留下來的意思,本句指“在巫山已經留了兩個春天了”。同樣作于大歷二年春的《赤甲》有句云:“卜居赤甲遷居新,兩見巫山楚水春。”與《太歲日》“楚岸行將老,巫山坐復春”正相契合。大歷二年是公元767 年,太初元年是公元前104 年。不算所求年,就是104加上766,一共是870年,不足歲星歲數1728,直接乘以145,再除以144,得到的整數是876,除以60,得到的余數是36,從丙子往后數36位干支,是辛亥,算外加一,該年的太歲日在壬子。檢核張培瑜《三千五百年歷日天象》,大歷二年是丁未年,正月一日也是壬子日。太歲日與正旦同日,這樣我們就很容易理解趙次公、蒲積中為什么說元日是太歲日。也就解決了王嗣奭對大歷三年戊申日為正月初三,詩中卻有“閶闔開黃道,衣冠拜紫宸”元日朝賀情景的困惑。
以“太歲日”入題的詩詞,還存有宋人馮取洽的一首《西江月·太歲日作》,起首寫到:“老子齊頭六十,新年第一今朝。”“齊頭”的意思是正滿,可以推知這首詞是詞人整六十歲太歲日所寫。馮取洽的另一首詞《賀新郎·又用前韻自壽》有句云:“便戊申重見,何須賞。”顯然詞人一生歷經兩個戊申年,填詞時至少六十一歲。馮取洽《雙溪詞》中多次提到其友黃升黃玉林,胡德方為黃升所編《唐宋諸賢絕妙詞選》作序時間為“淳祐己酉”(淳祐九年),馮氏所說的戊申年,應該是南宋淳祐八年,公元1248年。前面提到的《西江月》是詞人六十歲所作,也就是淳祐七年丁未,公元1247 年。本年太歲日算法:用104加上1246,得到1350年,小于歲星歲數1728年,直接乘以145,除以144,取整1359。除去60 的倍數1320,余數是39。從丙子數起,第三十九位干支是甲寅,算外加一,太歲日在乙卯。淳祐七年的元日干支也是乙卯,與詞作中“新年第一今朝”相合。
杜甫與馮取洽的作品中,“太歲日”正好都是元日,宋人也有以“太歲日”為元日的觀點。那么唐宋時期日常生活中還用漢代算法來推算“太歲日”嗎?據《舊唐書》卷二〇〇上《史思明傳》記載:“(史思明)與安祿山同鄉里,先祿山一日生,思明除日生,祿山歲日生。”可見唐時元日可稱為“歲日”,至于是否是“太歲日”,還要進一步討論。
除杜詩外,我們在敦煌文書中,也找到了太歲日的一些痕跡。P.2049文卷背面記錄了凈土寺在唐莊宗同光二年(924)、天成五年(930)的算會牒。其中明確寫下了“太歲日解齋”的條目。由于二月八日為佛誕節,該賬目中從本年二月記至次年二月八日前。童丕排列了文卷中記錄節日的順序,發現“太歲日”排在賬簿末尾,是公元925、931年的節日,大概是在前年十二月之后,新年正月十五日燃燈節之前。925年是乙酉年,元日干支甲午,如果太歲日如黃鶴所說,取乙酉日,則在二月二十二日;931 年是辛卯年,元日干支庚申,太歲日如取辛卯日,則在二月三日。足見晚唐并沒有把年干支作為太歲日干支。
按照《漢書·律歷志》“太歲日”的算法,925年太歲日在辛卯(二月二十八),931 年太歲日在丁酉(二月九日)。這樣也不能解釋“太歲日”的排列順序。而在P.2032 晉天福四年(939)凈土寺食物等品入破歷中出現了“歲日解齋”,同頁記錄的是十二月及正月的賬目,賬簿中的“歲日”應是“太歲日”的簡稱,凈土寺賬簿中的“太歲日”實際就是元日。太歲紀年與干支紀年不區分后,每年的初一就可以看成是太歲年的開始之日,唐詩中以“歲日”為題寫元日不在少數,“太歲日”也就容易和“歲日”混為一談。這樣我們就能夠理解趙次公注解:“正月一日謂之太歲日,蓋當年太歲之始日也”的來源。
前文已經提到測算太歲所在的天文學依據是歲星和太陽在同一星次,而歷元的起始又需要行星與日月同時回到某一原點,因此年干支與日干支的相合就有著特殊的意義,這也是“太歲日”不同于“元日”的重要特點,構成了其后太歲日與年干支相同的文化理據。黃鶴的注文表明,自南宋以后,“太歲日”的太歲所在已經演變成與年干支保持一致,習用至今。如日人山梨稻川《太歲日八韻》詩題注“此歲人日庚申是為太歲日”,即沿用此法。山梨稻川生于公元1771 年,卒于1826 年,這一期間的嘉慶五年(1800)是庚申年,元日干支甲寅,第七日人日干支為庚申,與黃注“太歲日”確定方法一致。而《瑞安市志》“祭太歲”條則明確提到:“每年正、二月內視日干支與太歲同者為太歲日。”
敦煌文書中表明,晚唐民間已不使用《漢書·律歷志》中“太歲日”算法,但杜甫與馮取洽詩詞題目又向我們表明了這種算法的影響依然存在。從唐代的天文觀測水平來看,不但不會再延續太歲超辰之說,即便是“歲星超辰”之法也早已作了大幅度的修正。《新唐書》卷二七《歷志》下“大衍歷五星議”有云:“歲星自商、周迄春秋之季,率百二十余年而超一次。戰國后其行寖急,至漢尚微差。及哀、平間,余勢乃盡,更八十四年而超一次,因以為常。此其與余星異也。”根據當時的實測,歲星已經從一百二十多年超一次變為八十四年超一次。有趣的是,唐人雖然在科學數據上已做調整,卻并未在思想上否定漢代以來的歲星認識,而且以歲星運行速度快慢不一為理由,試圖延續自戰國秦漢以來的歲星太歲對應方式。朱文鑫以“狃于三統之說,而曲為之解”批評了唐人曲解,而曲解必然有其文化心理原因,這一點王勝利已在《星歲紀年管見》一文中有所揭示,他認為歲星紀年創立的原因是星占,歲星的運行雖然不是以十二整年為一周,但歲星總會在第十三年正月回到與太陽的匯合點,仍然具有與十二辰對應的實測依據。因此,對歲星運行的實測并不影響用歲星太歲這一組概念進行禍福占卜,唐人《開元占經》卷二三仍使用甘氏歲星紀年法就是其表現之一。“太歲日”算法在唐宋時期得以留存,必然也與這一觀念有關。
杜甫在西川蜀州寫下的《唐興縣客館記》末尾寫到:“是日辛丑歲秋分大余二,小余二千一百八十八。”謝思煒以《大衍歷》推算秋分日、時正合。一則可以看出杜甫熟知歷算;二則當時《至德歷》已頒,而杜甫襲用舊歷,是用來寄托對開元盛世的懷念之情。杜甫用舊法推算太歲日,并非不懂歷算,也不是要用于實際生活,更多的是寄托自己的心情。我們可以看到,杜甫詩中不乏“元日”作品,本詩是元日所作,卻用“太歲日”作為詩名。不僅是正逢元日、太歲日同日,值得記錄,還有對“太歲日”所承載的禍福內涵的深層表達。
《淮南子·天文訓》提到歲星、太歲(太陰)與人事的關系說:“歲星之所居,五谷豐昌,其對為沖,歲乃有殃。當居而不居,越而之他處,主死國亡。太陰治春,則欲行柔惠溫良。太陰治夏,則欲布施宣明……三歲而改節,六歲而易常。故三歲而一饑,六歲而一衰,一十二歲而一康。”歲星的超辰,致使陰陽時序錯亂,體現為太歲的改節易常,引發水旱災害,以十二年為一個周期,反復運行。這一理論實際是古人生活經驗的總結,木星11.8622年繞天一周,而太陽黑子的活動周期平均為11 年,其活躍時對地球磁場產生影響,也就容易出現災難性天氣。當太陽黑子活動逐步達峰點,11年后衰降到周期的極點,次年必然會有所緩和,也就是“十二歲一康”。在實際體驗的基礎上,古人用太歲與木星組成陰陽兩面,嘗試找尋規律,順應周期變化。在兩極的轉化間,不可避免地會賦予太歲一些負面特征,太歲改節則饑荒、太歲易常對沖則衰病。也隨之設定了一些禁忌或解難方式,如葛洪《肘后備急方》“外臺秘要辟瘟”條說:“方取上等朱砂一兩,細研,白蜜和丸如麻子大。常以太歲日平旦,一家大小勿食諸物,面向東立,各吞三七丸。永無疾疫。”在太歲日一早服藥,就能避免疫病。無論是饑荒還是疾病,恐怕都不宜遠行。趙睿才曾指出本詩與太歲日不可遠行的禁忌有關,我們在《論衡·難歲》所引的漢代《移徙法》找到了具體的規則:“徙抵太歲,兇;負太歲,亦兇。抵太歲名曰歲下,負太歲名曰歲破,故皆兇也。”并以“假令太歲在甲子,天下之人皆不得南北徙”為例。太歲由北方子位往南方午位運行,往北則抵太歲,往南就負太歲。
《太歲日》作于杜甫久居南方,想要北歸之時,詩中“西江元下蜀,北斗故臨秦”一句與負、抵太歲有關:其一從地理上來看,西江是蜀江,處于南;北斗喻長安,處于北。其二從分野上看,《后漢書志·郡國》劉昭注云:“自井十六度至柳八度,曰鶉首之次,于辰在未,謂之葉洽,于律為蕤賓,斗建在午,今秦分野。”北斗指向長安所在秦地是正南午位,與正北子位恰好相對。與太歲相關的遷移風俗表明,太歲在子,不可南北遷徙。因此,雖然干支紀年在丁未,可杜甫推算太歲日在壬子,本年不宜自夔州返回長安。詩人北歸的主觀愿望與客觀天道不符,由此發出“病多猶是客”的感慨,更覺歸期渺茫。加上本年太歲日正逢元日,遙想“閶闔開黃道,衣冠拜紫宸。榮光懸日月,賜予出金銀”朝會的盛大,反觀自身“鴛行斷”、“虎穴鄰”的孤寂,傷懷倍增。無論天道、地理、人事都不合心意,其中的憂悶更加難以抒發。詩人用《太歲日》作為詩題,正將這些欲說還休的無奈情緒總括其中,令人惆悵不已。黃鶴之批注太歲日為戊申日,雖然反映了當時民間習俗的實際存在,但與作者主觀愿望不能相符,難免喪失了詩中寄托的深意。
注釋:
①林弘:《杜甫與唐代節令習俗研究》,《杜甫研究學刊》1996年第4期,第70-79頁。
②⑥續修四庫全書編委會:《續修四庫全書·集部》,上海古籍出版社2002 年版,第1307 冊,第18 頁;第1307 冊,第578頁。
③林繼中輯校:《杜詩趙次公先后解輯校》(修訂本)下,上海古籍出版社2012年版,第1244頁。
④(宋)蒲積中編:《古今歲時雜詠》,三秦出版社2009 年版,第1-8頁。
⑤(清)永瑢、紀昀等編纂:《文淵閣四庫全書》,臺灣商務印書館1975年版,第1069冊,第609頁。
⑦(清)錢謙益:《錢注杜詩》,上海古籍出版社1979 年版,第590頁。
⑧(唐)杜甫撰,(清)仇兆鰲注:《杜詩詳注》,中華書局1979年版,第1854頁。
⑨謝思煒:《杜甫集校注》,上海古籍出版社2015年版,第6冊,第2608-2609頁。
⑩(漢)司馬遷:《史記》卷二七,中華書局1959 年版,第1313頁。
[11][13][19](漢)鄭玄注,(唐)賈公彥疏:《周禮注疏》,北京大學出版社1999年版,第706頁、第701頁、第701頁。
[12]陳久金:《北斗星斗柄指向考》,《自然科學史研究》1994年第4期,第209-214頁。
[14]張聞玉:《張聞玉文集·古代天文歷法講座》,貴州大學出版社2017年版,第300頁。
[15][16](漢)班固:《漢書》,中華書局1962年版,第1289頁、第1004-1005頁。
[17][18]盡管錢大昕認為“太歲日”當作“太歲所在”,王引之以“太歲日”下有“辰”字,但并無版本證據。參見(清)王先謙:《漢書補注》,中華書局1983年版,第429頁、第429-430頁。
[20]陳松長:《馬王堆帛書〈刑德〉甲、乙本的比較研究》,《文物》2000年第3期,第79-80頁。
[21]應加上上元至本年143127 年入算,但太初元年為歷元之起,故從本年起算。
[22][37]朱文鑫:《歷法通志》,《民國叢書》第4 編,上海書店1992年版,第81頁。
[23]張培瑜:《三千五百年歷日天象》,大象出版社1997 年版,第223頁。以下干支紀年、紀日都以本書為準。
[24]楊巨源《元日早朝》“閶闔迥臨黃道正,衣裳高對碧山垂”,與此情景描述類同。
[25][26](清)朱孝臧輯校:《彊村叢書》,廣陵書社2005 年版,第3冊,第1201頁、第1199頁。
[27](宋)黃升:《唐宋諸賢絕妙詞選·序》,張元濟編:《四部叢刊初編》,上海書店據商務印書館1926 年版重印,1989年版,第341冊,第2a頁。
[28](后晉)劉昫:《舊唐書》卷二〇〇上,中華書局1975 年版,第5376頁。
[29]上海古籍出版社編:《法國國家圖書館藏敦煌西域文獻》,上海古籍出版社1994年版,第3冊,第241、251頁。
[30]陳元靚記二月八日為佛誕節,與四月八日記錄不同,原因或是四月八日是以子月十一月為正月,如用寅月為正月,則子正的四月八日就是寅月的二月八日。(宋)陳元靚:《歲時廣記》,商務印書館1939年版,第223頁。
[31]參見童丕:《從寺院的賬簿看敦煌二月八日節》,《法國漢學》,中華書局2000年版,第5輯,第63、66頁。
[32]用《漢書·律歷志》歲術來推算這兩年的太歲日,也不在正月。這時應該是以元日為太歲日。
[33]上海古籍出版社編:《法國國家圖書館藏敦煌西域文獻》第2冊,第32頁。
[34]沈文凡:《唐詩接受史論稿》,現代出版社2014 年版,第267頁。
[35]宋維遠主編:《瑞安市志》卷三二,中華書局2003 年版,第1559頁。
[36](宋)歐陽修、宋祁:《新唐書》,中華書局1975 年版,第628頁。
[38]參見王勝利:《星歲紀年管見》,《中國天文學史文集》第五集,科學出版社1989年版,第18、97-102頁。
[39]參見(唐)瞿曇悉達:《唐開元占經》卷二三,瞿曇悉達編:《唐開元占經》,《影印文淵閣四庫全書》,第807 冊,第343頁。
[40]參見謝思煒:《杜甫的數學知識》,《古典文學知識》2013年第2期,第47-49頁。
[41]何寧:《淮南子集釋》,中華書局1998年版,第274頁。
[42](東晉)葛洪:《肘后備急方》卷二,中醫古籍出版社2015年版,第56頁。
[43]參見趙睿才:《唐代文學隅論》,上海古籍出版社2014年版,第236頁。
[44]黃暉:《論衡校釋》,中華書局1990年版,第1016頁。
[45](晉)司馬彪撰,(梁)劉昭注補:《后漢書志·郡國》,中華書局1965年版,第3386頁。