專利名稱:用于產(chǎn)生多欄版式的方法和計(jì)算機(jī)可讀介質(zhì)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明各實(shí)施例一般涉及文檔處理領(lǐng)域,尤其涉及文檔內(nèi)容的多欄版式領(lǐng)域。
背景技術(shù):
當(dāng)前的桌面排版和字處理應(yīng)用程序使用戶能創(chuàng)建復(fù)雜的文檔版式。例如,可創(chuàng)建包括文本、圖像、表格、腳注、尾注、內(nèi)嵌對象和實(shí)際上無窮的其它類型對象的文檔。文檔內(nèi)容也可以創(chuàng)建視覺上吸引人的文檔的方式來排列。例如,文本可圍繞在文檔中各類對象周圍來創(chuàng)建有吸引力的版式。此外,通過在多個豎直欄上排版文本和其它文檔對象,可以多個欄格式化文本。多欄文檔版式易于閱讀,通常用于報(bào)紙和雜志。
盡管先前的桌面和字處理應(yīng)用程序能夠創(chuàng)建具有多欄版式的文檔,但是這些先前的應(yīng)用程序受到其能力的極大限制。特別地,先前的應(yīng)用程序使用戶僅能指定應(yīng)在版式內(nèi)采用的欄數(shù)和每個欄的寬度。然后該應(yīng)用程序?qū)⑽臋n內(nèi)容呈現(xiàn)在指定數(shù)量的欄中。
更為復(fù)雜的多欄版式已為報(bào)紙和雜志行業(yè)長期采用。例如,已采用了標(biāo)題、副標(biāo)題、或引言跨多個欄的多欄版式。然而,這樣的復(fù)雜多欄版式通常是手工排版的,這是單調(diào)和費(fèi)時的過程。對于這樣的復(fù)雜多欄版式,當(dāng)前的字處理和桌面排版應(yīng)用程序需要用戶來手動定義該頁面版式。然后這些程序可將內(nèi)容格式化成手工定義的版式。然而,這些程序不能取得文檔的結(jié)構(gòu)元素的屬性和約束、計(jì)算內(nèi)容在各頁面之間的實(shí)際分布,并在每個頁面上自動排版內(nèi)容。
本發(fā)明的各個實(shí)施例就是參照這些和其它考慮而作出的。
發(fā)明內(nèi)容
根據(jù)本發(fā)明,以上和其它問題由用于產(chǎn)生多欄版式的計(jì)算機(jī)實(shí)現(xiàn)方法和計(jì)算機(jī)可讀介質(zhì)來解決。通過本發(fā)明各實(shí)施例,可創(chuàng)建復(fù)雜的多欄版式,諸如允許文檔內(nèi)容跨多個欄的版式。
根據(jù)本發(fā)明一方面,提供用于生成多欄版式的計(jì)算機(jī)實(shí)現(xiàn)方法。根據(jù)該方法,定義文檔的一部分的版式,它定義排版文檔內(nèi)容應(yīng)采用的欄數(shù)。該版式還標(biāo)識應(yīng)跨兩個或多個欄的一個或多個跨度(span)。例如,可定義包括四個欄的版式??蔀榭缛克膫€欄的標(biāo)題定義一跨度,可為跨三個欄的副標(biāo)題定義一跨度,還可為僅跨兩個欄的引言文本定義另一個跨度。
根據(jù)本發(fā)明各實(shí)施例,可將每個跨度區(qū)域定義為內(nèi)容限定跨度區(qū)域或高度限定跨度區(qū)域。內(nèi)容限定跨度區(qū)域允許內(nèi)容在跨度內(nèi)排版,直到達(dá)到內(nèi)容內(nèi)的限定點(diǎn)。這樣,可將內(nèi)容填充到特定跨度中,直到遇到限定點(diǎn)。這對例如標(biāo)題或副標(biāo)題是有用的。高度限定跨度區(qū)域允許內(nèi)容在跨度內(nèi)排版,直到內(nèi)容達(dá)到指定高度。這樣,可限定跨度的高度,并可在跨度中排版該內(nèi)容直到達(dá)到該高度。這對例如引言文本是有用的。
根據(jù)本發(fā)明的其它方面,對內(nèi)容限定的每個跨度區(qū)域的內(nèi)容進(jìn)行排版,直到達(dá)到內(nèi)容中的指定點(diǎn)。對高度限定的每個跨度區(qū)域排版內(nèi)容,直到達(dá)到該跨度的指定高度。當(dāng)已排版了全部的內(nèi)容限定和高度限定跨度時,任何剩余的內(nèi)容跨所有欄排版。特別地,剩余的內(nèi)容可以是跨所有欄欄間平衡的。
根據(jù)本發(fā)明其它實(shí)施例,提供一種排版管理器,它可操作來向諸如字處理應(yīng)用程序或桌面排版應(yīng)用程序的客戶機(jī)應(yīng)用程序提供內(nèi)容排版工具。該排版管理器可操作來從客戶機(jī)應(yīng)用程序接收對文檔中內(nèi)容的多欄版式的定義。該定義標(biāo)識應(yīng)在多欄版式內(nèi)采用的欄數(shù)。該定義還定義跨兩個或多個欄的一個或多個跨度。每個跨度還被定義為內(nèi)容限定的或高度限定的。
排版管理器還可操作來從客戶機(jī)應(yīng)用程序接收要在每個跨度中排版的內(nèi)容。該排版管理器對每個內(nèi)容限定跨度排版內(nèi)容,直到達(dá)到該內(nèi)容中的指定點(diǎn)。該排版管理器對每個高度限定跨度排版內(nèi)容,直到達(dá)到該跨度的指定高度。當(dāng)全部高度限定和內(nèi)容限定的跨度已由排版管理器排版之后,任何剩余的內(nèi)容在所有欄上排版。該剩余內(nèi)容可由排版管理器進(jìn)行欄間平衡。當(dāng)排版管理器已完成在所定義多欄版式內(nèi)排版內(nèi)容時,可向客戶機(jī)應(yīng)用程序返回排版結(jié)果用于顯示。
本發(fā)明可被實(shí)現(xiàn)為計(jì)算機(jī)進(jìn)程、計(jì)算系統(tǒng)、或諸如計(jì)算機(jī)程序產(chǎn)品或計(jì)算機(jī)可讀介質(zhì)的制造品。計(jì)算機(jī)程序產(chǎn)品可以是計(jì)算機(jī)可讀的、編碼用于執(zhí)行計(jì)算機(jī)進(jìn)程的指令的計(jì)算機(jī)程序的計(jì)算機(jī)存儲介質(zhì)。該計(jì)算機(jī)程序產(chǎn)品還可以是計(jì)算系統(tǒng)可讀的、編碼用于執(zhí)行計(jì)算機(jī)進(jìn)程的指令的計(jì)算機(jī)程序的載波上的傳播信號。
參閱以下詳細(xì)說明和附圖,表征本發(fā)明的這些和各個其它特征以及優(yōu)點(diǎn)將變得顯而易見。
圖1是示出本發(fā)明各個實(shí)施例中利用的、以及由這些實(shí)施例提供的計(jì)算機(jī)系統(tǒng)的計(jì)算機(jī)系統(tǒng)體系結(jié)構(gòu)圖;圖2是示出本發(fā)明各實(shí)施例中利用的若干軟件組件的各方面的軟件體系結(jié)構(gòu)圖;圖3和4是示出由本發(fā)明各實(shí)施例提供的若干多欄版式的屏幕圖;圖5-6是示出用于產(chǎn)生根據(jù)本發(fā)明各實(shí)施例的多欄版式的示例性過程的流程圖。
具體實(shí)施例方式
現(xiàn)在參看附圖,其中類似標(biāo)號表示類似元件,將描述本發(fā)明各方面和示例性操作環(huán)境。圖1和以下討論旨在提供一種本發(fā)明可在其中實(shí)現(xiàn)的適當(dāng)計(jì)算環(huán)境的簡要一般說明。盡管本發(fā)明將在結(jié)合運(yùn)行于個人計(jì)算機(jī)操作系統(tǒng)上的應(yīng)用程序執(zhí)行的程序模塊的一般上下文中進(jìn)行說明,本領(lǐng)域技術(shù)人員將理解本發(fā)明也可結(jié)合其它程序模塊實(shí)現(xiàn)。
通常,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)具體抽象數(shù)據(jù)類型的例程、程序、組件、數(shù)據(jù)結(jié)構(gòu)、以及其它類型的結(jié)構(gòu)。此外,本領(lǐng)域技術(shù)人員將理解本發(fā)明可在其它計(jì)算機(jī)系統(tǒng)配置中實(shí)踐,包括手持式裝置、多處理器系統(tǒng)、基于微處理器的或可編程的電器消費(fèi)品、小型計(jì)算機(jī)、大型計(jì)算機(jī)等等。本發(fā)明還可在任務(wù)由經(jīng)通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理裝置執(zhí)行的分布式計(jì)算環(huán)境中實(shí)踐。在分布式計(jì)算環(huán)境中,程序模塊可被置于本地和遠(yuǎn)程存儲器存儲設(shè)備中。
現(xiàn)在參看圖1,將描述用于實(shí)現(xiàn)本發(fā)明各實(shí)施例的計(jì)算機(jī)2的說明性計(jì)算機(jī)體系結(jié)構(gòu)。在圖1中所示的計(jì)算機(jī)體系結(jié)構(gòu)示出常規(guī)桌面或膝上型計(jì)算機(jī),包括中央處理單元5(“CPU”)、包括隨機(jī)存取存儲器9(“RAM”)和只讀存儲器11(“ROM”)11的系統(tǒng)存儲器7、以及將存儲器耦合到CPU 5的系統(tǒng)總線12。包含有助于如起動時在計(jì)算機(jī)元件間傳送信息的基本例程的基本輸入/輸出系統(tǒng)(BIOS)存儲在ROM 11中。計(jì)算機(jī)2還包括用于存儲操作系統(tǒng)16、應(yīng)用程序和其它程序模塊的大容量存儲裝置14,該大容量存儲裝置14將在下面進(jìn)行更詳細(xì)的描述。
大容量存儲裝置14通過連接到總線12的大容量存儲控制器(未示出)連接到CPU 5。大容量存儲裝置14及其相關(guān)聯(lián)計(jì)算機(jī)可讀介質(zhì)提供計(jì)算機(jī)2的非易失性存儲。盡管包含在此的計(jì)算機(jī)可讀介質(zhì)的描述指向諸如硬盤或CD-ROM盤的大容量存儲裝置,本領(lǐng)域技術(shù)人員應(yīng)理解計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī)2能訪問的任何可用介質(zhì)。
作為示例而非限制,計(jì)算機(jī)可讀介質(zhì)可包括計(jì)算機(jī)存儲介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲介質(zhì)包括以任何方法或技術(shù)實(shí)現(xiàn)、用于存儲諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的易失性和非易失性介質(zhì)、可移動和不可移動介質(zhì)。計(jì)算機(jī)存儲介質(zhì)包括但不限于RAM、ROM、EPROM、EEPROM、閃存或其它固態(tài)存儲器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其它光學(xué)存儲技術(shù)、磁盒、磁帶、磁盤存儲器或其它磁性存儲設(shè)備、或任何其它可用于存儲所需信息并可由計(jì)算機(jī)2訪問的介質(zhì)。
根據(jù)本發(fā)明各實(shí)施例,計(jì)算機(jī)2可使用諸如因特網(wǎng)的網(wǎng)絡(luò)18與遠(yuǎn)程計(jì)算機(jī)的邏輯連接在網(wǎng)絡(luò)化環(huán)境中操作。計(jì)算機(jī)2可通過與總線12連接的網(wǎng)絡(luò)接口單元20與網(wǎng)絡(luò)18相連。應(yīng)理解,網(wǎng)絡(luò)接口單元20也可被用于與其它類型的網(wǎng)絡(luò)和遠(yuǎn)程計(jì)算機(jī)系統(tǒng)相連。計(jì)算機(jī)2還可包括輸入/輸出控制器22,用于接收和處理來自包括鍵盤、鼠標(biāo)或電子筆(未在圖1示出)的眾多裝置的輸入。類似地,輸入/輸出控制器22可提供對顯示屏、打印機(jī)、或其它類型的輸出裝置的輸出。
如上簡述,眾多程序模塊和數(shù)據(jù)文件可被存儲于計(jì)算機(jī)2的大容量存儲裝置14和RAM 9中,包括適于控制網(wǎng)絡(luò)化個人計(jì)算機(jī)的操作系統(tǒng)16,諸如來自華盛頓州雷蒙德市微軟公司的Windows操作系統(tǒng)。大容量存儲裝置14和RAM 9還可存儲一個或多個程序模塊。特別地,大容量存儲裝置14和RAM 9可存儲字處理應(yīng)用程序10。如本領(lǐng)域技術(shù)人員所眾所周知的,字處理應(yīng)用程序10可操作來提供用于創(chuàng)建和編輯諸如文檔24的電子文檔的功能。根據(jù)本發(fā)明一實(shí)施例,字處理應(yīng)用程序10包括來自微軟公司的MICROSOFT WORD字處理應(yīng)用程序。然而,應(yīng)理解,可利用來自其它制造商的其它字處理應(yīng)用程序來體現(xiàn)本發(fā)明的各個方面。還應(yīng)理解,執(zhí)行文檔排版功能的其它類型的應(yīng)用程序可用于本發(fā)明的各方面。例如,本發(fā)明的各個實(shí)施例可用于桌面出版程序、演示程序、web瀏覽器、以及在文檔頁面上排版內(nèi)容的任何其它類型程序。
結(jié)合字處理文檔的編輯,字處理應(yīng)用程序10提供用于使用戶能創(chuàng)建多欄版式的功能。特別地,用戶將文檔24的一部分或文檔24的適當(dāng)組件(sub-part),諸如表、文本框、腳注區(qū)或其它部分,定義成被格式化成多個欄。然后字處理應(yīng)用程序10可操作以將文檔的該部分按需格式化成多欄格式。字處理應(yīng)用程序10可與排版管理器26通信,以幫助文檔24的格式化。如以下要更詳細(xì)描述的,排版管理器26向字處理應(yīng)用程序10和在計(jì)算機(jī)2上執(zhí)行的任何其它程序提供排版服務(wù)。特別地,排版管理器26從諸如字處理應(yīng)用程序10的客戶機(jī)應(yīng)用程序接收對多欄版式和應(yīng)排版內(nèi)容的描述。作為響應(yīng),排版管理器26生成適當(dāng)?shù)陌媸?,并將該版式返回給客戶機(jī)應(yīng)用程序用于顯示。有關(guān)排版管理器26的操作的其它細(xì)節(jié)將參照圖2-6提供。
現(xiàn)在參看圖2,將提供有關(guān)諸如字處理應(yīng)用程序10的客戶機(jī)應(yīng)用程序與排版管理器26之間交互的其它細(xì)節(jié)。如上簡述,排版管理器26向應(yīng)用程序10提供文檔排版服務(wù)。特別地,應(yīng)用程序10可與排版管理器26通信,以請求存儲在后備存儲器34中的文檔24的各部分的排版。為便于與排版管理器26通信,應(yīng)用程序10可實(shí)現(xiàn)在圖2中被示為回調(diào)代碼32的一個或多個回調(diào)例程。通過使用回調(diào)代碼32,排版管理器26可向應(yīng)用程序10查詢排版文檔各部分所必須的附加信息。
如以下將要更詳細(xì)地描述的,排版管理器26提供用于以若干復(fù)雜多欄格式來排版內(nèi)容的工具。排版管理器26響應(yīng)于來自應(yīng)用程序10的以多欄格式排版內(nèi)容的請求來提供這些工具。應(yīng)用程序10的文檔管理器30可與排版管理器26通信,來請求以多欄格式排版內(nèi)容。文檔管理器30可向排版管理器26提供格式定義,它描述要在多欄格式中采用的欄數(shù)。該文檔管理器30還可向排版管理器26標(biāo)識要包括在該格式中的一個或多個跨度。每個跨度可跨一個或多個欄。
文檔管理器30還可將每個跨度定義為高度限定或內(nèi)容限定的。內(nèi)容限定的跨度區(qū)域允許內(nèi)容在跨度內(nèi)排版,直到達(dá)到內(nèi)容內(nèi)的限定點(diǎn)。高度限定的跨度區(qū)域允許內(nèi)容在跨度內(nèi)排版,直到內(nèi)容達(dá)到指定高度。有關(guān)高度和內(nèi)容限定跨度的其它細(xì)節(jié)將參照圖3和4提供。
文檔管理器30還可向排版管理器26提供來自文檔的應(yīng)當(dāng)排版成多欄格式的文本和其它內(nèi)容。文檔管理器30開始時可向排版管理器26提供部分內(nèi)容。然后排版管理器26可從回調(diào)代碼32請求排版多欄格式所需的附加內(nèi)容。文檔管理器30還可向排版管理器26指明要排版的文本樣式。例如,文檔管理器30可向排版管理器26指明排版文本所需的字體樣式、大小和其它信息。
一旦排版管理器26以所述方式將內(nèi)容排版成多欄格式,格式化結(jié)果36就被傳遞回文檔管理器30。響應(yīng)于接收格式化結(jié)果36,文檔管理器30可操作來更新由應(yīng)用程序10維護(hù)的顯示樹38?;趯υ擄@示樹38的改變,應(yīng)用程序10可更新其呈現(xiàn)輸出40,以向用戶顯示格式化結(jié)果。應(yīng)理解,顯示樹38的使用僅僅是說明性的,并可采用其它用于更新格式化結(jié)果的顯示的方法。有關(guān)應(yīng)用程序10和排版管理器26的操作的附加細(xì)節(jié)如下參照圖3-6提供。
現(xiàn)在參看圖3,將描述示出由本發(fā)明各實(shí)施例提供的一個多欄版式的屏幕圖。如圖3所示,提供了跨多個欄的示例性多欄版式42A。具體來說,該示例性多欄版式42A跨四個欄44A-44D。圖3中所示的該多欄版式42A還包括若干跨度46A-46C。每一個跨度46A-46C都可以是高度或內(nèi)容限定的。例如,跨度46A是內(nèi)容限定的,因而允許標(biāo)題位于全部四個欄44A-44D的頂部??缍?6B也是內(nèi)容限定的,從而允許副標(biāo)題跨三個欄44A-44C顯示??缍?6C是高度限定的,從而提供了將剩余的內(nèi)容導(dǎo)入各欄44A-44D排版的文本。如圖3所示,剩余的內(nèi)容可排版成欄44A-44D。該剩余內(nèi)容還可以是欄間均衡的,從而使各欄即使有不同高度,卻仍然在幾乎同一位置結(jié)束。
現(xiàn)在參看圖4,將描述示出由本發(fā)明各實(shí)施例提供的一個多欄版式的屏幕圖。如圖4所示,提供了跨兩個欄44E和44F的示例性多欄版式42B。在該示例中,只定義了跨兩個欄44E和44F的一個跨度46D。該跨度46D已被定義為高度限定跨度。具體來說,跨度46D的高度48已由客戶機(jī)應(yīng)用程序指定。如下詳細(xì)描述地,排版管理器26將把內(nèi)容排版到跨度46D中,直到內(nèi)容達(dá)到指定高度48。該排版管理器26然后將轉(zhuǎn)而將內(nèi)容呈現(xiàn)到列44E和44F中。如以上參照圖3描述的示例,排版管理器26可使剩余內(nèi)容在欄間均衡,以確保欄44E和44F在幾乎同一位置結(jié)束。應(yīng)理解,字體會在版式從一個欄轉(zhuǎn)換成多個欄的位置上改變。
應(yīng)當(dāng)理解,圖3和4所示的多欄版式僅僅是說明性的,且利用本發(fā)明各實(shí)施例的其它組合也是可能的。例如,可采用任何數(shù)量的列,可指定不相等的欄寬,并可對本領(lǐng)域技術(shù)人員眾所周知的各個版式作修改。
現(xiàn)在參看圖5,將描述示出用于產(chǎn)生多欄版式的過程的說明性例程500。應(yīng)理解,盡管在此所述的本發(fā)明各實(shí)施例被描述為由排版管理器26執(zhí)行,但本發(fā)明的各方面可直接用于執(zhí)行頁面排版功能的應(yīng)用程序。例如,在此所述的本發(fā)明各實(shí)施例可直接由字處理應(yīng)用程序10執(zhí)行。
當(dāng)參閱在此所示例程的討論時,應(yīng)理解本發(fā)明各實(shí)施例的邏輯操作被實(shí)現(xiàn)為(1)運(yùn)行于計(jì)算系統(tǒng)上的計(jì)算機(jī)實(shí)現(xiàn)動作或程序模塊序列和/或(2)計(jì)算系統(tǒng)中相互連接的機(jī)器邏輯電路或電路模塊。實(shí)現(xiàn)是取決于實(shí)現(xiàn)本發(fā)明的計(jì)算系統(tǒng)性能要求所作的選擇。因此,如圖5-6所示的以及組成在此所述的本發(fā)明各實(shí)施例的邏輯操作可被分別稱為操作、結(jié)構(gòu)化裝置、動作或模塊。本領(lǐng)域技術(shù)人員將理解,這些操作、結(jié)構(gòu)化裝置、動作和模塊可用軟件、固件、專用數(shù)字邏輯、及其任意組合來實(shí)現(xiàn)而不背離本發(fā)明精神和范圍,如在此陳述的權(quán)利要求所述。
例程500從操作502開始,其中排版管理器26從客戶機(jī)應(yīng)用程序中獲得多欄版式的基本屬性的描述。例程500然后繼續(xù)到操作504,其中客戶機(jī)應(yīng)用程序描述對基本數(shù)量欄的更改。具體來說,客戶機(jī)應(yīng)用程序描述應(yīng)該用于多欄版式內(nèi)的跨度。對于每個跨度,客戶機(jī)應(yīng)用程序還指示該跨度應(yīng)是內(nèi)容限定還是高度限定的。如果跨度是內(nèi)容限定的,則客戶機(jī)應(yīng)用程序指示內(nèi)容中呈現(xiàn)到跨度應(yīng)停止的特定點(diǎn)。如果跨度是高度限定的,則客戶機(jī)應(yīng)用程序指示跨度的特定高度。然后例程500從操作504繼續(xù)到操作506。
在操作506,客戶機(jī)應(yīng)用程序向排版管理器26指示排版該內(nèi)容所需的任何其它參數(shù)。例如,包括字樣和字體大小的內(nèi)容樣式可由客戶機(jī)應(yīng)用程序指定。然后例程500繼續(xù)到操作508,其中排版管理器26從第一跨度開始以多欄格式開始排版該內(nèi)容。具體來說,在操作526,排版管理器26確定當(dāng)前跨度是否是內(nèi)容限定跨度。如果當(dāng)前跨度是內(nèi)容限定跨度,則例程500分支到操作512,其中排版管理器26在當(dāng)前跨度中排版內(nèi)容直到該跨度結(jié)束。一旦跨度結(jié)束,例程500就繼續(xù)到操作514,其中確定是否還有其它內(nèi)容限定跨度存在。如果還存在其它內(nèi)容限定跨度,則例程500分支回操作512,其中排版下一內(nèi)容限定跨度。如果不存在其它內(nèi)容限定跨度,則例程500繼續(xù)到操作516,如下所述。
如果在操作526,排版管理器26確定當(dāng)前跨度并非是內(nèi)容限定跨度,則例程500從操作526繼續(xù)到操作516。在操作516,排版管理器26確定是否存在任何高度限定跨度。如果存在一個或多個高度限定跨度,則例程500分支到操作524。在操作524,排版管理器26用內(nèi)容填充當(dāng)前跨度,直到達(dá)到所需高度。一旦達(dá)到了所需高度,例程500就繼續(xù)到操作525,其中確定是否還有其它高度限定跨度存在。如果還存在其它高度限定跨度,則例程500分支回操作524,其中排版下一高度限定跨度。如果不存在其它高度限定跨度,則例程500繼續(xù)到操作518,如下所述。
如果在操作516,排版管理器26確定不存在高度限定跨度,則例程500繼續(xù)到操作518,其中排版管理器26將剩余的內(nèi)容排版到各個欄中。在一實(shí)施例中,排版管理器26使剩余內(nèi)容欄間均衡。以下參照圖6描述用于使剩余內(nèi)容欄間均衡的說明性例程600。從操作518,例程500繼續(xù)到操作520,其中格式化結(jié)果從排版管理器26返回到客戶機(jī)應(yīng)用程序用于顯示。然后例程500繼續(xù)到操作522,在那里該例程結(jié)束。
在操作524,確定是否還有要排版的其它跨度。如果有其它跨度要排版,則例程500分支到操作510,其中處理下一跨度。具體來說,下一跨度以上述方式在操作526、512、514、516、518、520和524上處理。該過程繼續(xù)直到?jīng)]有其它跨度要處理。
應(yīng)理解,圖5中所示的算法在排版高度限定跨度之前排版內(nèi)容限定跨度。這是基于許多雜志和報(bào)紙都以該方式排版的事實(shí)的設(shè)計(jì)選擇。然而,根據(jù)本發(fā)明各實(shí)施例,高度限定跨度可在內(nèi)容限定跨度之前排版,且若干類型的跨度可混合。
現(xiàn)在參照圖6,將描述用于在指定欄中使內(nèi)容欄間均衡。例程600從操作602開始,其中排版管理器26估計(jì)排版剩余內(nèi)容所需的各欄的豎直尺寸。具體來說,排版管理器26以使每欄中的內(nèi)容在幾乎同一點(diǎn)上結(jié)束的方式,估計(jì)排版剩余內(nèi)容所需的各欄的豎直尺寸。
一旦排版管理器26估計(jì)了各欄尺寸,例程600就繼續(xù)到操作604,其中排版管理器26將剩余內(nèi)容排版到各估計(jì)尺寸的欄中。例程600然后繼續(xù)到操作606,其中確定剩余內(nèi)容是否能置入各估計(jì)尺寸的欄中。如果剩余內(nèi)容不能置入,則例程600分支到操作608,其中略為增大各欄的估計(jì)尺寸。然后例程600繼續(xù)到操作611,其中再次確定是否能置入內(nèi)容。如果內(nèi)容不能置入,則例程600分支回操作608,其中再次增大各欄的高度。如果內(nèi)容能置入,則例程600繼續(xù)到操作610,如下所述。
如果在操作606,排版管理器26確定剩余的內(nèi)容能置入各估計(jì)尺寸的欄中,則例程600繼續(xù)到操作605,其中減小最短行的高度。然后例程600繼續(xù)到操作603,其中確定所有內(nèi)容是否能置入該頁面。如果內(nèi)容能置入,則例程600返回到操作605,其中再次減小最短行的高度。如果內(nèi)容不能置入,則例程600繼續(xù)到操作607,其中能置入所有內(nèi)容的前一版式被用作最后的版式。從操作607,例程600繼續(xù)到操作610,其中內(nèi)容由排版管理器26排版到各估計(jì)尺寸的欄中。然后例程600繼續(xù)到操作612,其中它返回到如上參照圖5所述的操作522。
基于前述內(nèi)容,應(yīng)當(dāng)理解本發(fā)明各實(shí)施例包括用于產(chǎn)生多欄版式的方法、系統(tǒng)、裝置和計(jì)算機(jī)可讀介質(zhì)。還應(yīng)理解,在此所述的本發(fā)明各實(shí)施例還可用于提供不同于頁面的其它類型元素內(nèi)的多欄版式。例如,多欄版式可在章節(jié)、文本框、表單元和腳注內(nèi)產(chǎn)生。
以上說明書、示例和數(shù)據(jù)提供了對本發(fā)明組成的制造和使用的完整描述。因?yàn)榭勺鞒霰景l(fā)明的許多實(shí)施例而不背離本發(fā)明的精神和范圍,本發(fā)明駐留于此后所附的權(quán)利要求中。
權(quán)利要求
1.一種用于產(chǎn)生多欄版式的計(jì)算機(jī)實(shí)現(xiàn)的方法,所述方法包括定義文檔的一部分的版式,所述版式包括兩個或多個欄以及跨兩個或多個欄的一個或多個跨度,其中每個跨度被定義為是內(nèi)容限定的或高度限定的;在定義為高度限定的每個跨度中排版來自文檔的內(nèi)容,直到達(dá)到跨度的指定高度;以及在定義為內(nèi)容限定的每個跨度中排版來自文檔的內(nèi)容,直到達(dá)到內(nèi)容中的指定點(diǎn)。
2.如權(quán)利要求1所述的方法,還包括確定內(nèi)容是否已在定義為內(nèi)容限定或高度限定的所有跨度中排版;以及響應(yīng)于確定內(nèi)容已在所有內(nèi)容限定或高度限定的跨度中排版,將內(nèi)容的剩余部分跨所有欄進(jìn)行排版。
3.如權(quán)利要求2所述的方法,其特征在于,將內(nèi)容的剩余部分跨所有欄進(jìn)行排版包括使內(nèi)容的剩余部分跨所有欄進(jìn)行欄間均衡。
4.如權(quán)利要求3所述的方法,其特征在于,客戶機(jī)應(yīng)用程序定義版式和跨度,且其中排版管理器排版內(nèi)容,并將排版結(jié)果返回給客戶機(jī)應(yīng)用程序。
5.一種具有存儲其上的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì),所述計(jì)算機(jī)可執(zhí)行指令在由計(jì)算機(jī)執(zhí)行時將使所述計(jì)算機(jī)定義文檔的一部分的版式,所述版式包括兩個或多個欄以及跨兩個或多個欄的一個或多個跨度,其中每個跨度被定義為是內(nèi)容限定的或高度限定的;在定義為高度限定的每個跨度中排版來自文檔的內(nèi)容,直到達(dá)到跨度的指定高度;以及在定義為內(nèi)容限定的每個跨度中排版來自文檔的內(nèi)容,直到達(dá)到內(nèi)容中的指定點(diǎn)。
6.如權(quán)利要求5所述的計(jì)算機(jī)可讀介質(zhì),還具有存儲其上的計(jì)算機(jī)可執(zhí)行指令,所述計(jì)算機(jī)可執(zhí)行指令在由計(jì)算機(jī)執(zhí)行時將使所述計(jì)算機(jī)確定內(nèi)容是否已在定義為內(nèi)容限定或高度限定的所有跨度中排版;以及響應(yīng)于確定內(nèi)容已在所有內(nèi)容限定或高度限定的跨度中排版,將內(nèi)容的剩余部分跨所有欄進(jìn)行排版。
7.如權(quán)利要求6所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,將內(nèi)容的剩余部分跨所有欄進(jìn)行排版包括使內(nèi)容的剩余部分跨所有欄進(jìn)行欄間均衡。
8.如權(quán)利要求7所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,客戶機(jī)應(yīng)用程序定義版式和跨度,且其中排版管理器排版內(nèi)容,并將排版結(jié)果返回給客戶機(jī)應(yīng)用程序。
9.一種用于產(chǎn)生多欄版式的計(jì)算機(jī)實(shí)現(xiàn)的方法,所述方法包括提供一種排版管理器,所述排版管理器可操作來從客戶機(jī)應(yīng)用程序接收文檔內(nèi)內(nèi)容版式的定義,所述版式包括兩個或多個欄以及跨兩個或多個欄的一個或多個跨度,且其中每個跨度被定義為是內(nèi)容限定的或高度限定的,所述排版管理器可操作來接收來自所述客戶機(jī)應(yīng)用程序的對根據(jù)所述定義排版來自文檔的內(nèi)容的請求;且其中所述排版管理器還可操作來在定義為高度限定的每個跨度中排版來自文檔的內(nèi)容直到達(dá)到跨度的指定高度,在定義為內(nèi)容限定的每個跨度中排版來自文檔的內(nèi)容直到達(dá)到內(nèi)容中的指定點(diǎn),并將版式返回給所述客戶機(jī)應(yīng)用程序。
10.如權(quán)利要求9所述的方法,其特征在于,所述排版管理器還可操作來確定內(nèi)容是否已在定義為內(nèi)容限定或高度限定的所有跨度中排版;以及響應(yīng)于確定內(nèi)容已在所有內(nèi)容限定或高度限定的跨度中排版,將內(nèi)容的剩余部分跨所有欄進(jìn)行排版。
11.如權(quán)利要求10所述的方法,其特征在于,將內(nèi)容的剩余部分跨所有欄進(jìn)行排版包括使內(nèi)容的剩余部分跨所有欄進(jìn)行欄間均衡。
全文摘要
提供用于產(chǎn)生多欄版式的方法和計(jì)算機(jī)可讀介質(zhì)。根據(jù)該方法,定義包括兩個或多個欄以及跨兩個或多個欄的一個或多個跨度的版式。每個跨度被定義為是內(nèi)容限定的或高度限定的。來自文檔的內(nèi)容在高度限定的每個跨度中排版,直到達(dá)到指定高度。來自文檔的內(nèi)容在內(nèi)容限定的每個跨度中排版,直到達(dá)到內(nèi)容中的指定點(diǎn)。當(dāng)已排版全部內(nèi)容或高度限定跨度時,內(nèi)容的剩余部分跨所有欄進(jìn)行排版。
文檔編號G06F17/25GK1794223SQ20051012679
公開日2006年6月28日 申請日期2005年11月18日 優(yōu)先權(quán)日2004年12月20日
發(fā)明者A·布拉谷, S·根基姆, E·科亨, V·E·科茲勒弗, A·A·蘇克哈諾夫, I·茲福勒夫 申請人:微軟公司