【问题】
docbook中的图片被设置为了center对齐:
接着也就想要把图片(和其他表格等)的标题,也设置为中间对齐,这样也才方便阅读。
【解决过程】
1.找到FO中有figure的设置:
所以去试试。但是没看出怎么改。
2. 后参考:Title fonts and sizes,去试试。
然后给HTML和PDF都添加了这个配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <!--============================================================================ formal(figure/table/equation/example/...) setting =============================================================================--> <!-- http://www.sagehill.net/docbookxsl/TitleFontSizes.html#FormalTitleProperties --> < xsl:attribute-set name = "formal.title.properties" use-attribute-sets = "normal.para.spacing" > < xsl:attribute name = "font-weight" >bold</ xsl:attribute > < xsl:attribute name = "font-size" >12pt</ xsl:attribute > < xsl:attribute name = "hyphenate" >false</ xsl:attribute > < xsl:attribute name = "space-after.minimum" >0.4em</ xsl:attribute > < xsl:attribute name = "space-after.optimum" >0.6em</ xsl:attribute > < xsl:attribute name = "space-after.maximum" >0.8em</ xsl:attribute > < xsl:attribute name = "text-align" >center</ xsl:attribute > </ xsl:attribute-set > |
然后生成的PDF中,图片的标题是中间对齐了:
但是HTML中的图片的标题,还是左对齐。
3.后来又把上述设置,单独给FO了,然后对于HTML,又找到了
docbook-xsl-ns-1.76.1\html\formal.xsl
中相关的设置,然后添加了对应的text-align,变成:
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 | <!--============================================================================ formal(figure/table/equation/example/...) setting =============================================================================--> < xsl:template name = "formal.object.heading" > < xsl:param name = "object" select = "." /> < xsl:param name = "title" > < xsl:apply-templates select = "$object" mode = "object.title.markup" > < xsl:with-param name = "allow-anchors" select = "1" /> </ xsl:apply-templates > </ xsl:param > < xsl:choose > < xsl:when test = "$make.clean.html != 0" > < xsl:variable name = "html.class" select = "concat(local-name($object),'-title')" /> < div class = "{$html.class}" > < xsl:copy-of select = "$title" /> </ div > </ xsl:when > < xsl:otherwise > < p class = "title" text-align = "center" > < b > < xsl:copy-of select = "$title" /> </ b > </ p > </ xsl:otherwise > </ xsl:choose > </ xsl:template > |
然后生成的HTML中,还是没有中间对齐效果。
然后就想到了,顺便去看看生成的源码,然后发现,HTML语法高亮的源码中:
1 | <p class= "title" align= "center" ><b>图 1.4 . Nand Flash引脚功能说明</b></p> |
text-align是没有语法高亮的,所以突然想到了,HTML中,对应的text-align的是align,所以就去改为:
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 | <!--============================================================================ formal(figure/table/equation/example/...) setting =============================================================================--> < xsl:template name = "formal.object.heading" > < xsl:param name = "object" select = "." /> < xsl:param name = "title" > < xsl:apply-templates select = "$object" mode = "object.title.markup" > < xsl:with-param name = "allow-anchors" select = "1" /> </ xsl:apply-templates > </ xsl:param > < xsl:choose > < xsl:when test = "$make.clean.html != 0" > < xsl:variable name = "html.class" select = "concat(local-name($object),'-title')" /> < div class = "{$html.class}" > < xsl:copy-of select = "$title" /> </ div > </ xsl:when > < xsl:otherwise > < p class = "title" align = "center" > < b > < xsl:copy-of select = "$title" /> </ b > </ p > </ xsl:otherwise > </ xsl:choose > </ xsl:template > |
然后生成的HTML中,对应的图片等的标题,就都是中间对齐显示了:
【总结】
对于想要给figure的标题设置为中间对齐的话:
(1)对于PDF:
对应的FO中的配置为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <!--============================================================================ formal(figure/table/equation/example/...) setting =============================================================================--> <!-- http://www.sagehill.net/docbookxsl/TitleFontSizes.html#FormalTitleProperties --> < xsl:attribute-set name = "formal.title.properties" use-attribute-sets = "normal.para.spacing" > < xsl:attribute name = "font-weight" >bold</ xsl:attribute > < xsl:attribute name = "font-size" >12pt</ xsl:attribute > < xsl:attribute name = "hyphenate" >false</ xsl:attribute > < xsl:attribute name = "space-after.minimum" >0.4em</ xsl:attribute > < xsl:attribute name = "space-after.optimum" >0.6em</ xsl:attribute > < xsl:attribute name = "space-after.maximum" >0.8em</ xsl:attribute > < xsl:attribute name = "text-align" >center</ xsl:attribute > </ xsl:attribute-set > |
其中上述除了text-align部分的配置,是在
docbook-xsl-ns-1.76.1\fo\formal.xsl
中拷贝出来的。
(2)对于HTML:
对应的html的配置是:
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 | <!--============================================================================ formal(figure/table/equation/example/...) setting =============================================================================--> < xsl:template name = "formal.object.heading" > < xsl:param name = "object" select = "." /> < xsl:param name = "title" > < xsl:apply-templates select = "$object" mode = "object.title.markup" > < xsl:with-param name = "allow-anchors" select = "1" /> </ xsl:apply-templates > </ xsl:param > < xsl:choose > < xsl:when test = "$make.clean.html != 0" > < xsl:variable name = "html.class" select = "concat(local-name($object),'-title')" /> < div class = "{$html.class}" > < xsl:copy-of select = "$title" /> </ div > </ xsl:when > < xsl:otherwise > < p class = "title" align = "center" > < b > < xsl:copy-of select = "$title" /> </ b > </ p > </ xsl:otherwise > </ xsl:choose > </ xsl:template > |
其中除了align="center"之外,都是从:
docbook-xsl-ns-1.76.1\html\formal.xsl
拷贝出来的。
转载请注明:在路上 » 【已解决】如何设置Docbook中的图片的标题为中间对齐