<div>Hi Nic,</div><div><br></div><div>Structural content in verse 0 is another good example why you shouldn&#39;t turn introductions off - I think they should always be on, just the headings inside them (when non-canonical) should be able to be turned off.</div>

<div><br></div>As for floating the whitespace around, this is a post-process and mostly done using regular expressions.<div>See SmartBody here: <a href="https://code.google.com/p/bpbible/source/browse/trunk/backend/verse_template.py#49">https://code.google.com/p/bpbible/source/browse/trunk/backend/verse_template.py#49</a></div>

<div><br></div><div>This allows the verse number to be put in at a logical point in the whitespace flow (e.g. If a paragraph starts at the start of a verse, you want the verse number to be inside the paragraph).</div><div>

<br></div><div>As to the floating the verse number in poetry it uses this CSS to put it in the left margin of the &lt;lg&gt;:</div><div><a href="https://code.google.com/p/bpbible/source/browse/trunk/css/bpbible_chapter_view.css">https://code.google.com/p/bpbible/source/browse/trunk/css/bpbible_chapter_view.css</a></div>

<div><div><div>.chapterview blockquote.lg &gt; a.versenumber, </div><div>.chapterview blockquote.lg &gt; span.had_highlight &gt; a.versenumber</div><div>{</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>position: relative;</div>

<div><span class="Apple-tab-span" style="white-space:pre">        </span>float: left;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>left: -4em;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>width: 3em;</div>

<div><span class="Apple-tab-span" style="white-space:pre">        </span>text-align: center;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>line-height: inherit;</div><div>}</div><div><br></div><div>.chapterview blockquote.lg a.chapternumber</div>

<div>{</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>width: 1.5em;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>text-align: center;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>-moz-margin-start: -2em;</div>

<div><span class="Apple-tab-span" style="white-space:pre">        </span>line-height: 100%;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>font-size: 150%;</div><div>}</div><div><br></div></div><div>Disclaimer on my CSS: </div>

<div>I put in what made it work - no guarantees that it is nice/efficient. It does appear to be mostly functional</div><div>It&#39;s specifically mozilla oriented, and may not work elsewhere.</div><div><br></div><div>That said, it can work elsewhere - I&#39;ve got the poetry layout with verse numbers etc. working on my Kindle. I haven&#39;t checked in the code yet which generates the epub to be transformed for Kindle, but some of the CSS changes I made for that make it less mozilla oriented.</div>

<div><br clear="all"><div>God Bless,<br>Ben<br>-------------------------------------------------------------<br>
        <div>
        <div>For I have no pleasure in the death of anyone, <br>declares the Lord <span style="font-variant:small-caps">God</span>; so turn, and live.”<br>Ezekiel 18:32 (ESV)</div>
        </div>
        
<br></div>
<br><br><div class="gmail_quote">On Sat, Feb 2, 2013 at 4:49 PM, Nic Carter <span dir="ltr">&lt;<a href="mailto:niccarter@mac.com" target="_blank">niccarter@mac.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div style="word-wrap:break-word"><div><br></div>Thanks heaps for this :)<div>I&#39;m getting there, but have encountered a few interesting bits. I&#39;m using the ESV and something I just realised was that Psalm 1 only had a closing &lt;lg&gt; tag at the end of verse 6 &amp; no opening tag:</div>

<div> &lt;lg eID=&quot;w106&quot;/&gt; </div><div>I couldn&#39;t find the opening one anywhere in the chapter.</div><div><br></div><div>Until I looked at Psalm 1:0</div><div>&amp; then I found it!</div><div><br></div><div>

Anyway, I have it mostly working (besides for cases like the above, where you _need_ to have the Introductions switched on for the formatting to work correctly).</div><div><br></div><div>However, the tricky thing for this to then work with PS is the verse numbers, where you talk about doing some &quot;floating block whitespace&quot; to make it &quot;work more nicely&quot;. I&#39;m gonna try to look at what BPBible does in regards to that, cause I&#39;m a novice when it comes to HTML now-a-days...</div>

<div><br></div><div><br></div><div>Thanks, ybic</div><div><span style="white-space:pre-wrap">        </span>nic...  :)<br>
<br><div><div>On 02/02/2013, at 12:02 AM, Ben Morgan &lt;<a href="mailto:benpmorgan@gmail.com" target="_blank">benpmorgan@gmail.com</a>&gt; wrote:</div><br><blockquote type="cite">I&#39;ve found vertical whitespace can be problematic, and it&#39;s often around verse boundaries.<div>

<br></div><div>osis2mod often seems to put some of the whitespace in the previous verse/chapter, which I think I reported a long time ago and should be fixed. I remember we had trouble finding the right combination of when to start a verse. I have a vague feeling I had suggested some fixes which weren&#39;t ever put in - but I can&#39;t be sure, and it&#39;s possible there might have been some which caused other issues.</div>



<div><br></div><div>BPBible does some things like floating block whitespace before verse numbers etc. to make this work more nicely.</div><div><br></div><div>As for the two-level poetry layout (or 3 level - e.g. ESV 1 Tim 3:16), BPBible has done this for ages (e.g. try opening ESV in psalms). It&#39;s not particularly straightforward to implement well though. A brief overview of how it is done:</div>



<div><br></div><div>The start tag &lt;l&gt; gets handled something like so:</div><div><div><span style="white-space:pre-wrap">                </span>mapping = {</div><div><span style="white-space:pre-wrap">                        </span># usual poetry indent in ESV</div>



<div><span style="white-space:pre-wrap">                        </span>&quot;x-indent&quot;: 2,</div><div><br></div><div><span style="white-space:pre-wrap">                        </span># extra indent - 1 Tim 3:16 (ESV) for example</div>

<div><span style="white-space:pre-wrap">                        </span>&quot;x-indent-2&quot;: 4,</div><div><br></div><div><span style="white-space:pre-wrap">                        </span># declares lines - Declares the Lord, Says the Lord, etc.</div>

<div><span style="white-space:pre-wrap">                        </span>&quot;x-declares&quot;: 6,</div><div><span style="white-space:pre-wrap">                        </span></div><div><span style="white-space:pre-wrap">                        </span># doxology - Amen and Amen - Psalms 41:13, 72:19, 89:52 in ESV </div>



<div><span style="white-space:pre-wrap">                        </span>&quot;x-psalm-doxology&quot;: 6,</div><div><br></div><div><span style="white-space:pre-wrap">                        </span># usual poetry indent in WEB</div>

<div><span style="white-space:pre-wrap">                        </span>&quot;x-secondary&quot;: 2,</div><div><span style="white-space:pre-wrap">                </span>}</div><div><br></div><div><span style="white-space:pre-wrap">                </span>level = xmltag.getAttribute(&quot;level&quot;)</div>



<div><span style="white-space:pre-wrap">                </span>if level:</div><div><span style="white-space:pre-wrap">                        </span># the level defaults to 1 - i.e. no indent</div><div><span style="white-space:pre-wrap">                        </span>indent = 2 * (int(level) - 1)</div>



<div><span style="white-space:pre-wrap">                </span>else:</div><div><span style="white-space:pre-wrap">                        </span>indent = mapping.get(xmltag.getAttribute(&quot;type&quot;), 0)</div><div><br>

</div></div><div><div><span style="white-space:pre-wrap">                </span>#if indent:</div><div><span style="white-space:pre-wrap">                </span>if self.in_indent:</div><div><span style="white-space:pre-wrap">                        </span>dprint(WARNING, &quot;Nested indented l&#39;s&quot;, self.u.key.getText())</div>



<div><br></div><div><span style="white-space:pre-wrap">                </span>self.in_indent = True</div><div><span style="white-space:pre-wrap">                </span>if not self.in_copy_verses_mode:</div><div><span style="white-space:pre-wrap">                        </span>self.buf += &#39;&lt;div class=&quot;indentedline width-%d&quot; source=&quot;l&quot;&gt;&#39; % indent</div>



<div><span style="white-space:pre-wrap">                </span>self.blocklevel_start()</div></div><div><br></div><div>and end tag like so:</div><div><div><span style="white-space:pre-wrap">        </span>def end_l(self, xmltag):</div>

<div><span style="white-space:pre-wrap">                </span>if self.in_indent:</div><div><span style="white-space:pre-wrap">                        </span>self.blocklevel_end()<span style="white-space:pre-wrap">                        </span></div>

<div><span style="white-space:pre-wrap">                        </span>self.buf += &quot;&lt;br&gt;&quot; if self.in_copy_verses_mode else &quot;&lt;/div&gt;&quot;</div></div><div><br></div><div>&lt;lg&gt; elements are also handled, turning them into blockquotes.</div>



<div><br></div><div>This is matched up with CSS like so (note, there&#39;s a lot more in it than this to handle floating verse numbers outside of poetry etc):</div><div><div>/* Poetry */</div><div>blockquote.lg</div><div>



{</div><div><span style="white-space:pre-wrap">        </span>margin: 0.5em 0em 0.5em 3em;</div><div>}</div></div><div><br></div><div><div>/* We want our indented lines to behave nicely - wrapped lines should be</div>

<div> * indented further. text-indent undoes the wide margin only for the first</div><div> * line */</div><div>div.indentedline.width-2 {</div><div><span style="white-space:pre-wrap">        </span>-moz-padding-start: 5em;</div>



<div><span style="white-space:pre-wrap">        </span>text-indent: -3em;</div><div>}</div><div>div.indentedline.width-4 {</div><div><span style="white-space:pre-wrap">        </span>-moz-padding-start: 5em;</div>

<div><span style="white-space:pre-wrap">        </span>text-indent: -1em;</div><div>}</div><div>div.indentedline.width-6 {</div><div><span style="white-space:pre-wrap">        </span>-moz-padding-start: 7em;</div>

<div><span style="white-space:pre-wrap">        </span>text-indent: -1em;</div><div>}</div><div><br></div><div>div.indentedline.width-0 {</div><div><span style="white-space:pre-wrap">        </span>-moz-padding-start: 5em;</div>

<div><span style="white-space:pre-wrap">        </span>text-indent: -5em;</div><div>}</div><div><br></div><div><div>God Bless,<br>Ben<br>-------------------------------------------------------------<br>
        <div>
        <div>For I have no pleasure in the death of anyone, <br>declares the Lord <span style="font-variant:small-caps">God</span>; so turn, and live.”<br>Ezekiel 18:32 (ESV)</div>
        </div>
        
<br></div>
<br><br><div class="gmail_quote">On Fri, Feb 1, 2013 at 9:32 PM, Nic Carter <span dir="ltr">&lt;<a href="mailto:niccarter@mac.com" target="_blank">niccarter@mac.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<br>
Is this caused by improperly formed modules that have fun with &lt;l&gt; poetry &amp; &lt;lb&gt; ?<br>
[I think I have already emailed through what I do after the filter gives me it&#39;s result in order to try to reduce the vertical whitespace!]<br>
<br>
And while I&#39;m on the topic of poetry, in Proverbs you often see couplets (altho are they termed that in the Bible?) where in a printed Bible the 2nd line is indented. Would we be able to do that to some degree? I don&#39;t know the OSIS tags that refer to this, but if someone were able to point me in the right direction, I may even be able to hack this together myself? I am looking around line 360 of osishtmlhref.cpp........<br>




<div><div><br>
On 20/01/2013, at 8:12 AM, DM Smith &lt;<a href="mailto:dmsmith@crosswire.org" target="_blank">dmsmith@crosswire.org</a>&gt; wrote:<br>
<br>
&gt; I&#39;ve noticed that OSIS modules sometimes render with a lot of vertical whitespace (blank lines).<br>
&gt;<br>
&gt; I&#39;d like for this to be sorted as part of the next release. I don&#39;t think it&#39;d be too hard. I&#39;ve been in the osishtmlhref filter to see if I could figure it out, but it is beyond me.<br>
&gt;<br>
&gt; So this is a suggestion for others.<br>
&gt;<br>
&gt; Using the HTML notion of block and inline elements, I think we can classify OSIS elements as block or inline. Off the top of my head, &lt;div&gt;, &lt;chapter&gt;, &lt;p&gt;, &lt;lb/&gt;, &lt;lg&gt;, &lt;l&gt;, &lt;title&gt;, &lt;table&gt; and &lt;row&gt; are the block elements.<br>




&gt; The key feature of a block element is that block elements that follow each other stack one on top of each other.<br>
&gt; Some block elements allow nesting, such as &lt;div&gt;.<br>
&gt;<br>
&gt; In HTML, an empty &lt;div&gt; occupies no vertical space. A nested div does not cause additional vertical space.<br>
&gt;<br>
&gt; In HTML, a &lt;p&gt; has semantics as to whether it is preceded or followed by whitespace. A &lt;p&gt; at the beginning of a document is not preceded by a blank line. Nor is a &lt;/p&gt; at the end of a document. This is also true after a heading element.<br>




&gt;<br>
&gt; I think that the SWORD renderers always cause a &lt;div&gt; to occupy vertical whitespace.<br>
&gt;<br>
&gt; The other issue with &lt;div&gt; is that we now have a &quot;pre-verse&quot; div, which is a great way of marking off what stands before a verse, but this &lt;div&gt; really shouldn&#39;t have any &lt;div&gt; semantic. It probably would have been better if we used &lt;milestone&gt; instead.<br>




&gt;<br>
&gt; I seem to remember that there is a &quot;swollow&quot; flag for whitespace (I think it might be for horizontal whitespace.) I think something like this could be used for vertical whitespace.<br>
&gt;<br>
&gt; The other part to this is when a chapter is shown verse-per-line. If because of rendering the pre-verse content the verse already starts on a new line, I don&#39;t think more vertical whitespace should be produced.<br>




&gt;<br>
&gt;<br>
&gt; Together in His Service,<br>
&gt;       DM<br>
&gt; _______________________________________________<br>
&gt; sword-devel mailing list: <a href="mailto:sword-devel@crosswire.org" target="_blank">sword-devel@crosswire.org</a><br>
&gt; <a href="http://www.crosswire.org/mailman/listinfo/sword-devel" target="_blank">http://www.crosswire.org/mailman/listinfo/sword-devel</a><br>
&gt; Instructions to unsubscribe/change your settings at above page<br>
<br>
<br>
_______________________________________________<br>
sword-devel mailing list: <a href="mailto:sword-devel@crosswire.org" target="_blank">sword-devel@crosswire.org</a><br>
<a href="http://www.crosswire.org/mailman/listinfo/sword-devel" target="_blank">http://www.crosswire.org/mailman/listinfo/sword-devel</a><br>
Instructions to unsubscribe/change your settings at above page<br>
</div></div></blockquote></div><br></div></div>
_______________________________________________<br>sword-devel mailing list: <a href="mailto:sword-devel@crosswire.org" target="_blank">sword-devel@crosswire.org</a><br><a href="http://www.crosswire.org/mailman/listinfo/sword-devel" target="_blank">http://www.crosswire.org/mailman/listinfo/sword-devel</a><br>

Instructions to unsubscribe/change your settings at above page</blockquote></div><br></div></div><br>_______________________________________________<br>
sword-devel mailing list: <a href="mailto:sword-devel@crosswire.org">sword-devel@crosswire.org</a><br>
<a href="http://www.crosswire.org/mailman/listinfo/sword-devel" target="_blank">http://www.crosswire.org/mailman/listinfo/sword-devel</a><br>
Instructions to unsubscribe/change your settings at above page<br></blockquote></div><br></div></div>