Saturday, August 23, 2014

屈原的『天問』:博文排版的進一步技術說明

我寫完博文:屈原的『天問』,之後,我打開喜馬拉雅的聲音,一邊聽,一邊看著原文。我這樣欣賞是因為原文中有許多古字,大多都不知曉,更不知道如何發音。利用現代技術,這真是一種非常暇意的學習欣賞。

我原以為每行的結尾標點符號為❓就是一個問題,但是很快我發現,原文有極少行中,一行中有兩個❓標點符號。如果按照問號標點符號作為標記來計數問題的話,那麼原來的方式是不對的。

我保留原來的計數,然後加一列的問題計數,這個計數是以❓為標記來計數的。

我是用蘋果的Numbers 軟件來進行計數的,技術比較複雜,這裡是我自己的小結收藏。

下面是我的Numbers sheet:




這裡以第二行為例,B-G的公式可以用於所有其它行。

準備公式


下面是一些為最後進行計數計算的準備公式:

D 公式(formula) 為:
RIGHT(A2)
該公式將A列中每行的最後一字符取出,列在D列。

E formula 為:
NOT(ISERROR(FIND("?", A2)))
FIND function是搜索函數,這裡用來搜索A列每行文字中的❓位置。如果該行沒有❓,結果是錯誤,即沒有找到。因此我必須再用NOT和ISERROR函數來判斷是否找到問號。TRUE為找到,FALSE為沒有。
F formula 為:
IF(D2="?", FIND("?", A2)<LEN(A2), FALSE)
該公式解釋為,如果D列中為❓:尋找A列該行最後❓中是否還有❓,否則為FALSE。

G formula 為:
IF(E2, IF(F2,  2, 1), "")
該公式根據E和F列的組合結果,得出:
  • E2內容為FALSE時(A2中最後一字符非❓),空白
  • E2內容為TRUE時(A2中最後一字符為❓):
    • F2內容為TRUE時(A2中有兩個❓),2
    • F2內容為FALSE時(A2中只有一個❓),1

計數公式


最後是兩個計數公式:

B formula 為:
IF(RIGHT(A2)= "?", COUNTIF(D$2:D2, "?"), "")
該公式以A列最後字符是否為❓來計數,其解釋為,如果A列最後一字符為❓:計數D列中的❓數目,否則為空白。
C formula 為:
IF(E2, SUM(G$2:G2), "")
該公式以A列最後字符是否為❓來計數,其解釋為,如果A列最後一字符為❓:累計G列中的❓計數數目,否則為空白。

結束語


當然,以上方法也許不是最好的解答。

但是我發現,Numbers中的邏輯公式OR(express1, express2,...)不是可短接的,即如果express1的結果為真,express2等等還是被繼續判斷。而IF(condition, expressT, expressF)是可短接的,即如果condition為真,僅expressT被用或被判斷,expressF是不被用或不被判斷的。因為我是學習探索Numbers的函數功能,因此我準備了數個公式這樣可以幫助列出我的思路。

根據❓來進行問題的計數,即使原文比較複雜,還是可以借助於程序或軟件讓電腦自動計數的。我記得有關屈原『天問』中的問題個數還是比較有爭議的,這也是我為何保持兩種計數,這樣就出現了兩個結果。編寫程序或用軟件來幫助我們進行一些準確和自動化工作,這是我喜愛,同時這也是一種非常好的大腦健身體育活動。

但是,如果問題不僅僅是根據❓這個標記,而且還要根據語義和上下銜接意思來判斷,我想目前的電腦技術則是無法進行判斷和計數的。這種情況下,也許還得靠專家的大腦進行讀解了。

參考


No comments:

Post a Comment