【问题】
docbook中,已经实现了表格显示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | < table > < title id = "mpeg.header_format" >MPEG音频的帧头的格式</ title > < tgroup cols = "4" > < thead > < row >< entry >位置(bit)</ entry >< entry >长度(bit)</ entry >< entry >含义</ entry >< entry >示例</ entry ></ row > </ thead > < tbody > < row >< entry >0</ entry >< entry >11</ entry >< entry >用于同步帧,找到此帧头(所有位均置1)</ entry >< entry >1111 1111 111</ entry ></ row > < row >< entry >11</ entry >< entry >2</ entry >< entry >MPEG音频的版本ID</ entry >< entry >11</ entry ></ row > < row >< entry >13</ entry >< entry >2</ entry >< entry >Layer 的索引</ entry >< entry >01</ entry ></ row > < row >< entry >15</ entry >< entry >1</ entry >< entry >保护位:< literallayout >0 – 用16位的CRC保护下面的帧头 1 – 无CRC</ literallayout ></ entry >< entry >1</ entry ></ row > < row >< entry >16</ entry >< entry >4</ entry >< entry >比特率索引 (见下表)</ entry >< entry >1001</ entry ></ row > < row >< entry >20</ entry >< entry >2</ entry >< entry >采样率索引 (见下表)</ entry >< entry >11</ entry ></ row > < row >< entry >22</ entry >< entry >1</ entry >< entry >填充位。如果设置了此位,就会对每帧数据填充一个slot (对于帧大小的计算很重要)</ entry >< entry >0</ entry ></ row > < row >< entry >23</ entry >< entry >1</ entry >< entry >私有位 (仅用于标示性的)</ entry >< entry >1</ entry ></ row > < row >< entry >24</ entry >< entry >2</ entry >< entry >声道的模式 </ entry >< entry >01</ entry ></ row > < row >< entry >26</ entry >< entry >2</ entry >< entry >模式扩展 (仅用于联合立体声) (注:此处不是本文重点,故忽略相关的索引表)</ entry >< entry >00</ entry ></ row > </ tbody > </ tgroup > </ table > |
但是编译有warning:
Administrator@K470 /cygdrive/e/Dev_Root/docbook/dev/src/docbook/books/VBR/src 四月 30, 2012 1:46:34 下午 org.apache.fop.apps.FopFactoryConfigurator configure 信息: Default page-height set to: 11in 四月 30, 2012 1:46:34 下午 org.apache.fop.apps.FopFactoryConfigurator configure 信息: Default page-width set to: 8.26in 四月 30, 2012 1:46:35 下午 org.apache.fop.events.LoggingEventListener processEvent 警告: Font "Symbol,normal,700" not found. Substituting with "Symbol,normal,400". 四月 30, 2012 1:46:35 下午 org.apache.fop.events.LoggingEventListener processEvent 警告: Font "ZapfDingbats,normal,700" not found. Substituting with "ZapfDingbats,normal,400". 四月 30, 2012 1:46:35 下午 org.apache.fop.hyphenation.Hyphenator getHyphenationTree 严重: Couldn’t find hyphenation pattern zh_cn 四月 30, 2012 1:46:36 下午 org.apache.fop.events.LoggingEventListener processEvent 警告: The following feature isn’t implemented by Apache FOP, yet: table-layout="auto" (on fo:table) (See position 10:21223) 四月 30, 2012 1:46:36 下午 org.apache.fop.events.LoggingEventListener processEvent 严重: Invalid property value encountered in column-width="proportional-column-width(1)": org.apache.fop.fo.expr.PropertyException: file:/E:/Dev_Root/docbook/dev/src/docbook/books/VBR/output/fo/MPEG_VBR.fo:10:21223: proportional-column-width() function may only be used when fo:table has table-layout="fixed".; property:’column-width’ (See position 10:21303) 四月 30, 2012 1:46:36 下午 org.apache.fop.events.LoggingEventListener processEvent 严重: Invalid property value encountered in column-width="proportional-column-width(1)": org.apache.fop.fo.expr.PropertyException: file:/E:/Dev_Root/docbook/dev/src/docbook/books/VBR/output/fo/MPEG_VBR.fo:10:21223: proportional-column-width() function may only be used when fo:table has table-layout="fixed".; property:’column-width’ (See position 10:21383) 四月 30, 2012 1:46:36 下午 org.apache.fop.events.LoggingEventListener processEvent 严重: Invalid property value encountered in column-width="proportional-column-width(1)": org.apache.fop.fo.expr.PropertyException: file:/E:/Dev_Root/docbook/dev/src/docbook/books/VBR/output/fo/MPEG_VBR.fo:10:21223: proportional-column-width() function may only be used when fo:table has table-layout="fixed".; property:’column-width’ (See position 10:21463) 四月 30, 2012 1:46:36 下午 org.apache.fop.events.LoggingEventListener processEvent 严重: Invalid property value encountered in column-width="proportional-column-width(1)": org.apache.fop.fo.expr.PropertyException: file:/E:/Dev_Root/docbook/dev/src/docbook/books/VBR/output/fo/MPEG_VBR.fo:10:21223: proportional-column-width() function may only be used when fo:table has table-layout="fixed".; property:’column-width’ (See position 10:21543) 四月 30, 2012 1:46:36 下午 org.apache.fop.events.LoggingEventListener processEvent 警告: Line 1 of a paragraph overflows the available area by 48110 millipoints. (See position 10:27585) |
且编译出来的效果也难看:
现在想要根据自己的需要,去设置不同的列,不同的宽度。
【解决过程】
1.参考:Column widths,添加了对应代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | < table > < title id = "mpeg.header_format" >MPEG音频的帧头的格式</ title > < tgroup cols = "4" > < colspec colnum = "1" colname = "col1" colwidth = "1*" /> < colspec colnum = "2" colname = "col2" colwidth = "1*" /> < colspec colnum = "3" colname = "col3" colwidth = "6*" /> < colspec colnum = "4" colname = "col4" colwidth = "2*" /> < thead > < row >< entry >位置(bit)</ entry >< entry >长度(bit)</ entry >< entry >含义</ entry >< entry >示例</ entry ></ row > </ thead > < tbody > < row >< entry >0</ entry >< entry >11</ entry >< entry >用于同步帧,找到此帧头(所有位均置1)</ entry >< entry >1111 1111 111</ entry ></ row > < row >< entry >11</ entry >< entry >2</ entry >< entry >MPEG音频的版本ID</ entry >< entry >11</ entry ></ row > < row >< entry >13</ entry >< entry >2</ entry >< entry >Layer 的索引</ entry >< entry >01</ entry ></ row > < row >< entry >15</ entry >< entry >1</ entry >< entry >保护位:< literallayout >0 – 用16位的CRC保护下面的帧头 1 – 无CRC</ literallayout ></ entry >< entry >1</ entry ></ row > < row >< entry >16</ entry >< entry >4</ entry >< entry >比特率索引 (见下表)</ entry >< entry >1001</ entry ></ row > < row >< entry >20</ entry >< entry >2</ entry >< entry >采样率索引 (见下表)</ entry >< entry >11</ entry ></ row > < row >< entry >22</ entry >< entry >1</ entry >< entry >填充位。如果设置了此位,就会对每帧数据填充一个slot (对于帧大小的计算很重要)</ entry >< entry >0</ entry ></ row > < row >< entry >23</ entry >< entry >1</ entry >< entry >私有位 (仅用于标示性的)</ entry >< entry >1</ entry ></ row > < row >< entry >24</ entry >< entry >2</ entry >< entry >声道的模式 </ entry >< entry >01</ entry ></ row > < row >< entry >26</ entry >< entry >2</ entry >< entry >模式扩展 (仅用于联合立体声) (注:此处不是本文重点,故忽略相关的索引表)</ entry >< entry >00</ entry ></ row > </ tbody > </ tgroup > </ table > |
然后编译时,也没了warning了:
Administrator@K470 /cygdrive/e/Dev_Root/docbook/dev/src/docbook/books/VBR/src 四月 30, 2012 2:02:12 下午 org.apache.fop.apps.FopFactoryConfigurator configure 信息: Default page-height set to: 11in 四月 30, 2012 2:02:12 下午 org.apache.fop.apps.FopFactoryConfigurator configure 信息: Default page-width set to: 8.26in 四月 30, 2012 2:02:13 下午 org.apache.fop.events.LoggingEventListener processEvent 警告: Font "Symbol,normal,700" not found. Substituting with "Symbol,normal,400". 四月 30, 2012 2:02:13 下午 org.apache.fop.events.LoggingEventListener processEvent 警告: Font "ZapfDingbats,normal,700" not found. Substituting with "ZapfDingbats,normal,400". 四月 30, 2012 2:02:13 下午 org.apache.fop.hyphenation.Hyphenator getHyphenationTree 严重: Couldn’t find hyphenation pattern zh_cn |
结果出来的表格的宽度,也好看了:
【总结】
在table的tgroup之后,添加对应的colspec,指定对应的colwidth,即可达到自定义表格中列的宽度。