[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [docbook-apps] Equation number on same line as equation contents
The FO output could be handled with a two-column table, something like this in the equation template: <xsl:template match="equation"> <fo:table width="100%" table-layout="fixed"> <xsl:attribute name="id"> <xsl:call-template name="object.id"/> </xsl:attribute> <fo:table-column column-width="90%"/> <fo:table-column column-width="10%"/> <fo:table-body start-indent="0pt" end-indent="0pt"> <fo:table-row> <fo:table-cell text-align="center"> <fo:block> <xsl:apply-templates/> </fo:block> </fo:table-cell> <fo:table-cell text-align="right" display-align="center"> <fo:block> <xsl:text>(</xsl:text> <xsl:apply-templates select="." mode="label.markup"/> <xsl:text>)</xsl:text> </fo:block> </fo:table-cell> </fo:table-row> </fo:table-body> </fo:table> </xsl:template> Bob Stayton Sagehill Enterprises DocBook Consulting bobs@sagehill.net ----- Original Message ----- From: "Michael Smith" <smith@xml-doc.org> To: "Stephen Langer" <stephen.langer@nist.gov> Cc: <docbook-apps@lists.oasis-open.org> Sent: Monday, November 21, 2005 2:12 AM Subject: [docbook-apps] Equation number on same line as equation contents Stephen Langer <stephen.langer@nist.gov> writes: > [...] > On a related topic, is it possible to put the title of an equation on > the same line, but to the right? I'd really like to have an just > automatically generated equation number, like this: > > x^2 + y^2 = z^2 (1.1) There are two separate requirements that need to be satisfied to enable what you describe. 1. Output the equation title in the form "(1.1") instead of in the default "Equation 1.1. Foo" form. 2. Cause the equation title to be rendered on the same line as equation contents. Regarding requirement #1: Changing the output for the equation title requires you to add some things to your stylesheet customization layer(s). The process for doing that is described in Bob Stayton's book, in the "Customizing generated text" section - http://sagehill.net/docbookxsl/CustomGentext.html#CustomGenText For HTML output, to get the output you describe, you need to have a customization layer that, at a minimum, contains the following. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl"/> <xsl:param name="local.l10n.xml" select="document('')"/> <l:i18n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0"> <l:l10n language="en"> <l:context name="title"> <l:template name="equation" text="(%n)"/> </l:context> </l:l10n> </l:i18n> </xsl:stylesheet> For FO output, you'd need to do something similar to that. Regarding requirement #2: For HTML output, the optimal way to control the placement of the title is to use CSS. It is possible to construct a CSS stylesheet that uses the "float" property to place the title on the same line as the contents of the equation. But for output of the existing XSL stylesheets, you'd need to have a CSS rule for each element that's allowed as a direct child of the equation -- because the existing stylesheets do no output a wrapper around the equation contents. I think it would be better to have the stylesheets output a wrapper around the equation contents. So I checked in a change today to cause that output. You can test it using the latest snapshot: http://docbook.sourceforge.net/snapshots/ What I did was to add change that causes a the stylesheets to output a <div class="{$class}-contents"> wrapper around of contents of all formal objects, including Equation. I also, added a change that causes an optional <br class="{class}-break"/> linebreak to be output after all formal objects. Note: Because these changes places an additional DIV between the DIV wrapper for the equation and the equation contents, they may break some existing CSS stylesheets that have been created with the assumption that there would never be an intervening DIV there. The following is an example of what Equation output looks like as a result of the changes described above. <div class="equation"> <a name="three" id="three"></a> <p class="title"><b>(1.3)</b></p> <div class="equation-contents"> <span class="mathphrase">1+1=3</span> </div> </div><br class="equation-break"> So you can now cause the equation title to be rendered to the right of the equation contents by using a stylesheet fragment like the following. .equation { margin-top: 20px; margin-bottom: 20px; } .equation-contents { float: left; } .equation .title { margin-top: 0; float: right; margin-right: 200px; } .equation .title b { font-weight: normal; } .equation-break { clear: both; } Note that the purpose of the ".equation-break" class is to provide a way to clear off the floats. In my testing, it does not seem to work to have the "clear: both" property specified on the rule for the "equation" class. If you want to instead have the equation title rendered to the left of the equation contents, you can do something like this: .equation { margin-top: 20px; width: 300px; margin-bottom: 20px; } .equation-contents { float: right; } .equation .title { margin-top: 0; float: left; margin-right: 200px; } .equation .title b { font-weight: normal; } .equation-break { clear: both; } In each case, the equation title is top-aligned with the equation contents. I have not been able to figure out a way to have it middle-aligned with the equation contents. Anyway, please give it a try and let me know if it works for you. I have not looked at the FO stylesheets yet to figure out how similar output could be implemented in those. I suspect it will require quite a bit more work than the HTML case. --Mike -- Michael Smith http://sideshowbarker.net/
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]