一種公式的交互式排版方法及系統的製作方法
2023-04-23 12:13:26 2
專利名稱:一種公式的交互式排版方法及系統的製作方法
技術領域:
本發明涉及一種公式的交互式排版方法及系統,屬於印刷排版技術領域。
背景技術:
目前,還沒有一種交互式排版公式的方法。現有技術中,排版公式主要採 用流式排版方法,在排版過程中不存在交互性。例如書版,通過編輯、執行代 碼的方式排版公式,如果修改公式,則需要修改代碼。而且,如果要熟練應用
它來排版公式需要熟知很多的BD註解命令,學習的難度很大。
發明內容
針對現有技術中存在的缺陷,本發明的目的是提供一種公式的交互式排 版方法及系統,該方法及系統能夠增強公式排版的交互性和易用性。
為了實現上述目的,本發明採用的技術方案如下
一種公式的交互式排版方法,該方法將公式按照樹狀結構進行排版,包 括以下步驟
(1) 獲得根節點的可編輯區域,所述根節點是指排版公式的焦點;
(2) 在根節點的可編輯區域內進行排版操作,所述排版操作包括增加、 修改、刪除可變數據和/或運算符;
(3 )在當前節點的可編輯區域進行排版操作的過程中,當子節點大小發 生變化時,通知該子結點的父節點,父節點根據其子節點大小調整其可編輯 區域大小,然後再向上一級父節點通知;這樣一級一級向上通知,每一級父 節點根據其子結點大小調整其可編輯區域大小,直到某一級父節點的子結點 大小沒有發生變化或者到達根節點;
(4)從子節點大小沒有發生變化的節點或者根節點開始, 一級一級向下 通知,調整其所有子結點的位置。如上所述的一種公式的交互式排版方法,該方法在排版前還包括才艮據運 算符的類型綁定可編輯區域,以及設置該運算符與可編輯區域之間的相對位 置關係和聯動關係。
如上所述的 一種公式的交互式排版方法,該方法在進行排版操作時將每 一步操作及操作的數據增量存儲在堆棧中。
如上所述的一種公式的交互式排版方法,其中,當刪除操作時,將該操 作加上一個刪除標誌;當恢復被刪除的操作時,將該操作的刪除標誌清除。
如上所述的一種公式的交互式排版方法,其中,將公式排版後,將公式 的數據頭部存儲成圖片格式。
一種公式的交互式排版系統,該系統包括用於管理輸入的可變數據和運 算符的數據管理模塊(12),用於將公式按照樹狀結構進行排版的排版模塊 (11),以及用於輸出和顯示排版後公式的輸出顯示模塊(13)。
如上所述的一種公式的交互式排版系統,其中,所述數據管理模塊(12) 包括用於管理輸入的各種數據以及輸入數據的屬性的可變數據管理器(123 ), 用於管理運算符和與其綁定的可編輯區域之間的位置關係和聯動關係的運算 符規則管理器(121),以及用於編輯與運算符號綁定的可編輯區域的數量、運 算符號與可編輯區域的相對位置關係、運算符號與可編輯區域的間隙、以及 其運算符號與可編輯區域的聯動關係運算符規則編輯器(122 )。
如上所述的一種公式的交互式排版系統,其中,所述輸出顯示模塊(13) 包括輸出子模塊(131)和顯示子模塊(132),所述輸出子模塊(131)和顯 示子模塊(132)被封裝在一起,公式的輸出和顯示使用同一接口,根據輸出 設備的不同進行切換。
如上所述的一種公式的交互式排版系統,該系統還包括用於與其他排版系統進行交互的交互模塊(14)。
本發明所述的方法,通過將公式按照樹狀結構進行排版,增強了公式排 版的交互性和易用性,並提高了公式排版的效果和效率。
圖1是本發明所述系統結構圖; 圖2是公式數據結構的UML圖; 圖3是運算符規則的UML圖; 圖4是本發明所述方法流程圖5是公式a + ^^的樹狀結構圖。 具體實施例方式
下面結合具體實施方式
和附圖對本發明進行詳細描述。 本發明的核心思想是將公式排版成一棵樹,即用樹狀結構表示公式。該
樹狀結構的基本元素為"區域",區域就是指能包含一定的內容,並且有自
己的大小和位置的對象。用這些區域組成一個樹狀結構的公式片段。
根據公式的特性,"區域"可以抽象出三種基本的類型可編輯區域、
運算符和可變數據。由這三個基本類型組成的樹狀結構就可把公式完全的表
示出來。
可編輯區域是用戶用來輸入數據的地方,運算符、可變數據都不具備這 個功能。 一切的輸入都在此進行。數的根一定是可編輯區域,因為只有它才 能接收輸入的數據,有了可編輯區域這個根才有接收數據的基礎。可編輯區 域相當於一個獨立的排版區域,它內部的內容的排版與其外部沒有直接的關 系。在該區域內可以實現任何複雜的排版,比如可以換行、改變對齊線等等。 可編輯區域也可以是子節點或父節點,但是不能自身進行嵌套,也就是自己 不能是自己的直接子節點,因為這樣沒有意義。
運算符是由運算符號本身和其綁定的可編輯區域組成。例如,根式由根 號、根號內可以輸入數據的可編輯區域和指數部分的可編輯區域組成。它本 身是一個帶有子節點的樹,只能是父節點或子節點,不能是根節點。圖3是運算符規則的靜態圖,描述了運算符(C-0perator)、可編輯區 域(C —EditRegion )、運算符規則類(C —OperatorRule )和運算符號
(C—OperatorSymbol )之間的關係。運算符(C — 0perator )聚合了其他三個。 而運算符規則類(C —OperatorRule)直接關聯可編輯區域(C —EditRegion ), 因為位置關係是由運算符規則類(C_0peratorRule)通過運算符規則數據解 析而來的,而運算符(C-0perator)只起到一個容器的作用。運算符號
(C—OperatorSymbol )則提供了能單獨選中運算符號的能力,比如把才艮號選 中設置成想要的顏色等。
可變數據是指輸入的各種數據,可以是字符、圖形和圖像等。它本身只 能是子節點。
圖2是公式的數據結構的UML圖。其中,I-Region是一個虛基類,接口 I —EditRegion (可編輯區域)、I —Operator (運算符)、I—Variable (可變數據) 乂人它派生而來,而C-EditRegion、 C—0perator、 C—Variable是上述接口的實J見。
圖5是數學公式"+ ^^的樹狀結構示意圖。
2
數的根51是可編輯區域,"a"和"+"都是根可編輯區域的葉子,它們 是可變數據,不能有子節點。分式52也是根可編輯區域的子節點,但是它本 身還包含兩個可編輯區域。如果運算符不包含可編輯區域,那麼它就退化成 了一個可變數據。運算符本身又是一棵小樹。根式53是分式52的一個子節 點,由根號內可以輸入數據的可編輯區域和指數部分的可編輯區域組成。它的 子節點只能是可編輯區域,不能是其它類型。因為如果沒有可編輯區域,它便 不能接收數據和操作,交互的進行都是在可編輯區域進行的。
圖1出示了本發明所述公式的交互式排版系統的結構,主要包括用於管 理輸入的可變數據和運算符的數據管理模塊12,用於將公式按照樹狀結構進 行排版的排版模塊11,以及用於輸出和顯示排版後公式的輸出顯示模塊14。
數據管理模塊12包括可變數據管理器123、運算符規則管理器121和運算 符規則編輯器122。可變數據管理器123用於管理輸入的各種數據,例如字符、 圖形、圖像等,以及管理輸入數據的屬性,例如顏色和字體等。
運算符規則管理器121管理運算符和與其綁定的可編輯區域之間的位置 關係和聯動關係,例如與運算符綁定的可編輯區域的位置、個數、對齊方式和與運算符的間隙等。運算符規則管理器121採用運算符規則實現和數據分開 的機制,通過抽象運算符號的畫法,運算符綁定的可編輯區域的位置和個數、
對齊方式等組織數據。然後通過運算符規則管理器121統一生成,根據運算符 的類型向運算符規則管理器121要求相應的規則。因此運算符號只起到一個容 器的作用,能夠被單獨選中和編輯,從而增強了公式排版的效果。
運算符規則與數據分開有利於運算符規則的擴展,數據可以存在程序中或 者磁碟文件裡。同時,方便提供一個運算符規則編輯器122供用戶擴展新的運 算符。運算符規則編輯器122可以編輯與運算符號綁定的可編輯區域的數量、 運算符號與可編輯區域的相對位置關係、運算符號與可編輯區域的間隙、以
及其運算符號與可編輯區域的聯動關係等。使用運算符規則編輯器122可以修 改、增加和刪除運算符規則,而無需修改運算符規則管理器121的程序代碼。
排版模塊11是本發明所述系統的核心模塊,它能夠將公式排版成一顆樹。 圖4出示了排版模塊11排版公式的流程,主要包括以下步驟。
(1) 獲得根節點的可編輯區域,根節點是指排版公式的焦點,即排版公 式的起始點。
(2) 在根節點的可編輯區域內進行排版操作,其中,排版操作包括增加、 修改、刪除可變數據和/或運算符。
(3 )在當前節點的可編輯區域進行排版操作的過程中,當子節點大小發 生變化時,通知該子結點的父節點,父節點根據其子節點大小調整該父節點 的可編輯區域大小,然後再向上一級父節點通知。這樣一級一級向上通知,
每一級父節點根據其子結點大小調整該父節點的可編輯區域大小,直到某一 級父節點的子結點大小沒有發生變化或者到達根節點。
以排版數學公式"+ i^為例,如圖2所示。
假設當前可編輯區域是根號內的可編輯區域,輸入y後,根號的子節點 增大。由於子節點的增加、修改和刪除等會改變父節點的大小和位置,因此 需要通知其父節點根號,根號根據子節點大小調整其可編輯區域大小,再通 知其父節點分號。分號根據其子節點的大小調整其可編輯區域大小,再向上
通知,到達^f艮節點。
(4)從子節點大小沒有發生變化的節點或者根節點開始, 一級一級向下通知,調整其所有子結點的位置。
為了提高排版的效率,在進行排版操作時,釆用Undo (撤銷)/Redo (恢 復)機制,即將每一步操作增量存儲在堆棧中。增量由操作類型和操作的數 據組成。在編輯過程中,每做一步操作就記錄一個增量。比如添加一個字母 a,則在增量的前面寫上操作Add,後面寫上數據a。那麼在Undo的時候Add 對應的操作就是相反的,應該是Delete,要把添加的a刪除。而如果前面是 刪除字母a的話,那麼Undo的時候就應該Add字母a。修改的操作是不涉及 到添加和刪除的,只是把後面的數據更新就可以了。
在刪除的時候可以把刪除的節點加上一個刪除標誌,有刪除標誌的節點不 參與排版。在Redo的時候4巴刪除標誌清除即可,這樣可以增加排版的效率。在 記錄增量的時候數據也可以變得小一些,因為不用記錄刪除操作增量後面部分 的數據。
為了保證在不支持公式的排版系統(比如畫寫版等)裡也能應用本發明 所述系統排版後的公式,將公式數據的頭部存儲成圖片的格式,拷貝到剪貼 板上也是同樣的做法,這樣其他排版系統就可以把公式文件當成一個圖片打 開或者置入,可以跨不同的系統平臺實現拷貝粘貼。在存儲策略上,可以將 每個公式片段(即一個完整的公式)保存一個文件或者一段內存,方便應用 它的排版系統同其本身的保存相融合。
還可以將排版後公式轉換成XML文件,方便在網絡中應用,或者將它轉 換成流式的結構,從而同其它流式方法實現的公式排版軟體相聯繫。
輸出顯示模塊13包括輸出子模塊131和顯示子模塊132。輸出子模塊131 和顯示子模塊132被封裝在一起,公式的輸出和顯示使用同一接口 ,根據輸 出設備的不同進行切換。比如輸出PDF,輸出到屏幕、輸出到印表機等。針對 不同的圖形設備接口進行封裝,無論外部設備怎麼變,輸出的接口不變。
本發明所述系統可以單獨使用,也可以將其嵌入到其他排版系統中。在 其他排版系統排版時,如果需要排入公式,則可以通過SDK調用本發明所述系統進行排版公式操作。如果將本發明所述系統嵌入到其他排版系統中,則 該系統還包括一個交互模塊14,用於將其他排版系統的命令轉換成本發明所 述系統的命令。
本發明所述的方法及系統並不限於上述具體實施方式
,本領域的技術人 員根據本發明的技術方案得出的其他實施方式,同樣屬於本發明的技術創新 範圍。
權利要求
1. 一種公式的交互式排版方法,其特徵在於,所述方法將公式按照樹狀結構進行排版,包括以下步驟(1)獲得根節點的可編輯區域,所述根節點是指排版公式的焦點;(2)在根節點的可編輯區域內進行排版操作,所述排版操作包括增加、修改、刪除可變數據和/或運算符;(3)在當前節點的可編輯區域進行排版操作的過程中,當子節點大小發生變化時,通知該子結點的父節點,父節點根據其子節點大小調整其可編輯區域大小,然後再向上一級父節點通知;這樣一級一級向上通知,每一級父節點根據其子結點大小調整其可編輯區域大小,直到某一級父節點的子結點大小沒有發生變化或者到達根節點;(4)從子節點大小沒有發生變化的節點或者根節點開始,一級一級向下通知,調整其所有子結點的位置。
2. 如權利要求1所述的一種公式的交互式排版方法,其特徵在於所述 方法在排版前還包括根據運算符的類型綁定可編輯區域,以及設置該運算符 與可編輯區域之間的相對位置關係和聯動關係。
3. 如權利要求1所迷的一種公式的交互式排版方法,其特徵在於所述 方法在進行排版操作時將每一步操作及操作的數據增量存儲在堆棧中。
4. 如權利要求3所述的一種公式的交互式排版方法,其特徵在於當刪 除操作時,將該操作加上一個刪除標誌;當恢復被刪除的操作時,將該操作 的刪除標誌清除。
5. 如權利要求1至4之一所述的一種公式的交互式排版方法,其特徵在 於將公式排版後,將公式的數據頭部存儲成圖片格式。
6. —種公式的交互式排版系統,其特徵在於所述系統包括用於管理輸 入的可變數據和運算符的數據管理模塊(12 ),用於將公式按照樹狀結構進行 排版的排版模塊(11 ),以及用於輸出和顯示排版後公式的輸出顯示模塊(13)。
7. 如權利要求6所述的一種公式的交互式排版系統,其特徵在於所述 數據管理模塊(12)包括用於管理輸入的各種數據以及輸入數據的屬性的可變數據管理器(123),用於管理運算符和與其綁定的可編輯區域之間的位置關係和聯動關係的運算符規則管理器(121),以及用於編輯與運算符號綁定的可編輯區域的數量、運算符號與可編輯區域的相對位置關係、運算符號與可編 輯區域的間隙、以及運算符號與可編輯區域的聯動關係的運算符規則編輯器(122)。
8. 如權利要求6或7所述的一種公式的交互式排版系統,其特徵在於 所述輸出顯示模塊(13)包括輸出子模塊(131)和顯示子模塊(132),所述 輸出子模塊(131)和顯示子模塊(132)被封裝在一起,公式的輸出和顯示 使用同一接口,根據輸出設備的不同進行切換。
9. 如權利要求6或7所述的一種公式的交互式排版系統,其特徵在於 所述系統還包括用於與其他排版系統進行交互的交互模塊(14 )。
全文摘要
本發明公開了一種公式的交互式排版方法及系統,屬於印刷排版技術領域。現有的流式排版方法,在排版公式時不具有交互性。本發明將公式按照樹狀結構進行排版,在根節點的可編輯區域內進行排版操作。在當前節點的可編輯區域進行排版操作的過程中,當子節點大小發生變化時,通知該子節點的父節點,父節點根據其子節點大小調整可編輯區域大小,然後再向上一級父節點通知;這樣一級一級向上通知,每一級父節點根據其子節點大小調整可編輯區域大小,直到某一級父節點的子節點大小沒有發生變化或者到達根節點;最後從子節點大小沒有發生變化的節點或者根節點開始,一級一級向下通知,調整其所有子節點的位置。
文檔編號G06F17/30GK101436307SQ20081023967
公開日2009年5月20日 申請日期2008年12月15日 優先權日2008年12月15日
發明者楊雷鳴, 趙志剛 申請人:北大方正集團有限公司;北京北大方正電子有限公司