PreTeXtBook / pretext

PreTeXt: an authoring and publishing system for scholarly documents
https://pretextbook.org
Other
254 stars 203 forks source link

Add .logical to an auto-inserted div.para if it contains a block element #2026

Open siefkenj opened 9 months ago

siefkenj commented 9 months ago

Currently when

<ul>
  <li>
    <p><ul><li>foo</li></ul></p>
  </li>
</ul>

is processed, the resulting p turns into a div.para.logical. However,

<ul>
  <li>
    <ul><li>foo</li></ul>
  </li>
</ul>

gets an auto-inserted p which turns to a div.para even though it contains a block element. This PR makes the behavior of the auto-inserted p consistent.

rbeezer commented 9 months ago

Thanks @siefkenj. Good catch. It'll be a few days before I can merge.

@davidfarmer: do you expect CSS ramifications? Would a beta be useful or necessary?

rbeezer commented 9 months ago

OK, put this through testing on the sample article.

Shouldn't these "unstructured" li be exploded into several HTML p? I wonder if the pre-processor should just wrap the content of an "unstrcuctured" li into a p and then it will be handled appropriately in all conversions (especially HTML)?

siefkenj commented 9 months ago

I am not sure what @test refers to. And since we do not use any <p> tags anywhere in HTML, I don't think exploding is necessary.

Yes, moving this step to the preprocessor would be an option (that's what I do in the JS version. I first add a <p> around anything that is not allowed as a direct child via the schema; of course you'll want to take special care for the <md>/<m> tags, as you pointed out to me)

rbeezer commented 9 months ago

I am not sure what @test refers to

 <xsl:if test="ol|ul|dl|me|men|md|mdn|cd">

I don't think ol|ul|dl are necessary as it never happens this way.

siefkenj commented 9 months ago

Are you saying that the case

<ul>
  <li>
    <ul><li>foo</li></ul>
  </li>
</ul>

is handled elsewhere in the code?

rbeezer commented 9 months ago

Your interior ul has to live in a p, according to the schema. Who knows how permissive the conversions are.

Some exceptions, such as GOAL-LIKE, presumes an interior list not in a p.

siefkenj commented 9 months ago

The ul is current auto-wrapped in a p as per line 5919.