《永乐大典》算书编纂逻辑
2023-02-01王浩霖
王浩霖,吕 鹏
(上海交通大学 科学史与科学文化研究院,上海 200240)
1 问题的提出
《永乐大典》是永乐皇帝朱棣下令编纂的一部大型官修类书。正文共22 877卷,目录60卷,分装11 095册,是中国古代最大的类书[1]。《永乐大典》成书时仅有一正本,嘉靖皇帝命令重录副本(正副本成书相距159年)。然而正本副本均历经流失散佚,如今大典正本不得,副本也仅余原书4%左右[1]7。清乾隆时期开四库馆时大量利用了《大典》中的资料,这使后代学者们对其编纂人物及流程、辑佚书志内容、副本情况能够得以了解和研究。作为类书,《永乐大典》最珍贵之处或许就在于直录原文、保存资料,因此存在卷帙浩繁、内容散落的特点。
本文所关注的“《永乐大典》算书”指现存副本《永乐大典》十翰韵中算字部下的一册两卷算书(简称为《大典》算书),现藏于剑桥大学图书馆。算字部下自卷一六三二九至卷一六三六四,共三十六卷,现存《大典》算书为其中卷一六三四三与卷一六三四四,分别题为“异乘同除”与“少广”。这部分内容在《大典》全书虽占比不高,却几乎全面收录了明初及明代以前相关中国古代算学的善本和奇本,部分内容只在《永乐大典》中被收录,因此更显珍贵[2]。虽戴震(1724—1777)等于乾隆三十八年(1773年)后陆续辑佚出其中所引算书[3],使后世学者得以了解其中具体内容,但原书版本样式不得见。中华书局1986年所刊《永乐大典》在第一册的书影说明中提到《大典》副本原书中“边框、行线、引用书名、中缝诸字及断句圈声之小圆圈,都是红色”[4],但书影以黑白印刷;2017年10月国家图书馆出版社仿照原本样式出版了《英国剑桥大学图书馆藏〈永乐大典〉》,其中包含这两卷算书。本研究主要依据剑桥大学图书馆公布的《大典》副本影像[5],因原书的文本样式特征对研究亦有助力①本文未将严敦杰先生(1917—1988)所判定《诸家算法》为“斤称”一卷纳入研究范围,因其经过传抄,文本特征已与《大典》不同。。
《四库全书总目提要》中批评《大典》的编纂“割裂庞杂,漫无条理…与卷首凡例多不对应,殊乖编纂之体…既而求竣益迫,更不暇逐篇分析,而分隶以书名。故参差无绪,至于如此”[6]。由于《大典》副本难以得见,前辈学者如李俨(1892—1963)、钱宝琮(1892—1974)、郭书春等多利用戴震的辑录或中华书局影印本进行校勘、比对分析等,而对《大典》算书如上的内容呈现形式及其背后的编纂逻辑未见有详细探讨。本文在《大典》副本研读基础上,深入分析算法算题,并结合《永乐大典》的成书背景,以探寻《大典》算书的编纂者们究竟遵循了何种思路来编撰此书,并了解明代初期对中国传统数学的理解和继承情况。
图1 卷16343与卷16344首页(剑桥大学藏《永乐大典》嘉靖副本)Fig.1 Two first pages of Yong-lo ta-tien Vol 16343 and Vol 16344(transcript in Cambridge University)
2 从《永乐大典》成书背景看其编纂逻辑
2.1 明初的算学地位与人才培养
《中国数学史大系》第六卷对明初的数学教育情况作了梳理,洪武二年(1369年)将数学列为教育内容之一。次年又规定,乡试通过后加考“骑、射、书、算、律”[7]。洪武二十五年(1392年)《太祖实录》记载:“命学校生员,兼习射与书数之法…数习九章之法,务在精通,俟其科贡,兼考之。”[8]嘉靖三十六年(1557年)的《皇明太学志》中还做了追述:
原洪武二十五年所颁数法,凡生员每日务要习学算法,必由乘、因、加、归、除、减,精通《九章》之数。昔之善教者,经义治事,贵在兼通,曾谓律令数学,切于日用,可忽而不之学乎?[7]324
洪武时期算学不仅作为科举必备科目,还被归属经学之中,成为当时读书人的必读内容。《通原算法序》(洪武五年,1372年)记载:
至轩辕氏,九章之数出,而乘除加减于是乎备。后世又有所谓《张丘建》《夏侯阳》《缉古》《五曹》《五经》《周髀》《海岛》《数术(继)[记]遗》者,谓之九经,并《九章》为十经…人生八岁,入小学,则诵其文,比其长也,习其法,以济诸用。…方今分教设科,一循古制,数之所系尤为不轻,俾通原之法得行于时,岂曰小补之哉。[9]
清代张廷玉《明史》艺文志:“杨廉缀算举例一卷…杨辉九章一卷。已上书数。右小学类一百二十三部一千六十四卷。”[10]
由此可见,明初对于学习算学知识是相当重视的,因算学贵在实用,并将十部算经归于经部小学类之中,这直到清代初期还有所反映。《永乐大典》编纂之时,大典馆中人才济济,通晓算学的不在少数,自大典馆开馆之时即开始编纂算字部是正常的。《大典》算书可以反映明初精通算学的编纂者整体数学水平,还可体现当时数学教育中对《九章》算法和实用算法的重视。
2.2 《永乐大典》编纂和重录
对于《大典》的编纂过程和编纂人物,前辈学者已有考述①如郭伯恭所著《永乐大典考》、王重民所著《〈永乐大典〉的编纂及其价值》、顾立仁所著《永乐大典及其辑佚书研究》、张升所著《〈永乐大典〉流传与辑佚新考》等等。。明成祖永乐年间(1403—1424),朱棣即位后即提拔解缙为侍读,入文渊阁。1403年7月19日,朱棣下令解缙等编书,至1404年11月21日成,上赐名《文献大成》。但未能使朱棣满意,又增派姚广孝等人一同监修,永乐三年(1405年)正月在南京文渊阁开始重编《大典》,即大典馆开行。至永乐六年(1408年12月14日)全书告竣。朱棣赐名《永乐大典》并作序[11]。现存《大典》副本重录于嘉靖年间,重录工作自嘉靖四十一年(1562年)八月起至隆庆元年(1567年)四月止。嘉靖命大学士徐阶主持录副工作。徐阶翻阅正本感其编纂体例完备,不易修改,招募誊写人员,每人日抄三页来完成《大典》录副工作[12]。
《大典》的编纂方法大致如下:编纂者分别阅读文献,从中找出主题词,相关的材料就抄在此主题词下;然后,确定主题词中的入韵字;最后,将此字归入《洪武正韵》相应的韵部之中[1]5。
《大典》每字下所收内容大致排列情况:先列出字的训释,字体和大义;以下收入事目或事韵,涉及制度者先收,相关文献在该事目下从古及近排列;之后还有诗文、书名、地名、姓氏名等内容,均附上其名下原文内容。张升认为《大典》中大多数字是按照这一顺序编排内容的,但《大典》的编排不很严谨,例外情况也较多[1]6。
《大典》算书的一名纂修人员刘仕隆被后世记录。明代珠算家程大位在《算法统宗》中记载明代以来算学家和著书,其中有:“夫难题昉于永乐四年临江刘仕隆公偕内阁诸君预修《大典》,退公之暇编成难法,附于《九章通明》之后。”[13]
对刘仕隆的《九章通明算法》,程大位还写道:“永乐十二年,临江刘仕隆作《九章》而无乘除等法,后作难题三十三款。”[13]1418《中国数学史大系》指出参加《永乐大典》编纂工作的人员中有些是精通数学的数学家,而在数学部分编纂工作中,刘仕隆可能是主力[7]328-329。
刘仕隆的《九章通明算法》成书晚于《大典》算书,从程大位的评价来看,刘仕隆作为民间数学家,对《九章》算法十分熟练,甚至舍去乘除法等基础。可见永乐初期《大典》算书的编纂者们是精于算学且重视《九章算经》等算学经典的。《大典》算书的目录和内容都可以体现编纂者以《九章算经》作为算法顺序和溯源的编排方式。
项旋对《大典》副本署名页的人员做过分析,算书两卷涉及的“秦鸣雷在卷12506至卷16218均作为总校官,孙铤则在卷7378至卷7455均作为编修,还有其他卷后两人也有出现,应是随机分配给各馆分校官”[14]。从工作量和人员安排上看,重录不会影响其编纂逻辑。
3 从《大典》算书内容看编纂逻辑
3.1 算书目录
据灵石杨氏刊刻连筠簃丛书所收《永乐大典》目录六十卷记载,卷16329至卷16364均在算字部下,其中卷16329的标题为“算·事韻”,之后卷16330至卷16364分别为“算·算法一”至“算·算法三十五”。算法一“目录、起源”,算法二“乘法”,算法三“因法”,算法四“除法”,算法五“归法”,算法六“加法、减法”,算法七“九章总录”,算法八至十均为“方田”,算法十一“粟米”,算法十二、十三“衰分”,算法十四(卷16343)“异乘同除”,算法十五(卷16344)至十八“少广”,…算法三十“九章纂类”,算法三十一“端疋”,算法三十二“斤称”,算法三十三至三十五“杂法”,算法三十五“杂法”[4]508。这一目录排序不仅兼顾传统的《九章》分类,还明显加入宋元算书中算法编排特色,特别是杨辉著作的影响[15]。算书目录表明编纂者们努力整理了所收集的全部算书,记述算学起源和算书编目,将算法从基础到进阶应用排序,对“杂法”也做了归集。
现存两卷算书分别题为“异乘同除”和“少广”。其中“异乘同除”卷的开头部分所收算题为《九章算经》衰分章的后半部分,“少广”卷则以《九章算经》少广章的算题开始。结合目录中“衰分”卷在“异乘同除”卷之前,不难推测出“衰分”卷中收录了《九章算经》衰分章的前半部分,但由于编纂者认为“异乘同除”算法内容丰富,且应溯源至《九章算经》的衰分章,于是将“异乘同除”卷放在“衰分”卷与“少广”卷之间。编纂者在选择算法与算题时,既看重其算法源头和九章顺序,又吸收宋元时期新算法的内容,形成了《大典》算书的综合面貌。
3.2 算书样式
从现存的两卷算书来看,算书卷先写卷名和标题,随后记录算法条目并释义,条目下用红色字体记录引用书目,引用书目下内容均为算题,还有一些文字叙述属于引用书目内的注解原文和提要。卷末在最后一行再次复写一遍卷名。
每一独立算题提行书写,后面附答案和解法,有的题目有多个解法,还有后世算书对同一题目求解等情况,均在一道题目下记录。对于引用书目中的图画,也抄录其中。在抄录题目时,距框线两格书写,抄录答案时再退两格,抄录解法时仅退一格。算书中还出现有些算题没有解法而是引用别的书目中的解法作为代替,也可以依照编纂格式进行印证。这一样式沿袭了《九章算经》中的编纂方式,并吸收了宋元算书中对算法的细草和图示等内容。理解《大典》算书的样式,可以对其内容做更加清晰的掌握,且这种独特的样式,反映了编纂者对算书等材料的理解和重新组合。
3.3 算书内容
如今可见的算字部目录和两卷算书表明,《大典》算书的编纂方法如下:纂修们阅读算书,从中确定重要的算法,以算法为纲,搜寻其余算书中相关的算题;算法的出处和算题的出处都以红色的书名加以注明;最后以算法为序撮编成册,全部归到“算”字部下。
由目录可知,两卷算书中,“异乘同除”卷属于独立成卷,“少广”卷是属于“少广”部分的第一卷。两卷算书的内容风格有所区别,对编纂逻辑有验证作用。
3.3.1 算法及释义 算书的内容核心是算法,算法下面收集与之相关的算题。算法的解释,算题以及算题的解法、注文、图草等构成了这一册两卷算书的全部内容。具体来说,《永乐大典》算书卷一六三四三在“异乘同除”的篇名下实际共收录了“异乘同除”“和合差分”以及“三率分身”三种算法;而卷一六三四四“少广”则收录了“少广”“开方”两种算法。
算法释义是《大典》算书的特色,符合其作为类书的功能,即解释事目内容。编纂者引用算书中的材料对算法进行描述,首先表明了算法的出处,可以作为原算书的线索;同时可以作为阅读者对算法使用的步骤说明和提要;不同的算法释义的复杂程度不同,体现出编纂者对算法的难度认知有所差别。一段完整的算法释义贯穿了以下所收算题的精要,体现出编纂者对于算书材料的精确把握。
在“异乘同除”卷中,在第一种算法“异乘同除”四个字之后是一段歌诀,出自《详明算法》①歌曰:异乘同除法如何?物卖钱来做例儿。先下原钱乘只物,却将原物法除之。将钱买物互乘取,百里千斤以类推。算者留心能善用。一丝一忽不差池。。“和合差分”算法的释义也是引自《详明算法》中的一段歌诀②歌曰:差分和合法尤精。高价先乘共物情。却用都钱减今数。余留为实甚分明。别将二价也相减。用此余钱为法行。除了先为低物价。自余高价物方成。;“三率分身”算法无歌诀释义,但引用《杨辉摘奇算法》中的题目和注文解释了该算法的来源和解法③本无三分身之术。张丘建算经辨古通源。秪有细草。辉偶见写本有此题问。亦无成术。宜云三价中有一价。除出一位所得之数。其余二物共价。如双分身法求之。题有分子者通之。笔者将原书“细草辉。偶见”处句读移至“细草。辉偶见”,秪字,通秖,只有。。
对照《详明算法》原书,“异乘同除”“和合差分”并非接续在一起的[16],“三率分身”更是从《杨辉摘奇算法》中摘录出来,可见这一卷的三种算法是编纂者重新组合的。三种算法对应所求数的数量从一个增加到三个,其难度也是明显递增的,后两种算法是在“异乘同除”上加以深化,应对更加复杂的现实问题,三者算理是相通的。
在“少广”卷中,作为《大典》算书中少广四卷的第一卷,第一种算法“少广”算法是九章中的传统算法,因此编纂者中先收录了《九章算经》中的原文与注文,解释其做法,同时引用了明初《严恭通原算法》中对“丈、尺、平方、立方”的运用。
“开方”算法的释义文字十分详细,自该卷第五页第十一行到第七页第五行都是对该算法的释义,包括《杨辉摘奇算法》《杨辉详解》《杨辉纂类》《贾通全能集》和《丁巨算法》五种算书中对“开方”算法的做法记录,其中还包括了重要的“贾宪三角图”。
“开方”算法中,大小算法的差异十分明显,小算法的难度也是递增的。先有“开平方”(包含求圆周),再有“开立方”“开立圆”“开三乘方”。区分方法如前所述,是通过换行和提前引用书目的位置。同样的,“异乘同除”算法中也有一种小算法,在第三页第九行引用的“《杨辉摘奇算法》应用算法”即是对“异乘同除”类算题的一种替代解法,原文称为“以径乘代互换者、变换活法”。
3.3.2 引用书目与算题 两卷算书中一共引用算书16种。根据《中华大典·数学典》中《数学家与数学典籍分典》的记载对这十六种算书的作者与著录时间做一说明:《九章算经》汉代作者不详,《夏侯阳算经》作者不详①《数学家与数学典籍分典》第50页中记录《隋书》卷三十四《经籍志》有记载 《夏侯阳算经》二卷。[9]50,《五曹算经》北周甄鸾注[9]17,《杨辉摘奇算法》宋杨辉撰德祐元年(1275年)序,《丁巨算法》元至正十五年(1355年)丁巨撰,《严恭通原算法》明严恭撰洪武壬子年(1372年)赵瑀序,《秦九韶数学九章》宋秦九韶撰淳祐七年(1247年)序,《详明算法》元安止斋,何平子撰、《透簾细草》元佚名,《锦囊启源》元佚名,《杨辉日用算法》景定壬戌(1262年)序,《杨辉详解》②《杨辉详解》应是杨辉的《详解九章算法》。景定二年(1261年)序,《杨辉纂类》应系杨辉《详解九章算法》中《纂类》,《贾通全能集》元贾亨著③《数学家与数学典籍分典》第80页中记录《畴人传》卷二八《贾亨》 贾亨字季通,长沙人也。著《算法全能集》,二卷。[9]80,《孙子算经》疑似甄鸾撰,《五经算术》疑似甄鸾撰,唐代李淳风为两书作注,共同收入《算经十书》当中。引用书目的古今顺序大体可以分为以《九章算经》为首的“十经”、宋代算书、元代算书和明代算书。
在卷16343中第十一、十二页,《详明算法》的算题解法中出现了多次《透簾细草》和《丁巨算法》,卷16344中第十三页《透簾细草》的算题解法中出现《丁巨算法》,可知三种算书成书先后为《详明算法》最早,《透簾细草》次之,《丁巨算法》最晚。
在两卷算书中,不论是在算法释义的内容还是在不同类别的算题中,引用书目都按照成书时间先后从古到今排列,且经部算书(当时称“十经”)总在其他子部算书之前出现。这符合《永乐大典》凡例中第十四条规定的各经与诸子书的收录原则[1]25。
编纂者区分了同一引用书目中的不同类型算题,其标准在于算题的题干差异。新一类的算题编排时,仍要自各算书中采集,引用书目就会重复出现。这在“开方”算法中不同的小算法所收算题题干差异就十分明显。在“异乘同除”算法中因为算题驳杂,以卷16343中第6—8页所记算题为例说明:
《详明算法》元有米五石八斗四升。粜银四两三钱八分。今只有米一石七斗二升。问该银几何。
《丁巨算法》今有米七斗。直钞三两二钱四分八厘。若有米五石六斗八升。问直钞若干。…今有钞三两二钱四分八釐。糴米七斗。若有钞二十六两三钱五分五厘二毫。问得米多少。
《详明算法》元有银一两二钱九分。糴米一石七斗二升。今只有银四两三钱八分。问糴米几何。…今有罗…出关税之。… 问该罗几何。
《丁巨算法》今有布九千三百八十四疋。出关税之。每三十尺税布一尺。今共税讫三百一十三疋。却贴与客人钞一两七钱。问每疋价多少。
《详明算法》元有银一千七百二十八两。出关税之。九而取一。… 问该钞几何。
《透簾细草》今有客持银… 出关税之。九而取一。… 问买银多少。
这些算题被分为以《详明算法》中算题开始的三类[16]1372,“该银”与“直钞”相通,“得米”与“糴米”相通,“出关税之,九而取一”相通。因为《详明算法》成书早于《透簾细草》《丁巨算法》,所以每类算题中都以它为开头,实际上在《详明算法》中这些算题是连续的,通过题干中的关键词可以看出编纂者分类从后代算书中摘取算题的思路。
在算题难度排序上,不同算法间由易到难,在同一大算法下不同小算法也由易到难,同一小算法下题目也是由易到难。例如“异乘同除”算法下,最开始仅仅是最简单的“以一物易一物”,然后是求“二物二价”,再后算题中涉及应用更加广泛,囊括工程、交易、运输、本息等多个方面,包含的条件数量变成多项,题干明显更加复杂,但所求数为一个,其算法仍是一致的。这种由易到难的排序,反映出编纂者们对算书材料的理解和重组,目的是为了便于皇帝阅读理解。
“异乘同除”卷所收算法与算题的多样性和实用性,与《永乐大典》凡例中第一条规定的“贯通古今,本末精粗,粲然备列。开卷而古今之事一览可见”是相符合的。凡例第一条还规定“事有制度者,则先制度”,因此涉及“官田民田、耗米正米”的题目会在“和合差分”算法中提前呈现[1]16。
4 结论
本文研究“《永乐大典》算书编纂逻辑”,起于四库馆臣对大典编纂方式的批评,利用现存的剑桥大学藏《永乐大典》嘉靖副本卷一六三四三与卷一六三四四、《永乐大典》目录算字部、《永乐大典》凡例、《永乐大典》的研究者对大典编纂过程和人物考证成果并结合明初数学发展和教育背景,揭示《永乐大典》算书的编纂情况,并结合文本依据说明编纂者的编纂思路。
研究表明,在明初的算学教育背景下,《大典》算书是《永乐大典》中颇受重视的一部分,大典馆专门吸纳了民间数学家刘仕隆参与编纂,并广泛地搜集了算书材料。算字部所收事目即算法,各卷算书依其算法自成整体,同一卷中算法的算理相通。编纂者在《大典》凡例要求下进行工作,利用清晰的文本格式,严谨地标注红色引用书目,引用书目由古及今,经部在前子部在后,对算法进行历史溯源,收集相关算题,以算题题干为标准进行分类,并按由易到难编排。
《大典》算书展现出明初数学对传统数学的经典“十经”和宋元算书的继承情况几近全面。如严敦杰所言:“凡《文渊阁书目》算法类各算书,大致均已引用。”[17]并且编纂者按照《大典》凡例和自身理解重新组合这些算书以供皇帝阅读,算书编纂有序,绝非割裂庞杂之书。但碍于类书体裁,《大典》算书全篇摘录他书,未有编纂者新加内容,于是后世学者往往只看到其直录原文的辑佚作用,而忽视其自身编纂逻辑。
另一点是,《永乐大典》的编纂之后还有《五经大全》《四书大全》和《性理大全》三本大全问世。但这三本大全的核心作用在于确立程朱理学在明代学校教育和科举的地位,几乎没有算学及科学技术的内容[18],这直接打击了当时文人学习算学的积极性并受科举影响持续了数百年。若能结合当时文化背景,可对《大典》算书的编纂数学家群体,所收算书的影响等进行更多研究。