灾异论讲“休咎之变”,人类对自然认识的发展则是逐渐揭示规律,导向“天行有常”。天行有常与休咎之变存在矛盾,古人早有认识。《论衡·治期》曰:
在天之变,日月薄蚀。四十二月,日一食;五月六月,月亦一食。食有常数,不在政治。百变千灾,皆同一状,未必人君政教所致。[101]
王充从日食月食的周期性规律出发,推演至一切灾异,质疑政教之失导致灾变的观点,在逻辑上是合理的。虽然王充本人并不真正了解日月食原理,但对东汉末年的天文学家而言,日食可大致预报已是常识。至于五星运行的规律,则最晚在秦汉之际已经成为天文知识的重要组成部分[102]。这些知识,都可能对灾异论构成挑战。
然而,学者已经指出,天文推步技术不断发展,未能阻止古人从天人感应的角度看待日食[103]。灾异论没有被自然规律的发现所终结,而是迟至清末西方文化和政治思潮涌入之后,才归于消亡。那么,是什么力量在维持着“天行有常”和“休咎之变”之间的平衡?本节即以日食推步技术的发展与灾异政治文化对此的反应为中心,来探讨这个问题,考察天行有常与休咎之变的矛盾,如何在儒学、历法、礼制和政治活动等方面表现出来。
一、日食推步与经学中灾异论述的变化
早在周代,日食已被认为与人事相关。《诗·小雅·十月之交》云“十月之交,朔月辛卯,日有食之,亦孔之丑”,又云“日月告凶,不用其行”,表明周人认为日食是天体违背正常运动规律造成的,是重大凶兆。《春秋》经文和《左传》共记载春秋时代的日食37次,《左传》还描写了当时人对日食凶兆的预测和解说[104]。到了汉代,日食在天文星占中仍是大凶之兆。占书和谶纬中或者说“日蚀之后,必有亡国弑君”,或者说“日蚀之,主见贼”等等,都以日食为天变大异,危及人主[105]。前引《史记·吕后本纪》七年(前181)正月条载:“己丑,日食,昼晦。太后恶之,心不乐,乃谓左右曰:‘此为我也。’”第二年,吕后就死去了。《汉书·五行志》记载这次日食,在吕后之语后面加上了“明年应”三字[106],认为她的死是日食灾异预兆的应验。在惠帝七年(前188)、元凤元年(前80)的日食后,《汉书·五行志》也都书以“宫车晏驾”,暗示皇帝驾崩与日食的关系。除了凶兆以外,日食还被看成对天子的谴告。《史记·孝文本纪》载,汉文帝二年(前178)曾因日食下诏罪己,称:“日有食之,谪见于天,灾孰大焉!”
以上将日食视为灾异的观念,基于一个共同认识,即认为日食是由日月“失行”引起,属于非正常的天变。《汉书·天文志》引古人之言曰,天下太平则“日不食朔,月不食望”,说明古人认为,在太平之世,日月正常运行,便不会发生日食。日食发生的原理和规律一旦揭示出来,必将动摇日食灾异观的这个理论基础。
古代天文学,特别是历算推步的演进,恰恰在逐渐获得日食的预报方法。早在秦汉之际,人们对日食的原理和发生规律已经有所了解。《史记·天官书》即载有月食周期:
月食始日,五月者六,六月者五,五月复六,六月者一,而五月者五,凡百一十三月而复始。故月蚀,常也。
司马迁不仅说明月食发生具有周期性[107],而且明确指出月食是“常”,即有规律的正常现象。《汉书·律历志》载刘歆《三统历》以135个月为交食周期,并给出了月食算法。这个算法应是本于汉武帝时期制定的《太初历》[108]。至于发生交食是由于日月相掩的原理,在汉代亦已有认识,东汉王充还在《论衡》中专门对之作了批评[109]。根据现代天文学的经验,日食周期的基础与月食周期相同,古人发现月食周期的同时,应该也能发现日食周期[110]。《论衡·说日篇》云:“大率四十一二月,日一食;百八十日,月一食。蚀之皆有时。”[111]可以代表东汉时期普通士人对日食周期的知识。
据《后汉书·方术列传下》载,灵帝光和元年(178),侍中韩说曾成功预报过日食。这是史载最早的日食预报实例。可惜史书没有言明韩说是否已有一套比较系统的日食推步方法。目前所知历法中最早的日食推步,始于同时期刘洪所造《乾象历》[112]。刘洪不仅推算出更精确的交食周期,引进食限概念,而且利用自己发明的方法准确预报过日食。据《晋书·律历志中》载,刘洪弟子徐岳在曹魏黄初年间的历法讨论中说:
效历之要,要在日蚀。熹平之际,时洪为郎,欲改《四分》,先上验日蚀。日蚀在晏,加时在辰,蚀从下上,三分侵二。事御之后如洪言,海内识真,莫不闻见。
刘洪用预报日食来证明《乾象历》的准确性。当时采取了救禳仪式,但日食仍然发生,情况与刘洪的预测一致。《乾象历》在东汉没有施行[113],但推步日食之术既已提出,不能不引起朝廷的重视。东汉末年,太史已经开始推算和预报日食。献帝初平四年(193):
春正月甲寅朔,日有蚀之。未晡八刻,太史令王立奏曰:“日晷过度,无有变也。”于是朝臣皆贺。[114]
太史预测未晡八刻以前太阳会发生亏蚀。时刻已过而预想中的灾变没有发生,按照天人感应的理论,这就是圣德动天,消灾致福,所以“朝臣皆贺”。这时候的日食推步技术尚欠精密,未能精确得出交食时间。最后,日食发生于未晡一刻,比预报稍晚[115]。曹魏时,尚书郎杨伟制订《景初历》,在完善刘洪食限概念和数值的基础上,又明确给出交食食分和初亏方位的计算法[116]。在魏晋时期,日食可以推步预测,应已成为历算专家的共识。
此后,后秦姜岌、南朝宋何承天等先后有新的探索。到了北齐,张子信“始悟日月交道,有表里迟速”[117],终于实现了日食推步的重大突破。张子信的三大天文学发现中,有两项对日食推步有划时代的影响。一是太阳视运动的不均匀性。东汉贾逵、刘洪已经发现并描述了月球运动的“迟疾”[118],而太阳视运动的不均匀幅度远小于月球,且由于天体测量方法上的原因,往往被其他因素掩盖,前人有所猜测,却找不到证据。张子信通过长期观测研究,指出“日行在春分后则迟,秋分后则速”[119],由此得知交食推步必须加入与所在节气相关的修正值。另一项是月球视差对日食的影响。针对前代推步入食限而不发生日食、不入食限却发生日食的现象,张子信指出“合朔在日道里则日食,若在日道外,虽交不亏”[120]的规律。不仅如此,他还提出了计算月球视差对日食食分影响的方法[121]。众所周知,日食是由太阳、月球、地球三者的特定位置关系造成的。既了解日、月对地球相对运动的规律,又发现从地球观测日食受到月球视差影响,可以说已经基本掌握了日食推步的正确原理。
张子信本人没有制订历法,但隋代刘焯的《皇极历》、张胄玄的《大业历》,都吸收了他的成果,明确列出日食时刻、食分和起亏角等的详细推算方法[122]。此后,唐代《麟德历》《大衍历》《宣明历》以及各代的历法都只是不断改进推算方法,提高精确度而己。可以说,到了唐代,中国古代的日食推步已经达到极点[123]。
日食推步技术的发展对经学深有影响。汉唐时代的经学家,往往也是天文历法专家,经学著作吸收天文学成果的效率很高,能迅速与日食推算技术的发展接轨。跟日食关系最为密切的经书,首先是《春秋》。两汉训诂和南北朝义疏今多不存,这里主要根据西晋杜预的《春秋经传集解》和唐初孔颖达的《左传正义》,讨论经学场合中灾异论受日食推步技术发展影响而产生的变化。
如上所说,魏晋时期的历算家已经相信日食可以推步预测。杜预精通历数,著有《春秋长历》,上推春秋朔闰、日食[124],本身就是这方面的专家。他在《左传》庄公二十五年六月条下注云:
日食,历之常也。[125]
已经明确指出日食是天体运行的自然常理。当时历法尚疏,日食推步难以精确。因此《左传》隐公三年经“二月己巳日有食之”杜注又云:
日行迟,一岁一周天,月行疾,一月一周天,一岁凡十二交会。然日月动物,虽行度有大量,不能不小有盈缩,故有虽交会而不食者,或有频交而食者。[126]
这里对“历之常也”的判断有所保留。他说太阳、月球都是能动之物,运动大致规律,但又免不了小幅变化。在当时的条件下,这是天文推步还不能完全把握日月运行规律而不能不说的托辞。他所谓“有频交而食者”,是根据《春秋》的记载,其实不合于自然[127]。杜预的经说吸收天文学最新成果,发前人所未发,同时也受当时天文学水平所限,对日食是“历之常”的观点不能准确解释,更难完全贯彻。
唐初,经过张子信和刘焯等人的发展,日食推步技术获得关键性突破,预测水平大幅提高。孔颖达的《五经正义》撰写于这一背景之下,对日食的解说也比杜预大胆和透彻。
在《左传》隐公三年日食条正义中,孔颖达首先疏解杜预的上述注文,然后说“此注大判言耳”,认为杜注并不精确。随后,他针对杜预所谓“有频交而食者”提出了质疑:
战国及秦,历纪全差,汉来渐候天时,始造其术。刘歆《三统》以为五月二十三分月之二十而日一食,空得食日而不得加时。汉末,会稽都尉刘洪作《乾象历》,始推月行迟疾,求日食加时。后代修之,渐益详密。今为历者,推步日食,莫不符合,但无频月食法。故汉朝以来殆将千岁,为历者皆一百七十三日有余而始一交会,未有频月食者。今频月而食,乃是正经,不可谓之错误也。考之历术,事无不验,不可谓之疏失。由是注不能定,故未言之也。又《汉书·高祖本纪》,高祖即位三年十月、十一月晦日频食,则自有频食之理。其解在襄二十四年。[128]
“频月食”指连续两个月发生日食。孔颖达指出,当时历算专家预测日食已经十分准确,知道这种情况不可能发生。汉代以来,造历法者也都认为173天有余日月才有一次交会,没有频月而食的道理。《春秋》经文却记载了襄公二十一年九、十月和二十四年七、八月两次频月食,跟历法推算形成了矛盾。孔颖达说“注不能定,故未言之”。事实上,杜预没有质疑频月食的可能性,只是孔颖达自己由于天文学的进展才有此疑问。孔颖达在这里比较保守,又引用《汉书》记载的汉初频月食,表示据此则似乎又有频食之理。然后,他请读者翻到襄公二十四年,看最终的解释。
选择在襄公二十四年疏中给出解释,是有原因的。《春秋》记载这一年七月、八月连续两次日食,而七月“日有食之既”,是日全食。根据孔颖达的历算知识,日全食之后绝无次月日食之理,他说:
若前月在交初一度日食,则至后月之朔日犹在交之末度,未出食竟,月行天既帀,来及于日,或可更食。若前月日在交初二度以后,则后月复食无理。今七月日食既,而八月又食,于推步之术,必无此理。盖古书磨灭,致有错误。[129]
《左传》关于频月食的记载,这一条错误最明显,所以孔颖达在此处给出解释。他认为,如果前一个月发生极小幅度(一度)的日偏食,则后一个月的朔日,太阳运行可能还未离开月球的阴影(“食竟”,即食境),理论上尚有再次日食的可能。但这一条经文记载七月发生的是日全食,根据日食推算的方法,八月份绝无再次发生日食的可能。在经书和历算之间,孔颖达选择相信后者。当然他怀疑的不是经书本身,而是古书传抄中可能出现的错误。现在我们已经知道,《汉书》高祖三年的频月食,应是将前一年十一月的日食误入此年,而《春秋》襄公的两次频月食也是记载有误[130]。这是因为,我们掌握了日食的发生规律,相信规律超过了相信古书。同样,孔颖达在《左传正义》中得出古书错误的结论,也正是由于相信推步之术。考虑到经书在当时的权威,不难想见他对历算学的接受和信仰已经到了何种程度。
孔颖达改变杜预的经说,是有所本的。此前,隋代两位更为激进的大儒刘焯和刘炫已经为他做好充分的准备。二刘是经学大师,又都深通天文历算,同学至交,意旨相近。刘炫有《春秋左氏传述议》《毛诗述议》各四十卷,刘焯亦著有《五经述议》。孔颖达奉敕撰《左传正义》,即以刘炫书为蓝本,《毛诗正义》也本之二刘《述议》[131]。在上引襄公二十四年疏后,孔颖达大段引述刘炫之说,表明了观点的来源:
刘炫云:“汉末以来,八百余载,考其注记,莫不皆尔,都无频月日食之事。计天道转运,古今一也。后世既无其事,前世理亦当然。而今有频食,于术不符。……此与二十一年频月日食,理必不然。但其字则变古为篆,改篆为隶,书则缣以代简,纸以代缣,多历世代年数,遥远丧乱,或转写误失其本真。先儒因循,莫敢改易,执文求义,理必不通。后之学者,宜知此意也。”[132]
刘炫指出经文频食,不符合历术,并且勇于疑经,改易求通。孔颖达虽曾批评刘炫“意在矜伐,性好非毁”[133],在此也不得不明引其说,无所辩驳。
刘炫深信历术,当有至交好友刘焯的影响。刘焯撰《皇极历》,认为日食可以通过周密的历法准确预报[134]。他将张子信的发现具体落实到历法中,革新交食推算法,开启了交食研究的新时代[135]。在发现日食规律的基础上,刘焯指出,日食与人事绝无相关。他说:“日轮所照,日光所临,何关大地!近验应符,乃华言之饰辨,非忘私之至公。”[136]这一观点,事实上也为孔颖达《五经正义》所继承。《左传》昭公七年“夏四月甲辰朔日有食之”条正义曰:
日月之会,自有常数。每于一百七十三日有余则日月之道一交,交则日月必食,虽千岁之日食,豫筭而尽知,宁复由教不修而政不善也![137]
这是说日食是天体运行的常理,可以预测,与政教无关。《左传》昭公二十一年“秋七月壬午朔日有食之”条正义又有:“日月之行,交则相食,自然之理。但日为君象,月为臣象,阴既侵阳,如臣掩君,圣人因之设教,制为轻重。……足明此是先贤寓言,非实事也。”“足知是贤圣假托日食,以为戒耳。”孔颖达明确指出,日食为阴侵阳的说法,是圣人借日食而设教劝诫,并非实有其事。
通过以上叙述可以看出,唐代的官方经学在很大程度上吸收了天文历算学的最新成果。由于日食推步技术的发展,从魏晋到隋唐,儒家在经学的场合已经将日食看成有规律的自然现象,突破汉儒天人感应、灾异天谴之说,不再真的以为日食关乎人事政教了。
不过也要注意到,孔颖达仍然不断提到“圣人因之设教”,“假托日食以为戒”,并未放弃日食灾异说的劝诫功能。这种灾异说不是建立在迷信的基础上,而是深明天道物理之后的理性选择。儒家称之为“神道设教”。
早在西晋时期,杜预就对《春秋》通过记灾异设教的做法有过阐述。《左传》僖公十五年六月条云:“震夷伯之庙,罪之也。于是展氏有隐慝焉。”杜预注曰:
隐恶非法所得,尊贵罪所不加,是以圣人因天地之变、自然之妖以感动之。知达之主,则识先圣之情以自厉,中下之主,亦信妖祥以不妄。神道助教,唯此为深。[138]
他说,对于不能绳之以法、加之以罪的人,圣人便通过灾异感化耸动之,即借助“神道”,进行教化。
孔颖达十分赞同杜预之说,并加以阐发。《左传》昭公七年四月日食,晋平公询问谁将承当日食的凶兆。士文伯预言卫君、鲁卿将受其祸,趁势劝诫晋君说:“国无政,不用善,则自取谪于日月之灾。”孔颖达疏首先以日食是常数,否定与人事政教的关系,其文已略见上引。其后,他又说了一段非常值得注意的话:
人君者位贵居尊,志移心溢,或淫恣情欲,坏乱天下。圣人假之神灵,作为鉴戒。夫以昭昭大眀,照临下土,忽尔歼亡,俾昼作夜,其为怪异,莫斯之甚。故鸣之以鼓柝,射之以弓矢,庶人奔走以相从,啬夫驰骋以告众,降物辟寝以哀之,祝币史辞以礼之,立贬食去乐之数,制入门废朝之典,示之以罪己之宜,教之以修德之法,所以重天变,警人君也。天道深远,有时而验,或亦人之祸衅,偶与相逢。故圣人得因其变常,假为劝戒。知达之士,识先圣之幽情,中下之主,信妖祥以自惧。[139]
类似的论述还见于《左传》庄二十五年、《诗·十月之交》正义中。《十月之交》正义说完这层意思之后,云“杜预论之当矣”[140],可见是从杜说引申而来。孔颖达的话有三个层次。首先,人君至尊,权力和欲望无所制约将坏乱天下,因而需要借助神灵以为劝诫。其次,怪异之大莫过于日食,因此尤可借以警诫人君。最后,人间的祸难有时正好与天变时间相接,故可将灾异与人事联系起来,以劝诫人主。在此,孔颖达指出了灾异设诫的必要性与可能性,阐明圣人之意。他随后又说:
神道可以助教,不可专以为教。神之则惑众,去之则害宜。故其言若有若无,其事若信若不信,期于大通而已。世之学者,宜知其趣焉。[141]
认为灾异设诫只是教化的辅助手段,不可舍弃,亦不可专任。因此,圣人讲灾异只言其大概而不说得十分直白,说人事应验也若有若无,并不指实。这一观念已与汉儒之极言灾异、称说事应不同。孔颖达在《诗·十月之交》正义中批评汉儒说:
经典之文,不明言咎恶,而《公》家董仲舒、何休及刘歆等,以为发无不应,是知言征祥之义,未悟劝沮之方。[142]
《春秋》经文只记灾异,不明说引起灾异的失政、恶行,《公羊》家董仲舒、何休以及刘歆等汉儒则认为有灾必有应。孔颖达说,这是知圣人称说灾异之义,却不明白劝诫人君的方法。
汉儒说灾异时常采取实用主义的灵活态度,但他们对“神道”之事一般是相信的,至少也是将信将疑。唐代经学则在日食推步技术进步的影响下十分明确地阐明,灾异与人事之间并无天然的联系,圣人之说灾异是制约人主的手段,是有意地借助“神道”推行教化。因此,孔颖达告诉“世之学者”,心里不要相信天人感应,但嘴上必须坚持。这是“揣着明白装糊涂”,站在“外面”说“里面”。
由于儒家的神道设教思想,“天变有常”的发现只能影响经学层面的学理讨论。儒学的意识形态层面并没有因之改变。灾异政治文化就是在这种意识形态的支撑下长期存在,使“休咎之变”的影响持续作用于历法、礼制和政治活动中。
二、历数与政教
以上讨论了日食推步技术对经学灾异论述的影响。下面要变换角度,反过来研究灾异论在历法,特别是日食推步中的表现。
上文指出,经学家在历算推步技术发展的推动下,已经认识到天体运动的规律性,在经学注疏的场合承认日食是“历之常也”。然而,对于专业的历算家、历法的实际制订者来说,问题却复杂得多。他们必须用固定的数学模型来把握天体运动,往往测不准,算不对,要说“历之常也”,谈何容易!天体运动本身的复杂性,加上观测技术和数学水平的制约,使得古代历法在常与变之间游移不定。历法本身难以解决变与常的矛盾,便很容易受“休咎之变”思想影响,产生“历数”与“政教”并存的理念。
天体运动,比如太阳、月球、地球自身的运动都有大致稳定的速度和规律,但仍存在微小的变化。古人已经先后了解月球、太阳视运动的不均匀性。现代天文学发现,人类用作时间标准的地球自转也是不均匀的,除了周期性变化,还有不规则变化和长期变化,其规律现代科学也尚未完全掌握。即便采用最先进的技术手段,预测千年以后或回溯千年以前的日食仍会存在误差。天行有常的“常”,是相对的。孔颖达说“虽千岁之日食,预算而尽知”,是对天文学了解不够充分所致。根据古代历法,日食可以预测,但不能分秒不差。对于历法专业人员,最困扰的还不是食时、食分测不准,就连预测是否一定发生可见日食都存在困难。
月球视差对日食的影响,是古代日食推步的中心问题。历代天文学家为解决这个问题煞费苦心,却一直得不到完满的结果,因此预报经常失准[143]。这种失准在唐以后多是食时不准,此前则经常表现为“当食不食”“不当食而食”。东汉建安十七年正旦和曹魏正元二年三月朔,就先后发生过两次太史预奏日蚀而不蚀的事件[144]。张子信发现月球视差对日食的影响后,隋代刘焯还在《皇极历》中专门设立“推应食不食”“推不应食而食”两术[145]。经过唐人的发展,情况有所好转,但预报失准的问题始终无法根本解决。因此,历算家对日食的态度也颇为矛盾。
一方面,历算家相信日食是常数,有一定的规律。最明显的证据是,他们普遍认为日食预报是否准确是验证历法精确度最好的标准[146]。刘洪弟子徐岳在曹魏黄初年间的历法讨论中说“效历之要,要在日蚀”,已见前引。杜预也说:“日蚀于朔,此乃天验。”[147]后秦姜岌同样认为:“自皇羲以降,暨于汉魏,各自制历,以求厥中。考其疏密,惟交会薄蚀可以验之。”[148]基于这一理念,日食预报失准经常成为历法改革的动因。这种日食验历思想,预设的前提就是:好的历法可以准确地预报日食。
另一方面,历算家多认为历法不能通于古今,必须定期修改[149]。具体到日食预报,古人也提出了很多测不准的理由。《宋书·礼志一》载魏高贵乡公正元二年三月朔,太史奏日蚀而不蚀,司马昭追究其责,史官答曰:
合朔之时,或有日掩月,或有月掩日。月掩日,则蔽障日体,使光景有亏,故谓之日蚀。日掩月,则日于月上过,谓之阴不侵阳,虽交无变。日月相掩必食之理,无术以知。
史官辩称,日月交会合朔的时间可以推测,但交会的过程有时是月亮遮住太阳,有时是太阳挡在月亮之前,究竟是“日掩月”还是“月掩日”没有办法预先获悉。因此,日月交会是不是一定发生日食,也就不得而知了。“或有日掩月”可能是为了逃避责任的借口,以当时史官的天文知识,不应连日月孰远孰近都分不清[150]。不过,能够推知交会而不能确定交会时是否发生可见的日食,确是当时历算学的实情。南朝宋戴法兴说“夫交会之元,则食既可求,迟疾之际,非凡夫所测”[151],可以代表粗知历算者的一般认识[152]。
从曹魏《景初历》到南北朝各代历法,都列有“推合朔交会月蚀术”,指出凡朔望入交限者,“朔则交会,望则月蚀”[153]。所谓“交会”其实就是“日食”,只是这个“日食”在全球范围一定发生,在国境内却不一定能够观测得到。推交会和推可见日食,还有差距。又因为日食为“大异”,历法制定者不敢径称,甚至出现了“推交会起角术”这样的说法[154]。所谓“交会起角”其实就是日食的起亏角。
到了南北朝末期,张子信的三大天文学发现带来历法制订尤其是日食推算上的重大突破。隋代的张胄玄历、刘焯《皇极历》都出现了推日食术,不再只称“推交会”。由于科学的突破,历法制定者对天体运行之“常”以及自己把握“常”的能力,都信心倍增。刘焯对他的历法极为自负,称“秦汉以来,无所与让……测七曜之行,得三光之度,正诸气朔,成一历象,会通今古,符允经传,稽于庶类,信而有征”[155]。在这种认识突破带来的信心中,他大言“日轮所照,日光所临,何关大地”,反对天人感应说对天文历算之学的干扰,极具胆识。但刘焯自己也不能准确预报日食,完满地证明天人相分。《新唐书·历志三上》载,唐玄宗开元年间,“《麟德历》署日蚀比不效”。《麟德历》即唐初李淳风在《皇极历》基础上修正而成。它的失准,促使后来的历法制定者从科学突破的兴奋中冷静下来,重新反省天道和历法中变与常的关系。
史官据《麟德历》预测日蚀屡屡失误之后,开元九年(721),唐玄宗“诏僧一行作新历”,所成新历就是著名的《大衍历》。一行的天文学成就很高,《大衍历》以大量实测工作为基础,从历法形式、结构到内容、方法,都取得了重大进步,在中国历法史上具有里程碑式的崇高地位[156]。这些成就广为人知,此处不再赘述。这里要关注一行《大衍历》的另一个特色,即其中儒学意识形态的影响和“休咎之变”思想的表现。
若以现代天文学标准评价一行的观点,当然很容易指出他的不足和错误,为他保留天人感应的一席之地深感惋惜。但如果回到一行的时代检查他的工作,不难发现他确以实测验天为先,已经做到了尽可能地揭示天体运行的规律。在他那里,“占”的作用范围已经缩小到少数当时实在无法用历数之常来解释和反映的不均匀、不规则运动上,所占的“变”也已经不同于传统星占学的占象了。
在一行的时代,真理的最高标准是经典。天文中的“变”可以在经典中找到依据。《日蚀议》的开头就讨论了一个经学问题:
《小雅》“十月之交,朔日辛卯”,虞以历推之,在幽王六年。《开元历》定交分四万三千四百二十九,入蚀限,加时在昼,交会而蚀,数之常也。《诗》云:“彼月而食,则维其常。此日而食,云何不臧!”日,君道也,无朏魄之变。月,臣道也,远日益明,近日益亏。望与日轨相会,则徙而浸远,远极又徙而近交,所以著臣人之象也。望而正于黄道,是谓臣干君明,则阳斯蚀之矣。朔而正于黄道,是谓臣壅君明,则阳为之蚀矣。且十月之交,于历当蚀,君子犹以为变,诗人悼之。然则古之太平,日不蚀,星不孛,盖有之矣。
《诗经·小雅·十月之交》是因日食批评政治的诗篇。梁武帝后期的太史令虞通过历法推算出,《诗经》十月辛卯朔的这次日食发生在周幽王六年。根据《开元历》(即《大衍历》),这是一次可以推算的日食,也就是说,按照天体运行的规律,这次日食本应发生,是历数之常。然而,一行紧接着引用了经学家的解释,认为日食是阴侵阳、臣壅君的后果。他还指出,这次日食根据现有历法是应当发生的,古代君子却仍然视之为天变,可以推断在上古太平之世,太阳确实不会发生亏蚀。这里又有一个矛盾,日食既然是天体运动造成的经常现象,太平世“日不蚀”又如何可能呢?一行解释说:
若过至未分,月或变行而避之;或五星潜在日下,御侮而救之;或涉交数浅,或在阳历,阳盛阴微则不蚀;或德之休明,而有小眚焉,则天为之隐,虽交而不蚀。此四者,皆德教之所由生也。
他举出四种天体运动的变化,可消除本将发生的日食。这四种变化,都是由“德教”产生的。这样的解释当然不符合自然,但却合乎经学的逻辑。
不仅如此,一行还找到了现实中的证据:
开元十二年七月戊午朔,于历当蚀半强,自交趾至于朔方,候之不蚀。十三年十二月庚戌朔,于历当蚀太半,时东封泰山,还次梁、宋间,皇帝彻饍,不举乐,不盖,素服,日亦不蚀。时群臣与八荒君长之来助祭者,降物以需,不可胜数,皆奉寿称庆,肃然神服。虽算术乖舛,不宜如此,然后知德之动天,不俟终日矣。若因开元二蚀,曲变交限而从之,则差者益多。
开元十二、十三年连续发生了两次推算当食而不食。一行都归因于唐玄宗圣德动天,导致天体没有按照常数运动,而出现了“变”。根据现代天文推算,这两次日食在中国境内都几乎观测不到[159],当食不食是由于很小的计算误差。一行称“若因开元二蚀,曲变交限而从之,则差者益多”,在当时的条件下是不无道理的。既不宜更改历数,当然只能归因于政教了。一行在《略例》中说:
使日蚀皆不可以常数求,则无以稽历数之疏密。若皆可以常数求,则无以知政教之休咎。
在他看来,“常”与“变”同时存在于天道之中。“历数”和“政教”结合起来,正好可以解释这对矛盾。
一行这样说的目的,是不是为了给唐玄宗歌功颂德呢?清初历算家王锡阐就是这么认为的,他说:“开元甲子当食不食,一行乃为谀词以自解。”[160]归因于圣德动天,一方面掩饰历数粗疏,一方面取媚于天子。作为后人,很容易这样理解一行。但如前所述,一行在历法修订工作上未有任何懈怠,《大衍历》的精度也超过了刘焯、张胄玄。他重新认识天道,承认“常”与“变”共同存在,不是因为技术倒退,而是反思和超越张、刘的结果。一行说:
黄初已来,治历者始课日蚀疏密,及张子信而益详。刘焯、张胄玄之徒自负其术,谓日月皆可以密率求,是专于历纪者也。
由于张子信的突破,张胄玄、刘焯自信可以精确预测日食。摆在一行面前的事实则是张、刘的推步也不能够做到精确。在尽可能地提高精确度之后,一行批评前人的自负,再度承认了天的变数。王锡阐经历明末西方天文学的传入,身处新一轮天文学发展高潮之中,境况与刘焯相似,反观一行,自然多有不满。但就当时的条件而言,一行不过是尽最大努力给出最合理的解释而已。后世学者用自己所处时代的知识水平和真理标准衡量古人,恐怕难以得其本心。
那么,如何理解一行引入“政教”因素的动机呢?这需要从了解古代历法的性质和功能出发。中国古代的历法本来就是为政教服务、与政教相通。江晓原指出,古代所谓“观象授时”“敬授人时”,本义是指依据历法安排重大政治事务的日程[161]。《礼记·月令》之说以及后代国家祭祀、朝会仪式所用时令等,前人也多有讨论,此处不再赘述,仅举一例说明其意。《续汉书·律历志中》载蔡邕引东汉章帝元和二年(85)二月甲寅制书曰:
史官用《太初》邓平术……先立春一日,则《四分》数之立春也,而以折狱断大刑,于气已迕,用望平和,盖亦远矣。
意思是,原本所用的《太初历》立春前一天,根据《四分历》已经立春。汉人以冬季决狱行刑,如果在《太初历》的立春前一天行刑,则实际已经到了春季,违迕时气。因此而废《太初历》改行《四分历》,目的就是使政治活动符合天道运行的节律。可见古代历法的意义就依附于这种天人合一的政教观。在这一背景下,理解一行的历法思想就比较容易了。
一行批评刘焯、张胄玄之徒“专于历纪”,说明他心目中还有与历数相互配合的“政教”。这一政教思想,正与儒家的灾异论相合。对此,一行在《大衍历议·五星议》中表达得更为明确:
夫五事感于中,而五行之祥应于下,五纬之变彰于上,若声发而响和,形动而影随。故王者失典刑之正,则星辰为之乱行,汩彝伦之叙,则天事为之无象。当其乱行无象,又可以历纪齐乎!
五事、五行、五纬感应之说见于《汉书·五行志》《天文志》,正是儒家的灾异论。他又说:
故五星留逆伏见之效,表里盈缩之行,皆系之于时,而象之于政。政小失则小变,事微而象微,事章而象章。已示吉凶之象,则又变行,袭其常度。不然,则皇天何以阴骘下民、警悟人主哉!
由此看来,一行认为天用天文灾异吉凶之象“阴骘下民”“警悟人主”,相比孔颖达的“神道设教”之说,反而更相信天人感应。毫无疑问,一行肯定更懂“科学”,但他的“科学”和天人感应信仰之间并非截然对立。正因为一行是天文历算专家,是历法的制定者,所以对天体运行中的规律和不规律有更深切的了解。他和孔颖达对“历之常”的理解也因而有所不同。一行所说的“常”是数学上可以定量推算的,孔颖达所理解的“常”则只是大致的特性。孔颖达认为历数之常即说明了天道之常,一行则认为历数之常只能代表天道中“常”的一面,除此之外还有“变”的一面。
这里又出现一个有意思的问题:一行读过孔颖达关于神道设教的官方经学论述吗?《旧唐书·一行传》称其“少聪敏,博览经史”,晚年入京,玄宗“数就之,访以安国抚人之道,言皆切直,无有所隐”。可见他虽出家为僧,论学行则不失为儒者。唐初所修《五经正义》中关于日食灾异的论述,他即使没有系统阅读,也应有所了解。那么,他撰写《历议》陈说政教休咎,是不是神道设教呢?从上面的分析来看,似乎不全是。一行采用天人感应之说,一定深受儒家灾异论的影响,却又没有完全跟上经学灾异思想的最新动向。这正如孔颖达的日食灾异说受天文历算学发展的影响,却仍对天道运行未达一间一样。天文历算学与经学就在彼此的了解和误读中相互作用,这也是古代学术史中饶有趣味的现象。
无论如何,唐代经学和历法有一点是相通的,即都主张天人感应、灾异天谴之说。经学以神道设教为目的,在意识形态领域坚持灾异论。在这样的政治文化环境中,历法制定者通过研究天体运行,发现天道中存在历数之常无法解释的变数,便自然地引入政教观念,用儒家灾异论解释天道中的“变”。“天行有常”与“休咎之变”相互配合,正好完整地解释了天道变、常并存的矛盾。因此,在历法的层面,灾异论与日食推步得以共生不悖。
根据小岛毅的研究,到了宋代,学者也没有因日食是周期性规律现象,而得出日食与政治无关的结论[162]。这种情形在意识形态领域一直维持至清代。在此期间,天行有常与休咎之变的矛盾,不仅表现在经学和历法这些“纸面上”的场合,而且在古代礼仪、制度和有关政治活动中引起了新的实际问题。这是下面要讨论的内容。
三、关于日食祥瑞的争论
自从日食可以推步,便出现了预报日食而观测不食或食分小于预测的情况,有时日食还会由于天气因素观测不到,古人通常称之为“当食不食”或“阴云不见”。儒家灾异论认为,人君修德则灾消福至。那么,“当食不食”或“阴云不见”是否可以看作圣德动天,消灾致福,因而属于祥瑞呢?古人对如何理解这些情况有不小的争议,并且在政治制度和政治活动中表现出来。这是唐宋以后日食推步给灾异政治文化带来的新动向。
(一)日食祥瑞说及相关制度的形成
当食不食、阴云不见情况的出现,是以日食预报为前提的。古代官方的日食预报始于东汉末年,但直到唐代以前,几乎没有这两种情况的记载[163]。当食不食和阴云不见的意义发生变化,始于唐玄宗时期。
上文已经提到,一行将开元十二、十三年两次推算当食而不食归因于唐玄宗圣德动天,不过他还不是始作俑者。《资治通鉴》卷二一一开元二年条载:
二月庚寅朔,太史奏太阳应亏不亏。姚崇表贺,请书之史册。从之。
开元年间,太史按照《麟德历》预报日食屡次失准,导致开元九年诏一行改作新历,当食不食或预报失准仍是历法问题。然而,姚崇表贺并请书之史册的举动赋予它新的含义。《唐会要》载:“仪制令:诸祥瑞若麟凤龟龙之类依图书大瑞者,即随表奏。……告庙颁下后,百官表贺。”[164]《唐六典》载郎中、员外郎之职亦云:“若大瑞随即表奏,文武百僚诣阙奉贺。”[165]可知唐代有群臣表贺祥瑞之制。姚崇表贺“太阳应亏不亏”,无疑是将之视为祥瑞。又,《唐六典》载史馆所掌曰:“凡天地日月之祥、山川封域之分、昭穆继代之序、礼乐师旅之事、诛赏废兴之政,皆本于起居注以为实录。”[166]“太阳应亏不亏”,从观测的角度而言等于不食。未曾发生的日食本无可记载,而姚崇请书之史册,当是根据史馆掌“天地日月之祥”这一条,将之视为祥瑞了。
将日当食而不食视为祥瑞本无先例,据当时的政治情势推测,姚崇此举或许有特定的政治目的[167]。然而,这一出于特殊考虑的个人行为,此后逐渐形成朝廷惯例。开元十三年十二月当食不食,一行称“时群臣与八荒君长”,“皆奉寿称庆,肃然神服”[168]。此时,因日当食不食称贺已是大臣的群体行为。这一次仅见于《历议》,而未入国史。《旧唐书·天文志》载唐代宗广德二年(764)“五月丁酉朔日当蚀不蚀,群臣贺”,则当本于唐代国史。《唐会要》卷四二“日蚀”条记载了唐德宗贞元年间三次当食不食或阴云不见,均有百官表贺之事,已成惯例。此外,《唐会要》还有一次贞元八年日食不及分的记载,司天监认为食分小于预测是人君圣明所致,请求向大臣宣示并写入国史。德宗欣然同意。君臣将食不及分也当成了稍次于当食不食的祥瑞[169]。
唐后期至五代,当食不食和阴云不见的记载屡见于史籍。《册府元龟·帝王部·符瑞第四》载:
〔唐文宗〕太和三年十一月丁丑朔,己卯,司天台上言太阳当蚀不蚀,宰臣率百官表贺。[170]
《唐会要》载:
〔文宗开成〕二年十二月庚寅朔。司天奏是日太阳亏,至时,阴雪不见。[171]
《五代会要》载:
〔后唐明宗天成〕三年二月丁丑朔。其日阴云不见,百官称贺。
〔明宗〕长兴元年六月癸巳朔。其日阴冥不见,至夕大雨。
〔晋高祖天福〕三年正月戊申朔。司天先奏其日日蚀,至日不蚀,内外称贺。
〔天福〕七年四月甲寅朔。是日百官守司,太阳不食,上表称贺。[172]
以上各条大多记载君臣称贺,不书者也很可能是史笔省文。唐中叶以后,群臣贺太阳不亏的表状多有存世。《文苑英华》卷五六二《贺祥瑞二》记载了三篇贺太阳应亏不亏的表文,前两篇为唐代宗大历十三年独孤及、常衮所上,后一篇年代不详,也是常衮所作[173]。此外,还有韩愈长庆三年《贺太阳不亏状》[174]和前蜀杜光庭的《贺太阳合亏不亏表》[175]。这些表文都是称颂皇帝德以感天,表达不胜欢欣雀跃之情。
唐代开始,由于日食推步的运用,日食从灾异之大者转而具备了变为祥瑞的可能性。从《册府元龟》和《文苑英华》的分类来看,唐宋之际,古人确实将当食不食、阴云不见的现象归入祥瑞。《唐六典》将祥瑞分为大瑞、上瑞、中瑞、下瑞四等,大瑞随时表奏,其余则年终以闻,百官表贺[176]。上文提及的贺日食表都作于当月或当日,可知日食祥瑞地位很高,等同于大瑞。它所象征的君主之德,不仅由百官表贺加以确认,而且记入史册,传之后世。通过日食祥瑞,皇帝减少遭受“天谴”的危险,增加获得“天眷”的机会,成为最大的受益者。
从历法角度看,当食不食和食不及分都是推步失准所致。日食祥瑞说将之归因于帝王圣德,无疑减轻了天文历算官员的责任。从僧一行到徐承嗣,都主动申说日食祥瑞,与唐代天文推步技术的迅速发展形成鲜明对比。日食祥瑞说附会人君“圣德”,容易流于阿谀取媚。唐、五代士大夫不仅未曾反对,而且竞相表贺,献媚求宠。这种情况,到宋代才有所改变。
(二)宋代日食祥瑞的反对意见
司马光在《资治通鉴》卷二一一开元二年八月乙酉条下,评论唐玄宗、姚崇称说祥瑞之事,曰:
日食不验,太史之过也,而君臣相贺,是诬天也。采偶然之文以为符命,小臣之谄也,而宰相因而实之,是侮其君也。上诬于天,下侮其君,以明皇之明,姚崇之贤,犹不免于是,岂不惜哉!