否定之否定的演绎过程
昨天在一个颇有名气的公众号上看到一篇有关三国时人孟达的文章,说是身在房陵(今湖北房县)的魏国新城太守孟达在投靠曹魏多年后,在诸葛亮的劝说下又想重投蜀汉,诸葛亮写信告诫他要警惕驻扎在宛(南阳)的司马懿的突袭,孟达回信说:“宛去洛八百里,去吾一千二百里,(司马懿)闻吾举事,当表上天子,比相反覆,一月间也,则吾城已固,诸军足办。则吾所在深险,司马公必不自来;诸将来,吾无患矣。”(《晋书•宣帝纪》) 结果,愚蠢的孟达中了老谋深算的司马懿的缓兵之计,司马懿一方面写信稳住孟达,另一方面率军疾进,仅用八天时间即赶到房陵城下(很多文章都说是房陵,不过《晋书•宣帝纪》上说是上庸城),孟达猝不及防,仓促应战,结果兵败身死。文章最后得出的结论是:孟达的数学学的太好了,以此犯了轻敌大错,死不足惜。 读了这篇文章后,因为对里程比较敏感,于是找来地图一看,发现宛(南阳)到洛阳和房陵的直线距离并不太远,而且两者的路程差不太多,顿时心生疑问:《晋书》会不会把这个里程搞错了? 为解决这个疑惑,我查阅了《读史方舆纪要》,卷四十八“河南三”开头便说:河南府(府治洛阳)“南至南阳府三百里”。好家伙!这跟上面引用的《晋书•宣帝纪》中的数据“八百里”可是相去甚远啊!虽然三国时的里与《读史方舆纪要》中的明代里制并不相同(按三国承汉制,一里大约相当于今416米;明代的一里大约合今天的560米),但明代的三百里换算成三国时的里也只有400多里,这《晋书》的错误未免也太大了吧? 不过且慢,在地图上简单测算一下就会知道,这个“三百里”明显有误,很有可能是中华书局的编辑们校对时打了马虎眼,不小心弄错了!再仔细查阅《读史方舆纪要》中卷五十一中的南召县、汝州、鲁山县(三国时为鲁阳县)等条目,可以算出南阳至洛阳的路程为560里(明代里程,一里约合560米),换算成汉代里程(一里约为416米)大约为754里,这与《晋书•宣帝纪》中记载的八百里基本吻合。 再来看南阳至房陵的里程:据《读史方舆纪要》卷五十一中的邓州(对应三国魏穰县)条,卷七十九中的光化县(对应三国魏阴县)、谷城县(对应三国魏筑阳县)、房县(对应三国魏房陵)等条目,可以查得南阳至房陵的里程为五百八十里,换算成汉代里程大约为780里,按八百里计,与《晋书•宣帝纪》中记载的一千二百里确有较大的差距。

那么,这是不是说明《晋书•宣帝纪》中记载的这个数据有错呢?不一定。因为《晋书•宣帝纪》借孟达之口说出来的这个“一千二百里”,很有可能不是我们上面选择的最近的路线,而是绕道上庸(今竹山县)或襄阳的另外一条路线,这样一来,里程就会有所增加,再考虑到房陵(房县)位于山区,以及三国时的道路有可能比明代更迂回弯曲,所以《晋书•宣帝纪》上的记载估计并没有问题,唯一有问题的只是孟达的数学不是太好而是太差,视战争如儿戏,他只想到了自宛至房陵的常规道路的距离,却把里程最短的间道和兵贵神速的要义抛在了脑后,结果不仅误了投蜀的大事,还搭上了自己的性命。

(以上地图采自谭其骧主编《中国历史地图集》第三、第七册)