发明内容
根据本发明,以上和其它问题由用于产生多栏版式的计算机实现方法和计算机可读介质来解决。通过本发明各实施例,可创建复杂的多栏版式,诸如允许文档内容跨多个栏的版式。
根据本发明一方面,提供用于生成多栏版式的计算机实现方法。根据该方法,定义文档的一部分的版式,它定义排版文档内容应采用的栏数。该版式还标识应跨两个或多个栏的一个或多个跨度(span)。例如,可定义包括四个栏的版式。可为跨全部四个栏的标题定义一跨度,可为跨三个栏的副标题定义一跨度,还可为仅跨两个栏的引言文本定义另一个跨度。
根据本发明各实施例,可将每个跨度区域定义为内容限定跨度区域或高度限定跨度区域。内容限定跨度区域允许内容在跨度内排版,直到达到内容内的限定点。这样,可将内容填充到特定跨度中,直到遇到限定点。这对例如标题或副标题是有用的。高度限定跨度区域允许内容在跨度内排版,直到内容达到指定高度。这样,可限定跨度的高度,并可在跨度中排版该内容直到达到该高度。这对例如引言文本是有用的。
根据本发明的其它方面,对内容限定的每个跨度区域的内容进行排版,直到达到内容中的指定点。对高度限定的每个跨度区域排版内容,直到达到该跨度的指定高度。当已排版了全部的内容限定和高度限定跨度时,任何剩余的内容跨所有栏排版。特别地,剩余的内容可以是跨所有栏栏间平衡的。
根据本发明其它实施例,提供一种排版管理器,它可操作来向诸如字处理应用程序或桌面排版应用程序的客户机应用程序提供内容排版工具。该排版管理器可操作来从客户机应用程序接收对文档中内容的多栏版式的定义。该定义标识应在多栏版式内采用的栏数。该定义还定义跨两个或多个栏的一个或多个跨度。每个跨度还被定义为内容限定的或高度限定的。
排版管理器还可操作来从客户机应用程序接收要在每个跨度中排版的内容。该排版管理器对每个内容限定跨度排版内容,直到达到该内容中的指定点。该排版管理器对每个高度限定跨度排版内容,直到达到该跨度的指定高度。当全部高度限定和内容限定的跨度已由排版管理器排版之后,任何剩余的内容在所有栏上排版。该剩余内容可由排版管理器进行栏间平衡。当排版管理器已完成在所定义多栏版式内排版内容时,可向客户机应用程序返回排版结果用于显示。
本发明可被实现为计算机进程、计算系统、或诸如计算机程序产品或计算机可读介质的制造品。计算机程序产品可以是计算机可读的、编码用于执行计算机进程的指令的计算机程序的计算机存储介质。该计算机程序产品还可以是计算系统可读的、编码用于执行计算机进程的指令的计算机程序的载波上的传播信号。
参阅以下详细说明和附图,表征本发明的这些和各个其它特征以及优点将变得显而易见。
具体实施方式
现在参看附图,其中类似标号表示类似元件,将描述本发明各方面和示例性操作环境。图1和以下讨论旨在提供一种本发明可在其中实现的适当计算环境的简要一般说明。尽管本发明将在结合运行于个人计算机操作系统上的应用程序执行的程序模块的一般上下文中进行说明,本领域技术人员将理解本发明也可结合其它程序模块实现。
通常,程序模块包括执行特定任务或实现具体抽象数据类型的例程、程序、组件、数据结构、以及其它类型的结构。此外,本领域技术人员将理解本发明可在其它计算机系统配置中实践,包括手持式装置、多处理器系统、基于微处理器的或可编程的电器消费品、小型计算机、大型计算机等等。本发明还可在任务由经通信网络链接的远程处理装置执行的分布式计算环境中实践。在分布式计算环境中,程序模块可被置于本地和远程存储器存储设备中。
现在参看图1,将描述用于实现本发明各实施例的计算机2的说明性计算机体系结构。在图1中所示的计算机体系结构示出常规桌面或膝上型计算机,包括中央处理单元5(“CPU”)、包括随机存取存储器9(“RAM”)和只读存储器11(“ROM”)11的系统存储器7、以及将存储器耦合到CPU 5的系统总线12。包含有助于如起动时在计算机元件间传送信息的基本例程的基本输入/输出系统(BIOS)存储在ROM 11中。计算机2还包括用于存储操作系统16、应用程序和其它程序模块的大容量存储装置14,该大容量存储装置14将在下面进行更详细的描述。
大容量存储装置14通过连接到总线12的大容量存储控制器(未示出)连接到CPU 5。大容量存储装置14及其相关联计算机可读介质提供计算机2的非易失性存储。尽管包含在此的计算机可读介质的描述指向诸如硬盘或CD-ROM盘的大容量存储装置,本领域技术人员应理解计算机可读介质可以是计算机2能访问的任何可用介质。
作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实现、用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的易失性和非易失性介质、可移动和不可移动介质。计算机存储介质包括但不限于RAM、ROM、EPROM、EEPROM、闪存或其它固态存储器技术、CD-ROM、数字多功能盘(DVD)或其它光学存储技术、磁盒、磁带、磁盘存储器或其它磁性存储设备、或任何其它可用于存储所需信息并可由计算机2访问的介质。
根据本发明各实施例,计算机2可使用诸如因特网的网络18与远程计算机的逻辑连接在网络化环境中操作。计算机2可通过与总线12连接的网络接口单元20与网络18相连。应理解,网络接口单元20也可被用于与其它类型的网络和远程计算机系统相连。计算机2还可包括输入/输出控制器22,用于接收和处理来自包括键盘、鼠标或电子笔(未在图1示出)的众多装置的输入。类似地,输入/输出控制器22可提供对显示屏、打印机、或其它类型的输出装置的输出。
如上简述,众多程序模块和数据文件可被存储于计算机2的大容量存储装置14和RAM 9中,包括适于控制网络化个人计算机的操作系统16,诸如来自华盛顿州雷蒙德市微软公司的Windows操作系统。大容量存储装置14和RAM 9还可存储一个或多个程序模块。特别地,大容量存储装置14和RAM 9可存储字处理应用程序10。如本领域技术人员所众所周知的,字处理应用程序10可操作来提供用于创建和编辑诸如文档24的电子文档的功能。根据本发明一实施例,字处理应用程序10包括来自微软公司的MICROSOFT WORD字处理应用程序。然而,应理解,可利用来自其它制造商的其它字处理应用程序来体现本发明的各个方面。还应理解,执行文档排版功能的其它类型的应用程序可用于本发明的各方面。例如,本发明的各个实施例可用于桌面出版程序、演示程序、web浏览器、以及在文档页面上排版内容的任何其它类型程序。
结合字处理文档的编辑,字处理应用程序10提供用于使用户能创建多栏版式的功能。特别地,用户将文档24的一部分或文档24的适当组件(sub-part),诸如表、文本框、脚注区或其它部分,定义成被格式化成多个栏。然后字处理应用程序10可操作以将文档的该部分按需格式化成多栏格式。字处理应用程序10可与排版管理器26通信,以帮助文档24的格式化。如以下要更详细描述的,排版管理器26向字处理应用程序10和在计算机2上执行的任何其它程序提供排版服务。特别地,排版管理器26从诸如字处理应用程序10的客户机应用程序接收对多栏版式和应排版内容的描述。作为响应,排版管理器26生成适当的版式,并将该版式返回给客户机应用程序用于显示。有关排版管理器26的操作的其它细节将参照图2-6提供。
现在参看图2,将提供有关诸如字处理应用程序10的客户机应用程序与排版管理器26之间交互的其它细节。如上简述,排版管理器26向应用程序10提供文档排版服务。特别地,应用程序10可与排版管理器26通信,以请求存储在后备存储器34中的文档24的各部分的排版。为便于与排版管理器26通信,应用程序10可实现在图2中被示为回调代码32的一个或多个回调例程。通过使用回调代码32,排版管理器26可向应用程序10查询排版文档各部分所必须的附加信息。
如以下将要更详细地描述的,排版管理器26提供用于以若干复杂多栏格式来排版内容的工具。排版管理器26响应于来自应用程序10的以多栏格式排版内容的请求来提供这些工具。应用程序10的文档管理器30可与排版管理器26通信,来请求以多栏格式排版内容。文档管理器30可向排版管理器26提供格式定义,它描述要在多栏格式中采用的栏数。该文档管理器30还可向排版管理器26标识要包括在该格式中的一个或多个跨度。每个跨度可跨一个或多个栏。
文档管理器30还可将每个跨度定义为高度限定或内容限定的。内容限定的跨度区域允许内容在跨度内排版,直到达到内容内的限定点。高度限定的跨度区域允许内容在跨度内排版,直到内容达到指定高度。有关高度和内容限定跨度的其它细节将参照图3和4提供。
文档管理器30还可向排版管理器26提供来自文档的应当排版成多栏格式的文本和其它内容。文档管理器30开始时可向排版管理器26提供部分内容。然后排版管理器26可从回调代码32请求排版多栏格式所需的附加内容。文档管理器30还可向排版管理器26指明要排版的文本样式。例如,文档管理器30可向排版管理器26指明排版文本所需的字体样式、大小和其它信息。
一旦排版管理器26以所述方式将内容排版成多栏格式,格式化结果36就被传递回文档管理器30。响应于接收格式化结果36,文档管理器30可操作来更新由应用程序10维护的显示树38。基于对该显示树38的改变,应用程序10可更新其呈现输出40,以向用户显示格式化结果。应理解,显示树38的使用仅仅是说明性的,并可采用其它用于更新格式化结果的显示的方法。有关应用程序10和排版管理器26的操作的附加细节如下参照图3-6提供。
现在参看图3,将描述示出由本发明各实施例提供的一个多栏版式的屏幕图。如图3所示,提供了跨多个栏的示例性多栏版式42A。具体来说,该示例性多栏版式42A跨四个栏44A-44D。图3中所示的该多栏版式42A还包括若干跨度46A-46C。每一个跨度46A-46C都可以是高度或内容限定的。例如,跨度46A是内容限定的,因而允许标题位于全部四个栏44A-44D的顶部。跨度46B也是内容限定的,从而允许副标题跨三个栏44A-44C显示。跨度46C是高度限定的,从而提供了将剩余的内容导入各栏44A-44D排版的文本。如图3所示,剩余的内容可排版成栏44A-44D。该剩余内容还可以是栏间均衡的,从而使各栏即使有不同高度,却仍然在几乎同一位置结束。
现在参看图4,将描述示出由本发明各实施例提供的一个多栏版式的屏幕图。如图4所示,提供了跨两个栏44E和44F的示例性多栏版式42B。在该示例中,只定义了跨两个栏44E和44F的一个跨度46D。该跨度46D已被定义为高度限定跨度。具体来说,跨度46D的高度48已由客户机应用程序指定。如下详细描述地,排版管理器26将把内容排版到跨度46D中,直到内容达到指定高度48。该排版管理器26然后将转而将内容呈现到列44E和44F中。如以上参照图3描述的示例,排版管理器26可使剩余内容在栏间均衡,以确保栏44E和44F在几乎同一位置结束。应理解,字体会在版式从一个栏转换成多个栏的位置上改变。
应当理解,图3和4所示的多栏版式仅仅是说明性的,且利用本发明各实施例的其它组合也是可能的。例如,可采用任何数量的列,可指定不相等的栏宽,并可对本领域技术人员众所周知的各个版式作修改。
现在参看图5,将描述示出用于产生多栏版式的过程的说明性例程500。应理解,尽管在此所述的本发明各实施例被描述为由排版管理器26执行,但本发明的各方面可直接用于执行页面排版功能的应用程序。例如,在此所述的本发明各实施例可直接由字处理应用程序10执行。
当参阅在此所示例程的讨论时,应理解本发明各实施例的逻辑操作被实现为(1)运行于计算系统上的计算机实现动作或程序模块序列和/或(2)计算系统中相互连接的机器逻辑电路或电路模块。实现是取决于实现本发明的计算系统性能要求所作的选择。因此,如图5-6所示的以及组成在此所述的本发明各实施例的逻辑操作可被分别称为操作、结构化装置、动作或模块。本领域技术人员将理解,这些操作、结构化装置、动作和模块可用软件、固件、专用数字逻辑、及其任意组合来实现而不背离本发明精神和范围,如在此陈述的权利要求所述。
例程500从操作502开始,其中排版管理器26从客户机应用程序中获得多栏版式的基本属性的描述。例程500然后继续到操作504,其中客户机应用程序描述对基本数量栏的更改。具体来说,客户机应用程序描述应该用于多栏版式内的跨度。对于每个跨度,客户机应用程序还指示该跨度应是内容限定还是高度限定的。如果跨度是内容限定的,则客户机应用程序指示内容中呈现到跨度应停止的特定点。如果跨度是高度限定的,则客户机应用程序指示跨度的特定高度。然后例程500从操作504继续到操作506。
在操作506,客户机应用程序向排版管理器26指示排版该内容所需的任何其它参数。例如,包括字样和字体大小的内容样式可由客户机应用程序指定。然后例程500继续到操作508,其中排版管理器26从第一跨度开始以多栏格式开始排版该内容。具体来说,在操作526,排版管理器26确定当前跨度是否是内容限定跨度。如果当前跨度是内容限定跨度,则例程500分支到操作512,其中排版管理器26在当前跨度中排版内容直到该跨度结束。一旦跨度结束,例程500就继续到操作514,其中确定是否还有其它内容限定跨度存在。如果还存在其它内容限定跨度,则例程500分支回操作512,其中排版下一内容限定跨度。如果不存在其它内容限定跨度,则例程500继续到操作516,如下所述。
如果在操作526,排版管理器26确定当前跨度并非是内容限定跨度,则例程500从操作526继续到操作516。在操作516,排版管理器26确定是否存在任何高度限定跨度。如果存在一个或多个高度限定跨度,则例程500分支到操作524。在操作524,排版管理器26用内容填充当前跨度,直到达到所需高度。一旦达到了所需高度,例程500就继续到操作525,其中确定是否还有其它高度限定跨度存在。如果还存在其它高度限定跨度,则例程500分支回操作524,其中排版下一高度限定跨度。如果不存在其它高度限定跨度,则例程500继续到操作518,如下所述。
如果在操作516,排版管理器26确定不存在高度限定跨度,则例程500继续到操作518,其中排版管理器26将剩余的内容排版到各个栏中。在一实施例中,排版管理器26使剩余内容栏间均衡。以下参照图6描述用于使剩余内容栏间均衡的说明性例程600。从操作518,例程500继续到操作520,其中格式化结果从排版管理器26返回到客户机应用程序用于显示。然后例程500继续到操作522,在那里该例程结束。
在操作524,确定是否还有要排版的其它跨度。如果有其它跨度要排版,则例程500分支到操作510,其中处理下一跨度。具体来说,下一跨度以上述方式在操作526、512、514、516、518、520和524上处理。该过程继续直到没有其它跨度要处理。
应理解,图5中所示的算法在排版高度限定跨度之前排版内容限定跨度。这是基于许多杂志和报纸都以该方式排版的事实的设计选择。然而,根据本发明各实施例,高度限定跨度可在内容限定跨度之前排版,且若干类型的跨度可混合。
现在参照图6,将描述用于在指定栏中使内容栏间均衡。例程600从操作602开始,其中排版管理器26估计排版剩余内容所需的各栏的竖直尺寸。具体来说,排版管理器26以使每栏中的内容在几乎同一点上结束的方式,估计排版剩余内容所需的各栏的竖直尺寸。
一旦排版管理器26估计了各栏尺寸,例程600就继续到操作604,其中排版管理器26将剩余内容排版到各估计尺寸的栏中。例程600然后继续到操作606,其中确定剩余内容是否能置入各估计尺寸的栏中。如果剩余内容不能置入,则例程600分支到操作608,其中略为增大各栏的估计尺寸。然后例程600继续到操作611,其中再次确定是否能置入内容。如果内容不能置入,则例程600分支回操作608,其中再次增大各栏的高度。如果内容能置入,则例程600继续到操作610,如下所述。
如果在操作606,排版管理器26确定剩余的内容能置入各估计尺寸的栏中,则例程600继续到操作605,其中减小最短行的高度。然后例程600继续到操作603,其中确定所有内容是否能置入该页面。如果内容能置入,则例程600返回到操作605,其中再次减小最短行的高度。如果内容不能置入,则例程600继续到操作607,其中能置入所有内容的前一版式被用作最后的版式。从操作607,例程600继续到操作610,其中内容由排版管理器26排版到各估计尺寸的栏中。然后例程600继续到操作612,其中它返回到如上参照图5所述的操作522。
基于前述内容,应当理解本发明各实施例包括用于产生多栏版式的方法、系统、装置和计算机可读介质。还应理解,在此所述的本发明各实施例还可用于提供不同于页面的其它类型元素内的多栏版式。例如,多栏版式可在章节、文本框、表单元和脚注内产生。
以上说明书、示例和数据提供了对本发明组成的制造和使用的完整描述。因为可作出本发明的许多实施例而不背离本发明的精神和范围,本发明驻留于此后所附的权利要求中。