Skip to content

Unexpected literal ".PP" in markdown bullets when rendering man page #35

@step-

Description

@step-

Lowdown 0.7.3 on Linux

Consider the following test case (file test.md):

# right
* source
[source](http://source)
* binary
[binary](http://binary)

# wrong
* source
[source](http://source)

* binary
[binary](http://binary)

Render man page:

lowdown -Tman -s test.md

Result:

.SH right
.sp 1.0v
.RS
.ti -\w'\(bu  'u
\(bu  source
\f[I]source\f[R]
.RE
.RS
.ti -\w'\(bu  'u
\(bu  binary
\f[I]binary\f[R]
.RE
.SH wrong
.sp 1.0v
.RS
.ti -\w'\(bu  'u
\(bu  .PP
source
\f[I]source\f[R]
.RE
.sp 1.0v
.RS
.ti -\w'\(bu  'u
\(bu  .PP
binary
\f[I]binary\f[R]
.RE

In section "wrong", notice .PP after the bullet \(bu. This seems wrong and results in the literal text ".PP" being printed in the manual page:

lowdown -Tman -s | man -l -

Result:


·  source source
·  binary binary

·  .PP source source

·  .PP binary binary

If I delete the last two line and render a manual page again ".PP" isn't added -- correctly.

# right
* source
[source](http://source)
* binary
[binary](http://binary)

# wrong
* source
[source](http://source)

Result:


·  source source
·  binary binary

·  source source

With lowdown version 0.4.6 I did not see the stray ".PP" after the bullets. I think that version 0.4.6 outputs .LP for paragraphs while the newer versions output .PP. Regardless, there were no unexpected ".PP" or ".LP" in the man page.

With -Thtml a similar issue surfaces, in the "wrong" section, <p> follows <li>, which seems wrong. When rendering the HTML in a browser, the effect isn't necessarily noticeable unlike in a man page, in which ".PP" becomes literal text.

<h1 id="right">right</h1>

<ul>
<li>source
<a href="http://source">source</a></li>
<li>binary
<a href="http://binary">binary</a></li>
</ul>

<h1 id="wrong">wrong</h1>

<ul>
<li><p>source
<a href="http://source">source</a></p></li>
<li><p>binary
<a href="http://binary">binary</a></p></li>
</ul>

For comparison, I checked how GitHub renders the same case to HTML, and -- to my surprise -- GitHub behaves like lowdown. For instance, see this page in your browser's developer tools, and compare the HTML code for the single bullet under 2: and the two bullets under 3:. The single bullet doesn't include a <p> tag while each of the two bullets does.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions