〔1〕夫明时治历,自黄帝、尧、舜与三代之盛王,莫不重之,其文备见于传记矣。虽去古既远,其法不详,然原其要,不过随时考验,以合于天而已。汉刘歆作《三统历》,始立积年日法,以为推步之准。后世因之,历唐而宋,其更元改法者,凡数十家,岂故相为乖异哉?盖天有不齐之运,而历为一定之法,所以既久而不能不差,既差则不可不改也。
在政治清明的时代制定历法,从黄帝、尧、舜以及夏、商、周三代的圣明君主,没有不重视它的,这方面的记载在史书传记中很完备。虽然距离古代已经很遥远,那些方法不详细,但推究其根本,不过是随着时间检验天象,以符合天体的运行罢了。汉代的刘歆著作《三统历》,开始创立了积年和日法,作为推算的标准。后代沿用它,经过唐代到宋代,其间更改历法起点和改革方法的人,总共几十家,难道是他们故意要相互违背吗?大概是因为天体的运行有不齐的变化,而历法是固定的法则,所以时间长了就不能不出现误差,既然有误差就不能不进行修改。
〔2〕元初承用金《大明历》,庚辰1340岁,太祖西征,五月望,月蚀不效;二月、五月朔,微月见于西南。中书令耶律楚材以《大明历》后天,乃损节气之分,减周天之秒,去交终之率,治月转之余,课两曜之后先,调五行之出没,以正《大明历》之失。且以中元庚午1330岁,国兵南伐,而天下略定,推上元庚午1330岁天正十一月壬戌朔,子正冬至,日月合璧,五星联珠,同会虚宿六度,以应太祖受命之符。又以西域、中原地里殊远,创为里差以增损之,虽东西万里,不复差忒。遂题其名曰《西征庚午元历》,表上之,然不果颁用。
元朝初年,沿用金朝的《大明历》。庚辰年(1220年),成吉思汗西征,那年五月十五日出现月食,但历法预报不准;二月初一和五月初一,西南方竟然能看到微弱的月亮(按说新月应该看不到)。中书令耶律楚材认为《大明历》比实际天象滞后,就调整了节气长度、回归年长度、交点月数据、近点月余数,校准了日月运行的先后顺序,重新确定了五大行星的出没规律,用来纠正《大明历》的误差。他又以中元庚午年蒙古军南征、天下大致平定的事实,推算出上元庚午年十一月壬戌朔、子时冬至这个理想历元,这时日月合璧、五星联珠,都汇聚在虚宿六度,正好应验了成吉思汗受命于天的符兆。因为西域和中原相距遥远,他又创立了“里差”来计算时间差,使得东西相隔万里也不会出现差错。他把这部历法命名为《西征庚午元历》,上表进献,但最终没有颁布使用。
〔3〕至元四年,西域札马鲁丁撰进《万年历》,世祖稍颁行之。十三年,平宋,遂诏前中书左丞许衡、太子赞善王恂、都水少监郭守敬改治新历。衡等以为金虽改历,止以宋《纪元历》微加增益,实未尝测验于天,乃与南北日官陈鼎臣、邓元麟、毛鹏翼、刘巨渊、王素、岳铉、高敬等参考累代历法,复测候日月星辰消息运行之变,参别同异,酌取中数,以为历本。十七年冬至,历成,诏赐名曰《授时历》。十八年,颁行天下。二十年,诏太子谕德李谦为《历议》,发明新历顺天求合之微,考证前代人为附会之失,诚可以贻之永久,自古及今,其推验之精,盖未有出于此者也。今衡、恂、守敬等所撰《历经》及谦《历议》故存,皆可考据,是用具著于篇。惟《万年历》不复传,而《庚午元历》虽未尝颁用,其为书犹在,因附著于后,使来者有考焉。作《历志》。
至元四年(1267年),西域的札马鲁丁编写并进献了《万年历》,元世祖忽必烈稍微颁行使用了一下。到至元十三年(1276年),元朝平定宋朝后,就下诏让前任中书左丞许衡、太子赞善王恂、都水少监郭守敬重新制定新历法。许衡等人认为金朝虽然改过历法,但只是在宋朝的《纪元历》基础上稍微增添了一点,其实并没有进行过实际的天文观测验证,于是就和南北方的天文官员陈鼎臣、邓元麟、毛鹏翼、刘巨渊、王素、岳铉、高敬等人一起参考历代历法,又反复观测日月星辰消长运行的规律变化,比较辨别其中的差异,斟酌采用最适宜的数据,作为制定新历法的依据。至元十七年(1280年)冬至,新历法完成,下诏赐名为《授时历》。至元十八年(1281年),向全国颁布推行。至元二十年(1283年),又下诏让太子谕德李谦撰写《历议》,深入阐明新历法顺应天时、追求符合天度运行的精妙之处,考证出前代历法中人为附会穿凿的失误,这部历法确实可以流传永久,从古至今推算验证的精确程度,大概没有能超过它的。现在许衡、王恂、郭守敬等人撰写的《历经》以及李谦的《历议》都还存在,可以作为考证的依据,因此我把这些内容详细记载在本篇里。只有《万年历》不再流传了,而《庚午元历》虽然没有颁布使用过,但它的书籍还在,所以把它附录在后面,让后来的人有所考查。于是写了这篇《历志》。
〔5〕天道运行,如环无端,治历者必就阴消阳息之际,以为立法之始。阴阳消息之机,何从而见之?惟候其日晷进退,则其机将无所遁。候之之法,不过植表测景,以究其气至之始。智作能述,前代诸人为法略备,苟能精思密索,心与理会,则前人述作之外,未必无所增益。
天道的运行,就像圆环一样没有头尾,制定历法的人一定要抓住阴气消退、阳气生长的那个当口,把它作为确立历法的起点。阴阳消长的关键,从哪儿能看出来呢?只要观测日晷上影子的拉长和缩短,那个关键就藏不住了。观测的方法,不过是竖起一根标杆来测量日影,借此推究节气到来的起始。有智慧的人搞创作,有才能的人做阐述,前代各位大师定下的办法已经相当齐备了,但要是咱们能深入思考、仔细探寻,心里跟道理完全合拍,那在前人的著作之外,也不是就不能再添点新东西。
〔6〕旧法择地平衍,设水准绳墨,植表其中,以度其中晷。然表短促,尺寸之下所为分秒太、半、少之数,未易分别。表长,则分寸稍长,所不便者,景虚而淡,难得实景。前人欲就虚景之中考求真实,或设望筒,或置小表,或以木为规,皆取表端日光下彻圭面。今以铜为表,高三十六尺,端挟以二龙,举一横梁,下至圭面,共四十尺,是为八尺之表五。圭表刻为尺寸,旧寸一,今申而为五,厘毫差易分。别创为景符,以取实景。其制以铜叶,博二寸,长加博之二,中穿一窍,若针芥然,以方跂为趺,一端设为机轴,令可开阖,榰其一端,使其势斜倚,北高南下,往来迁就于虚景之中,窍达日光,仅如米许,隐然见横梁于其中。旧法以表端测晷,所得者日体上边之景,今以横梁取之,实得中景,不容有毫末之差。
以前的方法会选择平坦开阔的地面,用水平仪和墨线找准水平,然后在中间立一根标杆(表),用来测量日影的长度。但是标杆太短,下面分出的分、秒以及太(四分之三)、半(二分之一)、少(四分之一)等细微的数值,很难分辨清楚。如果标杆加长,分度值虽然会变大一些,但麻烦的是影子会变得又虚又淡,不容易看清真实的影子。前代人想从这种模糊的影子中求得准确的结果,有的用望筒、有的放小表、有的用木制的规,方法都是从标杆顶端让日光射到圭面上。现在改用铜做标杆,高三十六尺,顶上用两条龙夹着,托起一根横梁,从横梁往下到圭面一共四十尺,这相当于五个八尺长的标杆。圭表上的刻度,原来一寸的地方现在拉长到五寸,这样哪怕是很细微的差别都能分辨出来。另外还专门发明了“景符”来获取清晰的影子。它的做法是用铜片,宽两寸,长度比宽多两寸,中间钻一个小孔,只有针眼或芥子那么大;下面用一个方形的跂作底座,一端装上转轴,让它能开合,把另一头支起来,使整个装置斜着放,北边高、南边低,在模糊的影子里来回移动调整,让阳光从小孔中穿过,光点只有米粒大小,这时就能隐约看到横梁的影子出现在其中。原来用标杆顶端测影,得到的是太阳上边缘的影子;现在用横梁取影,得到的是太阳正中心的影子,不允许存在一丝一毫的误差。
〔7〕地中八尺表景,冬至长一丈三尺有奇,夏至尺有五寸。今京师长表,冬至之景七丈九尺八寸有奇,在八尺表则一丈五尺九寸六分;夏至之景一丈一尺七寸有奇,在八尺表则二尺三寸四分。虽晷景长短所在不同,而其景长为冬至,景短为夏至,则一也。惟是气至时刻考求不易,盖至日气正,则一岁气节从而正矣。刘宋祖冲之尝取至前后二十三四日间晷景,折取其中,定为冬至,且以日差比课,推定时刻。宋皇祐间,周琮则取立冬、立春二日之景,以为去至既远,日差颇多,易为推考。《纪元》以后诸历,为法加详,大抵不出冲之之法。新历积日累月,实测中晷,自远日以及近日,取前后日率相埒者,参考同异,初非偏取一二日之景,以取数多者为定,实减《大明历》一十九刻二十分。仍以累岁实测中晷日差分寸,定拟二至时刻于后。
在“地中”这个地方用八尺高的圭表测量日影,冬至时影子长一丈三尺多,夏至时影子长一尺五寸。如今京城用的长圭表,冬至时影子有七丈九尺八寸多,换算成八尺表的话就是一丈五尺九寸六分;夏至时影子一丈一尺七寸多,换算成八尺表就是二尺三寸四分。虽然日影长短在不同的地方不一样,但影子最长的日子是冬至,最短的日子是夏至,这个规律是相同的。只是冬至和夏至具体到来的时刻不容易精确测量,因为如果冬至日的节气准确了,那么一年的节气也就都准了。刘宋时期的祖冲之曾选取冬至前后二十三四天的日影,取它们的中间值定为冬至,并且用日影差值的比较推算,来推定具体时刻。北宋皇祐年间,周琮则选取立冬和立春这两天的日影,认为它们离冬至和夏至较远,日影差值较大,容易推算。《纪元历》以后的历法,方法更加详细,但大致上没有超出祖冲之的方法。新历经过日积月累的实测,测量正午的日影,从远日点到近日点,选取前后日子中日影变化率相近的,参考它们的异同,并不是只取一两天的日影,而是以取数多的为定论,实际上比《大明历》减少了十九刻二十分。仍然用多年实测的正午日影每日差别的寸数,来推定冬至和夏至的时刻写在后面。
推算元朝至元十四年(丁丑年)的冬至日期。
〔9〕其年十一月十四日己亥,景长七丈九尺四寸八分五厘五毫;至二十一日丙午,景长七丈九尺五寸四分一厘;二十二日丁未,景长七丈九尺四寸五分五厘。以己亥、丁未二日之景相校,余三分五毫为晷差,进二位;以丙午、丁未二日之景相校,余八分六厘为法;除之,得三十五刻;用减相距日八百刻,余七百六十五刻;折取其中,加半日刻,共为四百三十二刻半;百约为日,得四日;余以十二乘之,百约为时,得三时,满五十又作一时,共得四时;余以十二收之,得三刻;命初起距日己亥算外,得癸卯日辰初三刻为丁丑1337岁冬至。此取至前后四日景。
那年十一月十四日(己亥日),测得日影长度为七丈九尺四寸八分五厘五毫;十一月二十一日(丙午日),日影长度为七丈九尺五寸四分一厘;十一月二十二日(丁未日),日影长度为七丈九尺四寸五分五厘。用己亥日和丁未日的影长相减,得到三分五毫的差值,将这个差值放大一百倍作为影差;再用丙午日和丁未日的影长相减,得到八分六厘的差值作为除数。用影差除以除数,得到三十五刻。用三十五刻减去相距日的八百刻(即从八百刻中减去三十五刻),得到七百六十五刻。取七百六十五刻的一半,再加上半日刻(五十刻),总共得到四百三十二点五刻。将这个数除以一百,得到四日(四百刻),剩余三十二点五刻。将剩余的三十二点五刻乘以十二,再除以一百,得到三时;因为余数累积满五十又进位一时,所以总共四时。最后剩余除以十二,得到三刻。从起始日己亥算起,得到冬至发生在癸卯日的辰时三刻(约今上午七点四十五分),这一年的干支为丁丑。这是取冬至前后四天的日影计算的结果。
〔10〕十一月初九日甲午,景七丈八尺六寸三分五厘五毫;至二十六日辛亥,景七丈八尺七寸九分三厘五毫;二十七日壬子,景七丈八尺五寸五分。以甲午、壬子景相减,复以辛亥、壬子景相减,准前法求之,亦得癸卯日辰初三刻。至二十八日癸丑,景七丈八尺三寸四厘五毫,用壬子、癸丑二日之景与甲午景,准前法求之,亦合。此取至前后八九日景。
十一月初九(甲午日),日影长度是七丈八尺六寸三分五厘五毫;到二十六(辛亥日),日影长度是七丈八尺七寸九分三厘五毫;二十七(壬子日),日影长度是七丈八尺五寸五分。用甲午和壬子这两天的影长相减,再用辛亥和壬子的影长相减,然后按之前的方法推算,得出癸卯日辰初三刻。到二十八(癸丑日),影长是七丈八尺三寸四厘五毫,用壬子和癸丑这两天的影长与甲午的影长,按之前的方法推算,结果也吻合。这是选取冬至前后八九天的日影来计算的。