From: Ingo Schwarze <schwarze@usta.de>
To: Alejandro Colomar <alx@kernel.org>
Cc: tech@mandoc.bsd.lv
Subject: Re: mandoc -man -Thtml bug: inconsistent vertical space before .TP
Date: Thu, 19 Oct 2023 17:10:32 +0200 [thread overview]
Message-ID: <ZTFG6Ev5Wl1/31h9@asta-kit.de> (raw)
In-Reply-To: <ZTFBAV11eRPvDkWA@asta-kit.de>
Hi Alejandro,
Ingo Schwarze wrote on Thu, Oct 19, 2023 at 04:45:21PM +0200:
> Consequently, the following needs to be done in mandoc:
>
> 1. Currently, when formatting .TP or .IP with a non-empty head,
> the HTML formatter looks at the previous and at the following
> abstract syntax tree (AST) node to figure out whether the
> tagged paragraph is part of a list.
> If that previous or follwing AST node is .IP or .RS with an
> empty head, it will have to iterate until it finds an AST node
> that is neither .IP nor .RS or has a non-empty head, evaluating
> the properties of that node instead of the directly preceding
> or following node.
>
> 2. When formatting .IP or .RS with an empty head, mandoc needs
> to iterate backwards, searching for an AST node that is neither
> .IP nor .RS or has a non-empty head, and figure out whether that
> node is a list item, which again, as explained above, requires
> iterating both forwards and backwards.
> If it turns out we are inside a list, interrupting the list
> must be prevented. Instead, .IP with an empty head must be
> formatted like .PP, and .RS with an empty head must be formatted
> somewhat like .br.
>
> Probably, doing all this in the HTML formatter module would be
> over the top. I believe such complicated AST inspection should
> be done by the validation module (man_validate.c), which should
> set AST node flags similar to
>
> - this node starts a new list
> - this node starts a new list item
> - this node merely indicates a paragraph break
> - this node ends a list
>
> which the fotmatters can then readily use.
>
> This required logic is so complicated that i won't code it right
> away, there are more urgent matters to be taken care of.
> Instead, i will add it to the mandoc TODO list.
FYI: Added, see the commit below.
Ingo
Log Message:
-----------
new entries: .MR and .TP .IP .TP
Modified Files:
--------------
mandoc:
TODO
Revision Data
-------------
Index: TODO
===================================================================
RCS file: /home/cvs/mandoc/mandoc/TODO,v
retrieving revision 1.329
retrieving revision 1.330
diff -LTODO -LTODO -u -p -r1.329 -r1.330
--- TODO
+++ TODO
@@ -239,6 +239,9 @@ are mere guesses, and some may be wrong.
--- missing man features -----------------------------------------------
+- groff_man(7) .MR
+ loc ** exist * algo * size * imp ***
+
- MANWIDTH
Markus Waldeck <waldeck at gmx dot de> 9 Jun 2015 05:49:56 +0200
Laura Morales <lauretas at mail dot com> 26 Apr 2018 08:15:55 +0200
@@ -504,6 +507,10 @@ are mere guesses, and some may be wrong.
loc ** exist ** algo ** size * imp **
--- HTML issues --------------------------------------------------------
+
+- support the idiom .TP .IP .TP for multi-paragraph list item bodies
+ to: Alejandro Colomar Thu, 19 Oct 2023 16:45:21 +0200
+ loc ** exist ** algo ** size ** imp **
- .Nm without an argument and .Bx cause premature </pre>
Nab Sun, 5 Jun 2022 18:30:09 +0200
--
To unsubscribe send an email to tech+unsubscribe@mandoc.bsd.lv
next prev parent reply other threads:[~2023-10-19 15:10 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-16 11:32 Alejandro Colomar
2023-10-16 16:28 ` Ingo Schwarze
2023-10-16 17:22 ` Alejandro Colomar
2023-10-19 14:45 ` Ingo Schwarze
2023-10-19 15:10 ` Ingo Schwarze [this message]
2023-10-19 15:17 ` Alejandro Colomar
2023-10-19 16:19 ` Ingo Schwarze
2023-10-19 21:32 ` Alejandro Colomar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZTFG6Ev5Wl1/31h9@asta-kit.de \
--to=schwarze@usta.de \
--cc=alx@kernel.org \
--cc=tech@mandoc.bsd.lv \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).