* mandoc & perl documentation @ 2018-09-13 15:12 Pali Rohár 2018-09-13 15:32 ` Anthony J. Bentley 2018-10-11 7:52 ` Pali Rohár 0 siblings, 2 replies; 19+ messages in thread From: Pali Rohár @ 2018-09-13 15:12 UTC (permalink / raw) To: discuss [-- Attachment #1: Type: text/plain, Size: 1341 bytes --] Hello! In perl world is documentation for perl modules or perl scripts writing in the POD format. Build process for perl scripts/modules then convert POD documentation into manpages and install it into standard system location. I looked at Debian manpages which uses mandoc for converting man pages to HTML and basically documentation for perl modules is not good. For example this is HTMLized manpage for Email::Address::XS perl module: https://manpages.debian.org/Email::Address::XS There is also converting tool which formats POD documentation directly into HTML output. And for Email::Address::XS module is looks like: https://metacpan.org/pod/Email::Address::XS So, I would like to ask, how can be HTML output generated from perl manpages improved (process: POD --> mandoc --> HTML), so documentation would be more close to the native HTML output (process: POD --> HTML)? I understand that something like syntax highlighting is not possible, but if you look at differences, in HTML output from mandoc are broken vertical spaces (some are totally missing) or missing all different font families. If problem is in POD --> manpage converter (Pod::Man module), I can look at it. But at the first I would need to know what mandoc is able to process and what not. -- Pali Rohár pali.rohar@gmail.com [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 195 bytes --] ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: mandoc & perl documentation 2018-09-13 15:12 mandoc & perl documentation Pali Rohár @ 2018-09-13 15:32 ` Anthony J. Bentley 2018-09-13 15:36 ` Pali Rohár 2018-10-11 7:52 ` Pali Rohár 1 sibling, 1 reply; 19+ messages in thread From: Anthony J. Bentley @ 2018-09-13 15:32 UTC (permalink / raw) To: discuss Hi Pali, Pali Rohár writes: > In perl world is documentation for perl modules or perl scripts writing > in the POD format. Build process for perl scripts/modules then convert > POD documentation into manpages and install it into standard system > location. > > I looked at Debian manpages which uses mandoc for converting man pages > to HTML and basically documentation for perl modules is not good. > > For example this is HTMLized manpage for Email::Address::XS perl module: > https://manpages.debian.org/Email::Address::XS > > There is also converting tool which formats POD documentation directly > into HTML output. And for Email::Address::XS module is looks like: > https://metacpan.org/pod/Email::Address::XS > > So, I would like to ask, how can be HTML output generated from perl > manpages improved (process: POD --> mandoc --> HTML), so documentation > would be more close to the native HTML output (process: POD --> HTML)? LibreSSL's documentation was originally in pod, and was converted to mdoc by Ingo and myself. We used Kristaps's pod2mdoc(1) as a base, and fixed up the resulting mdoc source to be more semantic. https://mandoc.bsd.lv/pod2mdoc/ If you want to keep the source formatting in pod, you could use pod2mdoc during the build. The result is not incredibly good due to an inherent lack of semantics in pod, but it is better than pod2man output. I imagine a nicer result would come from keeping the source in mdoc format and converting to pod during the build, but I'm not aware of any such converter yet... -- Anthony J. Bentley -- To unsubscribe send an email to discuss+unsubscribe@mandoc.bsd.lv ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: mandoc & perl documentation 2018-09-13 15:32 ` Anthony J. Bentley @ 2018-09-13 15:36 ` Pali Rohár 0 siblings, 0 replies; 19+ messages in thread From: Pali Rohár @ 2018-09-13 15:36 UTC (permalink / raw) To: discuss [-- Attachment #1: Type: text/plain, Size: 1888 bytes --] On Thursday 13 September 2018 09:32:48 Anthony J. Bentley wrote: > Hi Pali, > > Pali Rohár writes: > > In perl world is documentation for perl modules or perl scripts writing > > in the POD format. Build process for perl scripts/modules then convert > > POD documentation into manpages and install it into standard system > > location. > > > > I looked at Debian manpages which uses mandoc for converting man pages > > to HTML and basically documentation for perl modules is not good. > > > > For example this is HTMLized manpage for Email::Address::XS perl module: > > https://manpages.debian.org/Email::Address::XS > > > > There is also converting tool which formats POD documentation directly > > into HTML output. And for Email::Address::XS module is looks like: > > https://metacpan.org/pod/Email::Address::XS > > > > So, I would like to ask, how can be HTML output generated from perl > > manpages improved (process: POD --> mandoc --> HTML), so documentation > > would be more close to the native HTML output (process: POD --> HTML)? > > LibreSSL's documentation was originally in pod, and was converted to > mdoc by Ingo and myself. We used Kristaps's pod2mdoc(1) as a base, and > fixed up the resulting mdoc source to be more semantic. > > https://mandoc.bsd.lv/pod2mdoc/ > > If you want to keep the source formatting in pod, you could use pod2mdoc > during the build. The result is not incredibly good due to an inherent > lack of semantics in pod, but it is better than pod2man output. > > I imagine a nicer result would come from keeping the source in mdoc > format and converting to pod during the build, but I'm not aware of > any such converter yet... That is not possible for general usage. Documentation for perl modules are written in POD and would be written also in the future... -- Pali Rohár pali.rohar@gmail.com [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 195 bytes --] ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: mandoc & perl documentation 2018-09-13 15:12 mandoc & perl documentation Pali Rohár 2018-09-13 15:32 ` Anthony J. Bentley @ 2018-10-11 7:52 ` Pali Rohár 2018-10-11 8:54 ` Jan Stary 2018-10-23 17:45 ` Ingo Schwarze 1 sibling, 2 replies; 19+ messages in thread From: Pali Rohár @ 2018-10-11 7:52 UTC (permalink / raw) To: discuss On Thursday 13 September 2018 17:12:26 Pali Rohár wrote: > Hello! > > In perl world is documentation for perl modules or perl scripts writing > in the POD format. Build process for perl scripts/modules then convert > POD documentation into manpages and install it into standard system > location. > > I looked at Debian manpages which uses mandoc for converting man pages > to HTML and basically documentation for perl modules is not good. > > For example this is HTMLized manpage for Email::Address::XS perl module: > https://manpages.debian.org/Email::Address::XS > > There is also converting tool which formats POD documentation directly > into HTML output. And for Email::Address::XS module is looks like: > https://metacpan.org/pod/Email::Address::XS > > So, I would like to ask, how can be HTML output generated from perl > manpages improved (process: POD --> mandoc --> HTML), so documentation > would be more close to the native HTML output (process: POD --> HTML)? > > I understand that something like syntax highlighting is not possible, > but if you look at differences, in HTML output from mandoc are broken > vertical spaces (some are totally missing) or missing all different font > families. > > If problem is in POD --> manpage converter (Pod::Man module), I can look > at it. But at the first I would need to know what mandoc is able to > process and what not. > Just to note, raw manpage (generated by Pod::Man) is available there: https://manpages.debian.org/Email::Address::XS.3pm.en.gz And viewing it on terminal does not case problems with vertical spaces like in HTML output. So it is problem in mandoc HTML generator? -- Pali Rohár pali.rohar@gmail.com -- To unsubscribe send an email to discuss+unsubscribe@mandoc.bsd.lv ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: mandoc & perl documentation 2018-10-11 7:52 ` Pali Rohár @ 2018-10-11 8:54 ` Jan Stary 2018-10-23 17:45 ` Ingo Schwarze 1 sibling, 0 replies; 19+ messages in thread From: Jan Stary @ 2018-10-11 8:54 UTC (permalink / raw) To: discuss On Oct 11 09:52:47, pali.rohar@gmail.com wrote: > On Thursday 13 September 2018 17:12:26 Pali Rohár wrote: > > In perl world is documentation for perl modules or perl scripts writing > > in the POD format. Build process for perl scripts/modules then convert > > POD documentation into manpages and install it into standard system > > location. > > > > I looked at Debian manpages which uses mandoc for converting man pages > > to HTML and basically documentation for perl modules is not good. > > > > For example this is HTMLized manpage for Email::Address::XS perl module: > > https://manpages.debian.org/Email::Address::XS > > > > There is also converting tool which formats POD documentation directly > > into HTML output. And for Email::Address::XS module is looks like: > > https://metacpan.org/pod/Email::Address::XS You might want to try http://mandoc.bsd.lv/pod2mdoc/ Jan -- To unsubscribe send an email to discuss+unsubscribe@mandoc.bsd.lv ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: mandoc & perl documentation 2018-10-11 7:52 ` Pali Rohár 2018-10-11 8:54 ` Jan Stary @ 2018-10-23 17:45 ` Ingo Schwarze 2018-10-24 8:03 ` Pali Rohár 1 sibling, 1 reply; 19+ messages in thread From: Ingo Schwarze @ 2018-10-23 17:45 UTC (permalink / raw) To: pali.rohar; +Cc: discuss Hi Pali, Pali Rohar wrote on Thu, Oct 11, 2018 at 09:52:47AM +0200: > On Thursday 13 September 2018 17:12:26 Pali Rohar wrote: >> In perl world is documentation for perl modules or perl scripts writing >> in the POD format. Build process for perl scripts/modules then convert >> POD documentation into manpages and install it into standard system >> location. >> >> I looked at Debian manpages which uses mandoc for converting man pages >> to HTML and basically documentation for perl modules is not good. >> >> For example this is HTMLized manpage for Email::Address::XS perl module: >> https://manpages.debian.org/Email::Address::XS >> >> There is also converting tool which formats POD documentation directly >> into HTML output. And for Email::Address::XS module is looks like: >> https://metacpan.org/pod/Email::Address::XS >> >> So, I would like to ask, how can be HTML output generated from perl >> manpages improved (process: POD --> mandoc --> HTML), so documentation >> would be more close to the native HTML output (process: POD --> HTML)? >> >> I understand that something like syntax highlighting is not possible, >> but if you look at differences, in HTML output from mandoc are broken >> vertical spaces (some are totally missing) At first, i got confused because your report isn't really related to the POD format at all (but your mail misled me to think so), because your English is slightly hard to understand, because the actual bug you were trying to report was well hidden near the end of the text, because you only vaguely alluded to what was wrong with the output without being specific, and because i couldn't readily access the actual source document you were trying to format - and then i forgot about the report. Sorry for the delay! >> or missing all different font families. I'm still not sure what you are alluding to here - can you be more specific? >> If problem is in POD --> manpage converter (Pod::Man module), I can >> look at it. In general, that is not very likely. Pod2man is very stable software that rarely changes nowadays, and i hardly ever found a bug in it - well, maybe one in a decade or so. Besides, even if pod2man(1) would contain a bug, mandoc(1) should possibly try to cope because pod2man(1) is so stable and widespread that whatever it does can almost be considered a feature. >> But at the first I would need to know what mandoc is able to >> process and what not. Most of that is documented in the man(7) and roff(7) manual pages included in the mandoc distribution. To explain more details, i would need a more specific question - which feature is it that you feel unsure whether mandoc implements it or not? Besides, (new) manual pages should really only use a tiny fraction of the features implemented in mandoc. Most of the functionality is provided purely fo backward compatibility. > Just to note, raw manpage (generated by Pod::Man) is available there: > https://manpages.debian.org/Email::Address::XS.3pm.en.gz Oh yes, that link is helpful, and thanks for the reminder. > And viewing it on terminal does not case problems with vertical spaces > like in HTML output. > > So it is problem in mandoc HTML generator? Yes, in the mandoc -man -Thtml formatter; i fixed it with the commit appended below. In general, finding problems in -man -Thtml output is still more likely than in -mdoc -Thtml because the man(7) language is much more complicated than mdoc(7), much less suited to translation to HTML because it is purely presentational, and much less used in practice, so mostly untested. Thanks for the report and sorry again for the delay, Ingo Log Message: ----------- Input lines that are not blank but generate no output, for example lines containing nothing but "\&", are significant in no-fill mode and can be represented by blank lines inside <pre>. Fixing a bug that Pali dot Rohar at gmail dot com found in pod2man(1) output, for example Email::Address::XS(3p). While here, inside no-fill mode, there is no need to encode totally blank input lines by emulating .PP - just let them through as we are inside <pre> anyway. Modified Files: -------------- mandoc: man_html.c Revision Data ------------- Index: man_html.c =================================================================== RCS file: /home/cvs/mandoc/mandoc/man_html.c,v retrieving revision 1.156 retrieving revision 1.157 diff -Lman_html.c -Lman_html.c -u -p -r1.156 -r1.157 --- man_html.c +++ man_html.c @@ -264,7 +264,7 @@ print_man_node(MAN_ARGS) n->flags & NODE_LINE && *n->string == ' ' && (h->flags & HTML_NONEWLINE) == 0) print_otag(h, TAG_BR, ""); - if (*n->string != '\0') + if (want_fillmode == MAN_nf || *n->string != '\0') break; print_paragraph(h); return; @@ -338,8 +338,11 @@ print_man_node(MAN_ARGS) print_stagq(h, t); if (fillmode(h, 0) == MAN_nf && - n->next != NULL && n->next->flags & NODE_LINE) + n->next != NULL && n->next->flags & NODE_LINE) { + /* In .nf = <pre>, print even empty lines. */ + h->col++; print_endline(h); + } } /* -- To unsubscribe send an email to discuss+unsubscribe@mandoc.bsd.lv ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: mandoc & perl documentation 2018-10-23 17:45 ` Ingo Schwarze @ 2018-10-24 8:03 ` Pali Rohár 2018-10-25 1:51 ` Ingo Schwarze 0 siblings, 1 reply; 19+ messages in thread From: Pali Rohár @ 2018-10-24 8:03 UTC (permalink / raw) To: Ingo Schwarze; +Cc: discuss On Tuesday 23 October 2018 19:45:45 Ingo Schwarze wrote: > Hi Pali, > > Pali Rohar wrote on Thu, Oct 11, 2018 at 09:52:47AM +0200: > > On Thursday 13 September 2018 17:12:26 Pali Rohar wrote: > > >> In perl world is documentation for perl modules or perl scripts writing > >> in the POD format. Build process for perl scripts/modules then convert > >> POD documentation into manpages and install it into standard system > >> location. > >> > >> I looked at Debian manpages which uses mandoc for converting man pages > >> to HTML and basically documentation for perl modules is not good. > >> > >> For example this is HTMLized manpage for Email::Address::XS perl module: > >> https://manpages.debian.org/Email::Address::XS > >> > >> There is also converting tool which formats POD documentation directly > >> into HTML output. And for Email::Address::XS module is looks like: > >> https://metacpan.org/pod/Email::Address::XS > >> > >> So, I would like to ask, how can be HTML output generated from perl > >> manpages improved (process: POD --> mandoc --> HTML), so documentation > >> would be more close to the native HTML output (process: POD --> HTML)? > >> > >> I understand that something like syntax highlighting is not possible, > >> but if you look at differences, in HTML output from mandoc are broken > >> vertical spaces (some are totally missing) > > At first, i got confused because your report isn't really related > to the POD format at all (but your mail misled me to think so), > because your English is slightly hard to understand, because the > actual bug you were trying to report was well hidden near the end > of the text, because you only vaguely alluded to what was wrong with > the output without being specific, and because i couldn't readily > access the actual source document you were trying to format - and > then i forgot about the report. Sorry for the delay! Hi Ingo! Sorry for that. English is not my native language and I guessed that problem could be in Pod::Man... > >> or missing all different font families. > > I'm still not sure what you are alluding to here - can you be more > specific? Different font families. E.g. directive C<...> in POD switches font family to typewriter/monospaced, I<...> to italic, B<...> to bold... Looks like that bold and italic families are working. But typewriter/monospaced font is somehow ignored or unsupported in html output from mandoc. If you look at the output for Email::Address::XS, then whole SYNOPSIS should be written in typewriter/monospaced font. Or e.g. section "Deprecated Functions and Variables" has also some keywords in monospaced font and remaining parts are in normal/roman font. Compare it with html output on metacpan to see how it should look like. > >> If problem is in POD --> manpage converter (Pod::Man module), I can > >> look at it. > > In general, that is not very likely. Pod2man is very stable software > that rarely changes nowadays, and i hardly ever found a bug in it - > well, maybe one in a decade or so. > > Besides, even if pod2man(1) would contain a bug, mandoc(1) should > possibly try to cope because pod2man(1) is so stable and widespread > that whatever it does can almost be considered a feature. Ok. But seems that Pod::Man is still under development and fixes bugs... https://metacpan.org/changes/distribution/podlators > >> But at the first I would need to know what mandoc is able to > >> process and what not. > > Most of that is documented in the man(7) and roff(7) manual pages > included in the mandoc distribution. To explain more details, i > would need a more specific question - which feature is it that > you feel unsure whether mandoc implements it or not? > > Besides, (new) manual pages should really only use a tiny fraction > of the features implemented in mandoc. Most of the functionality > is provided purely fo backward compatibility. > > > Just to note, raw manpage (generated by Pod::Man) is available there: > > https://manpages.debian.org/Email::Address::XS.3pm.en.gz > > Oh yes, that link is helpful, and thanks for the reminder. Btw, link to raw manpage is also in the upper right corner of HTMLized Debian page. > > And viewing it on terminal does not case problems with vertical spaces > > like in HTML output. > > > > So it is problem in mandoc HTML generator? > > Yes, in the mandoc -man -Thtml formatter; i fixed it with the > commit appended below. Great, thank you! > In general, finding problems in -man -Thtml output is still more > likely than in -mdoc -Thtml because the man(7) language is much > more complicated than mdoc(7), much less suited to translation to > HTML because it is purely presentational, and much less used in > practice, so mostly untested. > > Thanks for the report and sorry again for the delay, > Ingo > > > Log Message: > ----------- > Input lines that are not blank but generate no output, > for example lines containing nothing but "\&", are significant > in no-fill mode and can be represented by blank lines inside <pre>. > Fixing a bug that Pali dot Rohar at gmail dot com found > in pod2man(1) output, for example Email::Address::XS(3p). > > While here, inside no-fill mode, there is no need to encode > totally blank input lines by emulating .PP - just let them > through as we are inside <pre> anyway. > > Modified Files: > -------------- > mandoc: > man_html.c > > Revision Data > ------------- > Index: man_html.c > =================================================================== > RCS file: /home/cvs/mandoc/mandoc/man_html.c,v > retrieving revision 1.156 > retrieving revision 1.157 > diff -Lman_html.c -Lman_html.c -u -p -r1.156 -r1.157 > --- man_html.c > +++ man_html.c > @@ -264,7 +264,7 @@ print_man_node(MAN_ARGS) > n->flags & NODE_LINE && *n->string == ' ' && > (h->flags & HTML_NONEWLINE) == 0) > print_otag(h, TAG_BR, ""); > - if (*n->string != '\0') > + if (want_fillmode == MAN_nf || *n->string != '\0') > break; > print_paragraph(h); > return; > @@ -338,8 +338,11 @@ print_man_node(MAN_ARGS) > print_stagq(h, t); > > if (fillmode(h, 0) == MAN_nf && > - n->next != NULL && n->next->flags & NODE_LINE) > + n->next != NULL && n->next->flags & NODE_LINE) { > + /* In .nf = <pre>, print even empty lines. */ > + h->col++; > print_endline(h); > + } > } > > /* -- Pali Rohár pali.rohar@gmail.com -- To unsubscribe send an email to discuss+unsubscribe@mandoc.bsd.lv ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: mandoc & perl documentation 2018-10-24 8:03 ` Pali Rohár @ 2018-10-25 1:51 ` Ingo Schwarze 2018-10-25 8:10 ` Pali Rohár 2018-11-04 20:00 ` Pali Rohár 0 siblings, 2 replies; 19+ messages in thread From: Ingo Schwarze @ 2018-10-25 1:51 UTC (permalink / raw) To: Pali Rohar; +Cc: discuss Hi Pali, Pali Rohar wrote on Wed, Oct 24, 2018 at 10:03:22AM +0200: > Different font families. E.g. directive C<...> in POD switches font > family to typewriter/monospaced, I<...> to italic, B<...> to bold... Oh. Italic and bold are not font *families*, but font *styles*. Font families are things like Times, Garamond, and Helvetica. Groff does support switching these, but fortunately nobody uses that in manual pages, so mandoc(1) doesn't provide font family support at all, except that it parses and ignores the \fam request. > Looks like that bold and italic families are working. > > But typewriter/monospaced font is somehow ignored or unsupported > in html output from mandoc. Not in general. Look at https://man.openbsd.org/strlcpy https://man.openbsd.org/environ For example, code samples and environment variables *are* set in typewriter/monospaced font. > If you look at the output for Email::Address::XS, then whole > SYNOPSIS should be written in typewriter/monospaced font. On the one hand, no, a SYNOPSIS should absolutely not be written in typewriter/monospaced font, consider stuff like https://man.openbsd.org/rpc which would look even more horrible than it already does. On the other hand, manpages.debian.org renders absolutely *everything* in typewriter/monospaced font. That is a conscious choice by Michael Stapelberg (the Debian developer who built and maintains the server, including being the author of critical parts of the software running on it). I mildly disagree with that specific choice. His rationale is that manual pages have traditionally been presented in monospaced font and people have become used to it. But i don't think anybody would have problems reading running text in proportional font, and people will quickly get used to it - in particular since almost nothing else they read on the web uses a monospaced font as the main text font. I don't think it is wise to artificially make manual pages look archaic. Anyway, that choice of course kills the distinction between proportional and monospaced font, even where that distinction could be derived from the markup that is present in the manual page source code. > Or e.g. section > "Deprecated Functions and Variables" has also some keywords in > monospaced font and remaining parts are in normal/roman font. > Compare it with html output on metacpan to see how it should look like. Indeed, you found another bug. Thank you very much, in particular for the more specific explanation! I fixed it with the commit below and also installed the improved code on man.openbsd.org right away such that you can look at Perl manuals and see whether it helps, for example https://man.openbsd.org/strict Of course, only core Perl manuals are available on that site, not the whole of CPAN. > Btw, link to raw manpage is also in the upper right corner of > HTMLized Debian page. Oh, good point, i should have remembered that from my joint work with Michael, or just seen it when looking at the page... Thanks again for your useful reports, even though i have been somewhat slow at understanding them! Yours, Ingo Log Message: ----------- Implement the \f(CW and \f(CR (constant width font) escape sequences for HTML output. Somewhat relevant because pod2man(1) relies on this. Missing feature reported by Pali dot Rohar at gmail dot com. Note that constant width font was already correctly selected before this when required by semantic markup. Only attempting physical markup with the low-level escape sequence was ineffective. Modified Files: -------------- mandoc: html.c html.h mandoc.c mandoc.h mdoc_markdown.c roff.c term.c Revision Data ------------- Index: term.c =================================================================== RCS file: /home/cvs/mandoc/mandoc/term.c,v retrieving revision 1.275 retrieving revision 1.276 diff -Lterm.c -Lterm.c -u -p -r1.275 -r1.276 --- term.c +++ term.c @@ -510,6 +510,7 @@ term_word(struct termp *p, const char *w term_fontrepl(p, TERMFONT_BI); continue; case ESCAPE_FONT: + case ESCAPE_FONTCW: case ESCAPE_FONTROMAN: term_fontrepl(p, TERMFONT_NONE); continue; Index: mandoc.h =================================================================== RCS file: /home/cvs/mandoc/mandoc/mandoc.h,v retrieving revision 1.253 retrieving revision 1.254 diff -Lmandoc.h -Lmandoc.h -u -p -r1.253 -r1.254 --- mandoc.h +++ mandoc.h @@ -438,6 +438,7 @@ enum mandoc_esc { ESCAPE_FONTITALIC, /* italic font mode */ ESCAPE_FONTBI, /* bold italic font mode */ ESCAPE_FONTROMAN, /* roman font mode */ + ESCAPE_FONTCW, /* constant width font mode */ ESCAPE_FONTPREV, /* previous font mode */ ESCAPE_NUMBERED, /* a numbered glyph */ ESCAPE_UNICODE, /* a unicode codepoint */ Index: mdoc_markdown.c =================================================================== RCS file: /home/cvs/mandoc/mandoc/mdoc_markdown.c,v retrieving revision 1.26 retrieving revision 1.27 diff -Lmdoc_markdown.c -Lmdoc_markdown.c -u -p -r1.26 -r1.27 --- mdoc_markdown.c +++ mdoc_markdown.c @@ -600,6 +600,7 @@ md_word(const char *s) nextfont = "***"; break; case ESCAPE_FONT: + case ESCAPE_FONTCW: case ESCAPE_FONTROMAN: nextfont = ""; break; Index: html.h =================================================================== RCS file: /home/cvs/mandoc/mandoc/html.h,v retrieving revision 1.94 retrieving revision 1.95 diff -Lhtml.h -Lhtml.h -u -p -r1.94 -r1.95 --- html.h +++ html.h @@ -72,6 +72,7 @@ enum htmlfont { HTMLFONT_BOLD, HTMLFONT_ITALIC, HTMLFONT_BI, + HTMLFONT_CW, HTMLFONT_MAX }; Index: mandoc.c =================================================================== RCS file: /home/cvs/mandoc/mandoc/mandoc.c,v retrieving revision 1.107 retrieving revision 1.108 diff -Lmandoc.c -Lmandoc.c -u -p -r1.107 -r1.108 --- mandoc.c +++ mandoc.c @@ -304,8 +304,13 @@ mandoc_escape(const char **end, const ch case ESCAPE_FONT: if (*sz == 2) { if (**start == 'C') { + if ((*start)[1] == 'W' || + (*start)[1] == 'R') { + gly = ESCAPE_FONTCW; + break; + } /* - * Treat constant-width font modes + * Treat other constant-width font modes * just like regular font modes. */ (*start)++; Index: roff.c =================================================================== RCS file: /home/cvs/mandoc/mandoc/roff.c,v retrieving revision 1.341 retrieving revision 1.342 diff -Lroff.c -Lroff.c -u -p -r1.341 -r1.342 --- roff.c +++ roff.c @@ -3361,6 +3361,7 @@ roff_char(ROFF_ARGS) case ESCAPE_FONTITALIC: case ESCAPE_FONTBOLD: case ESCAPE_FONTBI: + case ESCAPE_FONTCW: case ESCAPE_FONTPREV: font++; break; Index: html.c =================================================================== RCS file: /home/cvs/mandoc/mandoc/html.c,v retrieving revision 1.241 retrieving revision 1.242 diff -Lhtml.c -Lhtml.c -u -p -r1.241 -r1.242 --- html.c +++ html.c @@ -228,6 +228,9 @@ print_metaf(struct html *h, enum mandoc_ case ESCAPE_FONTBI: font = HTMLFONT_BI; break; + case ESCAPE_FONTCW: + font = HTMLFONT_CW; + break; case ESCAPE_FONT: case ESCAPE_FONTROMAN: font = HTMLFONT_NONE; @@ -255,6 +258,9 @@ print_metaf(struct html *h, enum mandoc_ h->metaf = print_otag(h, TAG_B, ""); print_otag(h, TAG_I, ""); break; + case HTMLFONT_CW: + h->metaf = print_otag(h, TAG_SPAN, "c", "Li"); + break; default: break; } @@ -408,6 +414,7 @@ print_encode(struct html *h, const char case ESCAPE_FONTBOLD: case ESCAPE_FONTITALIC: case ESCAPE_FONTBI: + case ESCAPE_FONTCW: case ESCAPE_FONTROMAN: if (0 == norecurse) print_metaf(h, esc); @@ -737,6 +744,9 @@ print_text(struct html *h, const char *w case HTMLFONT_BI: h->metaf = print_otag(h, TAG_B, ""); print_otag(h, TAG_I, ""); + break; + case HTMLFONT_CW: + h->metaf = print_otag(h, TAG_SPAN, "c", "Li"); break; default: print_indent(h); -- To unsubscribe send an email to discuss+unsubscribe@mandoc.bsd.lv ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: mandoc & perl documentation 2018-10-25 1:51 ` Ingo Schwarze @ 2018-10-25 8:10 ` Pali Rohár 2018-10-25 21:30 ` Ingo Schwarze 2019-01-17 8:02 ` Ingo Schwarze 2018-11-04 20:00 ` Pali Rohár 1 sibling, 2 replies; 19+ messages in thread From: Pali Rohár @ 2018-10-25 8:10 UTC (permalink / raw) To: Ingo Schwarze; +Cc: discuss Hi! On Thursday 25 October 2018 03:51:33 Ingo Schwarze wrote: > Hi Pali, > > Pali Rohar wrote on Wed, Oct 24, 2018 at 10:03:22AM +0200: > > > Different font families. E.g. directive C<...> in POD switches font > > family to typewriter/monospaced, I<...> to italic, B<...> to bold... > > Oh. Italic and bold are not font *families*, but font *styles*. > Font families are things like Times, Garamond, and Helvetica. > Groff does support switching these, but fortunately nobody uses > that in manual pages, so mandoc(1) doesn't provide font family > support at all, except that it parses and ignores the \fam request. Alright! > > Looks like that bold and italic families are working. > > > > But typewriter/monospaced font is somehow ignored or unsupported > > in html output from mandoc. > > Not in general. Look at > > https://man.openbsd.org/strlcpy > https://man.openbsd.org/environ > > For example, code samples and environment variables *are* set in > typewriter/monospaced font. > > > If you look at the output for Email::Address::XS, then whole > > SYNOPSIS should be written in typewriter/monospaced font. > > On the one hand, no, a SYNOPSIS should absolutely not be written > in typewriter/monospaced font, consider stuff like > > https://man.openbsd.org/rpc > > which would look even more horrible than it already does. In perl documentation it is very common to put code examples into SYNOPSIS and code examples should be really in monospaced font. rpc manpage has function prototypes in SYNOPSIS, so it is probably different thing. > On the other hand, manpages.debian.org renders absolutely *everything* > in typewriter/monospaced font. Yes, I saw it. > That is a conscious choice by Michael > Stapelberg (the Debian developer who built and maintains the server, > including being the author of critical parts of the software running > on it). I mildly disagree with that specific choice. His rationale > is that manual pages have traditionally been presented in monospaced > font and people have become used to it. This is because terminals in most cases do not support non-monospaced fonts. > But i don't think anybody > would have problems reading running text in proportional font, and > people will quickly get used to it - in particular since almost > nothing else they read on the web uses a monospaced font as the > main text font. I don't think it is wise to artificially make > manual pages look archaic. I agree with this. E.g. documentation for cpan modules on metacpan.org is very very similar to documentation in system manpages, use more font styles (not only monospaced) and looks much better. > Anyway, that choice of course kills the distinction between > proportional and monospaced font, even where that distinction could > be derived from the markup that is present in the manual page source > code. I see that output of monospaced font on debian manpage server is put into double quotes. > > Or e.g. section > > "Deprecated Functions and Variables" has also some keywords in > > monospaced font and remaining parts are in normal/roman font. > > Compare it with html output on metacpan to see how it should look like. > > Indeed, you found another bug. > Thank you very much, in particular for the more specific explanation! > > I fixed it with the commit below and also installed the improved > code on man.openbsd.org right away such that you can look at Perl > manuals and see whether it helps, for example > > https://man.openbsd.org/strict That is much better! Thank you. I have there 3 points: 1) It is still needed to double quote text which is written in monospaced font? Compare first sentence in DESCRIPTION https://man.openbsd.org/strict and https://metacpan.org/pod/strict On man.openbsd is word "strict" put into double quotes, but on metacpan not. 2) When I try to select any code block (e.g. SYNOPSIS or "strict subs" section) on man.openbsd, then every code line is prefixed by four spaces. When I select it on metacpan, then there is no leading space. Is there particular reason for it? 3) On that https://man.openbsd.org/strict page is section name "strict refs" fully invisible. It is joined together with previous paragraph and also with description of that section. Reader does not see that there is paragraph about "strict refs" section. It should be visually separated. To compare, look at metacpan page and search for "strict refs". > Of course, only core Perl manuals are available on that site, not > the whole of CPAN. > > > Btw, link to raw manpage is also in the upper right corner of > > HTMLized Debian page. > > Oh, good point, i should have remembered that from my joint work with > Michael, or just seen it when looking at the page... > > Thanks again for your useful reports, even though i have been > somewhat slow at understanding them! No problem! I'm happy even with slow improvements in rendering manpages. > Yours, > Ingo > > > Log Message: > ----------- > Implement the \f(CW and \f(CR (constant width font) escape sequences > for HTML output. Somewhat relevant because pod2man(1) relies on this. > Missing feature reported by Pali dot Rohar at gmail dot com. > > Note that constant width font was already correctly selected before > this when required by semantic markup. Only attempting physical > markup with the low-level escape sequence was ineffective. > > Modified Files: > -------------- > mandoc: > html.c > html.h > mandoc.c > mandoc.h > mdoc_markdown.c > roff.c > term.c > > Revision Data > ------------- > Index: term.c > =================================================================== > RCS file: /home/cvs/mandoc/mandoc/term.c,v > retrieving revision 1.275 > retrieving revision 1.276 > diff -Lterm.c -Lterm.c -u -p -r1.275 -r1.276 > --- term.c > +++ term.c > @@ -510,6 +510,7 @@ term_word(struct termp *p, const char *w > term_fontrepl(p, TERMFONT_BI); > continue; > case ESCAPE_FONT: > + case ESCAPE_FONTCW: > case ESCAPE_FONTROMAN: > term_fontrepl(p, TERMFONT_NONE); > continue; > Index: mandoc.h > =================================================================== > RCS file: /home/cvs/mandoc/mandoc/mandoc.h,v > retrieving revision 1.253 > retrieving revision 1.254 > diff -Lmandoc.h -Lmandoc.h -u -p -r1.253 -r1.254 > --- mandoc.h > +++ mandoc.h > @@ -438,6 +438,7 @@ enum mandoc_esc { > ESCAPE_FONTITALIC, /* italic font mode */ > ESCAPE_FONTBI, /* bold italic font mode */ > ESCAPE_FONTROMAN, /* roman font mode */ > + ESCAPE_FONTCW, /* constant width font mode */ > ESCAPE_FONTPREV, /* previous font mode */ > ESCAPE_NUMBERED, /* a numbered glyph */ > ESCAPE_UNICODE, /* a unicode codepoint */ > Index: mdoc_markdown.c > =================================================================== > RCS file: /home/cvs/mandoc/mandoc/mdoc_markdown.c,v > retrieving revision 1.26 > retrieving revision 1.27 > diff -Lmdoc_markdown.c -Lmdoc_markdown.c -u -p -r1.26 -r1.27 > --- mdoc_markdown.c > +++ mdoc_markdown.c > @@ -600,6 +600,7 @@ md_word(const char *s) > nextfont = "***"; > break; > case ESCAPE_FONT: > + case ESCAPE_FONTCW: > case ESCAPE_FONTROMAN: > nextfont = ""; > break; > Index: html.h > =================================================================== > RCS file: /home/cvs/mandoc/mandoc/html.h,v > retrieving revision 1.94 > retrieving revision 1.95 > diff -Lhtml.h -Lhtml.h -u -p -r1.94 -r1.95 > --- html.h > +++ html.h > @@ -72,6 +72,7 @@ enum htmlfont { > HTMLFONT_BOLD, > HTMLFONT_ITALIC, > HTMLFONT_BI, > + HTMLFONT_CW, > HTMLFONT_MAX > }; > > Index: mandoc.c > =================================================================== > RCS file: /home/cvs/mandoc/mandoc/mandoc.c,v > retrieving revision 1.107 > retrieving revision 1.108 > diff -Lmandoc.c -Lmandoc.c -u -p -r1.107 -r1.108 > --- mandoc.c > +++ mandoc.c > @@ -304,8 +304,13 @@ mandoc_escape(const char **end, const ch > case ESCAPE_FONT: > if (*sz == 2) { > if (**start == 'C') { > + if ((*start)[1] == 'W' || > + (*start)[1] == 'R') { > + gly = ESCAPE_FONTCW; > + break; > + } > /* > - * Treat constant-width font modes > + * Treat other constant-width font modes > * just like regular font modes. > */ > (*start)++; > Index: roff.c > =================================================================== > RCS file: /home/cvs/mandoc/mandoc/roff.c,v > retrieving revision 1.341 > retrieving revision 1.342 > diff -Lroff.c -Lroff.c -u -p -r1.341 -r1.342 > --- roff.c > +++ roff.c > @@ -3361,6 +3361,7 @@ roff_char(ROFF_ARGS) > case ESCAPE_FONTITALIC: > case ESCAPE_FONTBOLD: > case ESCAPE_FONTBI: > + case ESCAPE_FONTCW: > case ESCAPE_FONTPREV: > font++; > break; > Index: html.c > =================================================================== > RCS file: /home/cvs/mandoc/mandoc/html.c,v > retrieving revision 1.241 > retrieving revision 1.242 > diff -Lhtml.c -Lhtml.c -u -p -r1.241 -r1.242 > --- html.c > +++ html.c > @@ -228,6 +228,9 @@ print_metaf(struct html *h, enum mandoc_ > case ESCAPE_FONTBI: > font = HTMLFONT_BI; > break; > + case ESCAPE_FONTCW: > + font = HTMLFONT_CW; > + break; > case ESCAPE_FONT: > case ESCAPE_FONTROMAN: > font = HTMLFONT_NONE; > @@ -255,6 +258,9 @@ print_metaf(struct html *h, enum mandoc_ > h->metaf = print_otag(h, TAG_B, ""); > print_otag(h, TAG_I, ""); > break; > + case HTMLFONT_CW: > + h->metaf = print_otag(h, TAG_SPAN, "c", "Li"); > + break; > default: > break; > } > @@ -408,6 +414,7 @@ print_encode(struct html *h, const char > case ESCAPE_FONTBOLD: > case ESCAPE_FONTITALIC: > case ESCAPE_FONTBI: > + case ESCAPE_FONTCW: > case ESCAPE_FONTROMAN: > if (0 == norecurse) > print_metaf(h, esc); > @@ -737,6 +744,9 @@ print_text(struct html *h, const char *w > case HTMLFONT_BI: > h->metaf = print_otag(h, TAG_B, ""); > print_otag(h, TAG_I, ""); > + break; > + case HTMLFONT_CW: > + h->metaf = print_otag(h, TAG_SPAN, "c", "Li"); > break; > default: > print_indent(h); -- Pali Rohár pali.rohar@gmail.com -- To unsubscribe send an email to discuss+unsubscribe@mandoc.bsd.lv ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: mandoc & perl documentation 2018-10-25 8:10 ` Pali Rohár @ 2018-10-25 21:30 ` Ingo Schwarze 2018-10-26 8:15 ` Pali Rohár 2019-01-17 8:02 ` Ingo Schwarze 1 sibling, 1 reply; 19+ messages in thread From: Ingo Schwarze @ 2018-10-25 21:30 UTC (permalink / raw) To: Pali Rohár; +Cc: discuss Hi Pali, Pali Rohar wrote on Thu, Oct 25, 2018 at 10:10:35AM +0200: > On Thursday 25 October 2018 03:51:33 Ingo Schwarze wrote: > > Pali Rohar wrote on Wed, Oct 24, 2018 at 10:03:22AM +0200: > In perl documentation it is very common to put code examples > into SYNOPSIS That is abuse and should not be done. The SYNOPSIS must only contain authoritative information and must be as concise as possible. Examples belong below EXAMPLES and nowhere else. > and code examples should be really in monospaced font. Yes, that is true. > E.g. documentation for cpan modules on metacpan.org > is very very similar to documentation in system manpages, use more font > styles (not only monospaced) and looks much better. Strictly speaking, "monospaced" is a super-family (for example, the Helvetica family is a proportional family and Courier is a monospaced family). But since mandoc does not bother with families at all, it somewhat incorrectly implements "monospaced" as a font style alongside roman, bold, italic, and bold-italic. That said, which other font styles does metacpan.org use besides roman, bold, italic, and the pseudo-style "monospaced", and what for? Having a brief look, i failed to find any. > I see that output of monospaced font on debian manpage server is put > into double quotes. Well, that is pod2man(2)'s doing. At many places, it says things like .ie n .IP """strict refs""" 6 .el .IP "\f(CWstrict refs\fR" 6 Translating that into plain English in case you are not too familiar with the admittedly weird roff(7) syntax: If we are formatting for non-typesetting output, emit a list tag starting with one '"' character, containing the words "strict refs", and ending with a matching quote, in a field 6 columns wide; otherwise, i.e. when formatting for typeset output (like PostScript or PDF), switch to constant width font for the tag, print the words "strict refs", and switch to roman font, again in a field 6 columns wide (with no quotes in this case). Mandoc always formats for non-typesetting output, so it always gets the quotes and never switches to constant width font for this particular input. This is one of the relatively rare cases where pod2man(1) is doing something that is a bad idea. First, in my personal opinion, manual pages should not use if-statements; though some might argue that in this case, to get the quotes for terminal output, it might be justified. But i think the quotes are irrelevant: Because the "strict ref" is located in a list tag, it is already obvious it is a syntax element being defined and not some running English text. Even more importantly, even if pod2man(1) insists on the .ie and on the quotes, then it should at least say .ie n .IP """\f(CWstrict refs\f(CW""" 6 .el .IP "\f(CWstrict refs\fR" 6 Some non-typesetting output devices (like mandoc HTML) do support constant width font, so why not tell them? In particular given that the running text right below heavily uses \f(CW no matter what: This generates a compile-time error if you access a variable that was neither explicitly declared (using any of \f(CW\*(C`my\*(C'\fR, \f(CW\*(C`our\*(C'\fR, \f(CW\*(C`state\*(C'\fR, ... You said you could possibly help to improve pod2man(1). Do you think you could ask them to get this particular kind of .IP fixed? Preferably to simply .IP "\f(CWstrict refs\fR" 6 or if they really want quotes even in .IP to .IP "\f(CW\*(C`strict refs\*(C'\fR" 6 either way without any "if", or if they totally insist at least to .ie n .IP """\f(CWstrict refs\f(CW""" 6 .el .IP "\f(CWstrict refs\fR" 6 > 1) It is still needed to double quote text which is written in > monospaced font? In .IP, I don't think so. I think it was never needed, see above. But that would have to be changed in pod2man(1), not in mandoc(1). And no, i cannot change mandoc(1) to attempt rendering for real typesetting devices. Code protected by ".if t" or ".ie n .el" typically uses even more scary low-level roff(7) features that mandoc doesn't, and can hardly, implement. > Compare first sentence in DESCRIPTION https://man.openbsd.org/strict and > https://metacpan.org/pod/strict On man.openbsd is word "strict" put into > double quotes, but on metacpan not. That is again a choice by pod2man(1), which this time makes more sense. The preamble emitted by pod2man(1) defines a strings named "C`" and "C'" as empty string on typesetting devices and as quotes on non-typesetting devices, and the main code emitted by pod2man(1) then uses the idioms "\f(CW\*(C" and "\*(C'\fR" to begin and end in-line code snippets, such that those get typeset in proportional font without quotes on typesetting devices and such that they get quoted on terminals - and, collaterally, *both* set in proportional font and quoted on non-typesetter devices that support proportional font like mandoc(1) HTML output. I think little can be done here. You probably do not want to take away *these* quotes because that would make the word look like running text on the terminal. And there is no way for the document to query whether monospace font looks different from the default font on the current output device, so the ".if n" kludge is half reasonable. > 2) When I try to select any code block (e.g. SYNOPSIS or "strict subs" > section) on man.openbsd, then every code line is prefixed by four > spaces. When I select it on metacpan, then there is no leading space. Is > there particular reason for it? The perlpod(1) manual defines: Verbatim Paragraph Verbatim paragraphs are usually used for presenting a codeblock or other text which does not require any special parsing or formatting, and which shouldn't be wrapped. A verbatim paragraph is distinguished by having its first character be a space or a tab. (And commonly, all its lines begin with spaces and/or tabs.) It should be reproduced exactly, with tabs assumed to be on 8-column boundaries. The source code of the strict(3p) manual looks like this: $ less /usr/src/gnu/usr.bin/perl/lib/strict.pm [...] =head1 SYNOPSIS use strict; use strict "vars"; use strict "refs"; use strict "subs"; [...] So the four space indentation is in the source code. It's not totally clear to me what "reproduced exactly" is supposed to mean, but pod2man(1)'s interpretation that this whitespace should be preserved doesn't seem totally unreasonable. It translates to man(7) as follows: $ less $(man -w strict) [...] .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& use strict; \& \& use strict "vars"; \& use strict "refs"; \& use strict "subs"; [...] I'm not convinced it would be better for pod2man(1) to strip this whitespace because on the terminal, the code block would not be distinguished from running text, neither by font nor by indentation. > 3) On that https://man.openbsd.org/strict page is section name "strict > refs" fully invisible. It is joined together with previous paragraph and > also with description of that section. Reader does not see that there is > paragraph about "strict refs" section. It should be visually separated. > To compare, look at metacpan page and search for "strict refs". That is not a section name, not even a subsection name, but merely a list tag formatted as follows: =over 6 =item C<strict refs> So the vertical spacing that metacpan does *after* the list tag looks dubious for me - doesn't that make many other lists look bad? But you are right that there should be vertical spacing *before* the list tag. However, that is very hard to fix in mandoc.css; the CSS code for ".Bl-tag > dt" (using float) is already excessively complicated and only barely works. It is not possible to add some margin-top to it without breaking it. Numerous attempts of many people to improve it have failed. At EuroBSDCon 2018, i met a colleague who talked about some new CSS feature that makes formatting of tagged lists work better if you want short tags left of the body and long tags above the body. He promised to send me details, but didn't come back to me yet. For now, i have made a TODO entry. Yours, Ingo Log Message: ----------- in -man -Thtml, vertical spacing is required before .IP Modified Files: -------------- mandoc: TODO Revision Data ------------- Index: TODO =================================================================== RCS file: /home/cvs/mandoc/mandoc/TODO,v retrieving revision 1.273 retrieving revision 1.274 diff -LTODO -LTODO -u -p -r1.273 -r1.274 --- TODO +++ TODO @@ -397,6 +397,12 @@ are mere guesses, and some may be wrong. it does seem cleaner.) loc ** exist ** algo * size * imp *** +- .IP wants vertical spacing before itself; + currently, it is formatted like .Bl -compact. + Fixing this requires getting rid of the "float" + in the CSS for .Bl-tag first. + Reminded by Pali Rohar 25 Oct 2018 10:10:35 +0200. + - format ".IP *" etc. as <ul> rather than <dl> https://github.com/Debian/debiman/issues/67 loc ** exist ** algo ** size * imp *** -- To unsubscribe send an email to discuss+unsubscribe@mandoc.bsd.lv ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: mandoc & perl documentation 2018-10-25 21:30 ` Ingo Schwarze @ 2018-10-26 8:15 ` Pali Rohár 2018-11-24 19:31 ` Ingo Schwarze 0 siblings, 1 reply; 19+ messages in thread From: Pali Rohár @ 2018-10-26 8:15 UTC (permalink / raw) To: Ingo Schwarze; +Cc: discuss Hi! On Thursday 25 October 2018 23:30:27 Ingo Schwarze wrote: > Hi Pali, > > Pali Rohar wrote on Thu, Oct 25, 2018 at 10:10:35AM +0200: > > On Thursday 25 October 2018 03:51:33 Ingo Schwarze wrote: > > > Pali Rohar wrote on Wed, Oct 24, 2018 at 10:03:22AM +0200: > > > In perl documentation it is very common to put code examples > > into SYNOPSIS > > That is abuse and should not be done. > > The SYNOPSIS must only contain authoritative information > and must be as concise as possible. > Examples belong below EXAMPLES and nowhere else. > > > and code examples should be really in monospaced font. > > Yes, that is true. > > > E.g. documentation for cpan modules on metacpan.org > > is very very similar to documentation in system manpages, use more font > > styles (not only monospaced) and looks much better. > > Strictly speaking, "monospaced" is a super-family (for example, the > Helvetica family is a proportional family and Courier is a > monospaced family). But since mandoc does not bother with families > at all, it somewhat incorrectly implements "monospaced" as a font > style alongside roman, bold, italic, and bold-italic. > > That said, which other font styles does metacpan.org use besides > roman, bold, italic, and the pseudo-style "monospaced", and what > for? Having a brief look, i failed to find any. I<...> - italic text B<...> - bold text C<...> - code text in a typewriter font (indication that this represents program text or some other form of computerese) F<...> - filenames, displayed in italics And you can do any combination of them (e.g. typewriter font which is both bold and italic together). Mapping table to troff font styles in Pod::Man source code is here: https://metacpan.org/source/RRA/podlators-4.11/lib/Pod/Man.pm#L190-205 > > I see that output of monospaced font on debian manpage server is put > > into double quotes. > > Well, that is pod2man(2)'s doing. At many places, it says things like > > .ie n .IP """strict refs""" 6 > .el .IP "\f(CWstrict refs\fR" 6 > > Translating that into plain English in case you are not too familiar > with the admittedly weird roff(7) syntax: > > If we are formatting for non-typesetting output, emit a list tag > starting with one '"' character, containing the words "strict > refs", and ending with a matching quote, in a field 6 columns wide; > otherwise, i.e. when formatting for typeset output (like PostScript > or PDF), switch to constant width font for the tag, print the > words "strict refs", and switch to roman font, again in a field > 6 columns wide (with no quotes in this case). > > Mandoc always formats for non-typesetting output, so it always gets > the quotes and never switches to constant width font for this > particular input. > > This is one of the relatively rare cases where pod2man(1) is doing > something that is a bad idea. First, in my personal opinion, manual > pages should not use if-statements; though some might argue that in > this case, to get the quotes for terminal output, it might be justified. > But i think the quotes are irrelevant: Because the "strict ref" is > located in a list tag, it is already obvious it is a syntax element > being defined and not some running English text. > > Even more importantly, even if pod2man(1) insists on the .ie and > on the quotes, then it should at least say > > .ie n .IP """\f(CWstrict refs\f(CW""" 6 > .el .IP "\f(CWstrict refs\fR" 6 > > Some non-typesetting output devices (like mandoc HTML) do support > constant width font, so why not tell them? In particular given > that the running text right below heavily uses \f(CW no matter what: > > This generates a compile-time error if you access a variable that > was neither explicitly declared (using any of \f(CW\*(C`my\*(C'\fR, > \f(CW\*(C`our\*(C'\fR, \f(CW\*(C`state\*(C'\fR, ... Now I'm looking into Pod::Man sources and that ".ie n" condition is generated only at one place (there are comments in code): https://metacpan.org/source/RRA/podlators-4.11/lib/Pod/Man.pm#L651-705 Plus decision if quoting is needed or not has some strange heuristic... https://metacpan.org/source/RRA/podlators-4.11/lib/Pod/Man.pm#L419-454 Looks like a big mess. > You said you could possibly help to improve pod2man(1). Do you > think you could ask them to get this particular kind of .IP fixed? > Preferably to simply > > .IP "\f(CWstrict refs\fR" 6 > > or if they really want quotes even in .IP to > > .IP "\f(CW\*(C`strict refs\*(C'\fR" 6 > > either way without any "if", or if they totally insist at least to > > .ie n .IP """\f(CWstrict refs\f(CW""" 6 > .el .IP "\f(CWstrict refs\fR" 6 Looks like that those ".ie n" conditions are there as a workaround for some Solaris bugs. Anyway, on terminal output everything is in typewriter/monospaced font, so double quotes make sense on terminal as some optical visualization that text is in different font style. For output devices which support also different font styles and not only typewriter (html, ps, pdf, ...), double quotes should not be used. So I guess some condition is still needed. In groff it could be possible to check for typewriter-like device via .T register, but such thing is not portable... I would ask maintainers of Pod::Man module what can be done with this problem or how can be situation improved. Question 1) below is just same problem as this. > > 1) It is still needed to double quote text which is written in > > monospaced font? > > In .IP, I don't think so. I think it was never needed, see above. > But that would have to be changed in pod2man(1), not in mandoc(1). > > And no, i cannot change mandoc(1) to attempt rendering for real > typesetting devices. Code protected by ".if t" or ".ie n .el" > typically uses even more scary low-level roff(7) features that > mandoc doesn't, and can hardly, implement. > > > Compare first sentence in DESCRIPTION https://man.openbsd.org/strict and > > https://metacpan.org/pod/strict On man.openbsd is word "strict" put into > > double quotes, but on metacpan not. > > That is again a choice by pod2man(1), which this time makes more sense. > The preamble emitted by pod2man(1) defines a strings named "C`" and "C'" > as empty string on typesetting devices and as quotes on non-typesetting > devices, and the main code emitted by pod2man(1) then uses the > idioms "\f(CW\*(C" and "\*(C'\fR" to begin and end in-line code snippets, > such that those get typeset in proportional font without quotes on > typesetting devices and such that they get quoted on terminals - > and, collaterally, *both* set in proportional font and quoted on > non-typesetter devices that support proportional font like mandoc(1) > HTML output. > > I think little can be done here. You probably do not want to take > away *these* quotes because that would make the word look like > running text on the terminal. And there is no way for the document > to query whether monospace font looks different from the default > font on the current output device, so the ".if n" kludge is half > reasonable. > > > 2) When I try to select any code block (e.g. SYNOPSIS or "strict subs" > > section) on man.openbsd, then every code line is prefixed by four > > spaces. When I select it on metacpan, then there is no leading space. Is > > there particular reason for it? > > The perlpod(1) manual defines: > > Verbatim Paragraph > Verbatim paragraphs are usually used for presenting a codeblock > or other text which does not require any special parsing or > formatting, and which shouldn't be wrapped. > > A verbatim paragraph is distinguished by having its first > character be a space or a tab. (And commonly, all its lines > begin with spaces and/or tabs.) It should be reproduced > exactly, with tabs assumed to be on 8-column boundaries. > > The source code of the strict(3p) manual looks like this: > > $ less /usr/src/gnu/usr.bin/perl/lib/strict.pm > [...] > =head1 SYNOPSIS > > use strict; > > use strict "vars"; > use strict "refs"; > use strict "subs"; > [...] > > So the four space indentation is in the source code. It's not) > totally clear to me what "reproduced exactly" is supposed to mean, Yea, this is also something which is not clear to me... I tried to find something about it... and in Pod::Simple documentation is explanation: https://metacpan.org/pod/Pod::Simple#$parser-%3Estrip_verbatim_indent(-SOMEVALUE-) Metacpan uses Pod::Simple::XHTML for converting POD to HTML and probably has its own function which do some magic with these leading spaces in source code blocks. > but pod2man(1)'s interpretation that this whitespace should be > preserved doesn't seem totally unreasonable. It translates > to man(7) as follows: > > $ less $(man -w strict) > [...] > .SH "SYNOPSIS" > .IX Header "SYNOPSIS" > .Vb 1 > \& use strict; > \& > \& use strict "vars"; > \& use strict "refs"; > \& use strict "subs"; > [...] > > I'm not convinced it would be better for pod2man(1) to strip this > whitespace because on the terminal, the code block would not be > distinguished from running text, neither by font nor by indentation. So mandoc here cannot do nothing. > > 3) On that https://man.openbsd.org/strict page is section name "strict > > refs" fully invisible. It is joined together with previous paragraph and > > also with description of that section. Reader does not see that there is > > paragraph about "strict refs" section. It should be visually separated. > > To compare, look at metacpan page and search for "strict refs". > > That is not a section name, not even a subsection name, but merely a > list tag formatted as follows: > > =over 6 > > =item C<strict refs> > > So the vertical spacing that metacpan does *after* the list tag looks > dubious for me - doesn't that make many other lists look bad? =item directive is used lot of times for describing functions or methods of some class. In perlpod documentation is written: And perhaps most importantly, keep the items consistent: either use "=item *" for all of them, to produce bullets; or use "=item 1.", "=item 2.", etc., to produce numbered lists; or use "=item foo", "=item bar", etc.--namely, things that look nothing like bullets or numbers. If you start with bullets or numbers, stick with them, as formatters use the first "=item" type to decide how to format the list. So it is questionable... Maybe bullets and numbers specified via =item should be formatted differently as "=item text"? > But you are right that there should be vertical spacing *before* > the list tag. However, that is very hard to fix in mandoc.css; > the CSS code for ".Bl-tag > dt" (using float) is already excessively > complicated and only barely works. It is not possible to add some > margin-top to it without breaking it. Numerous attempts of many > people to improve it have failed. At EuroBSDCon 2018, i met a > colleague who talked about some new CSS feature that makes formatting > of tagged lists work better if you want short tags left of the body > and long tags above the body. He promised to send me details, but > didn't come back to me yet. > > For now, i have made a TODO entry. > > Yours, > Ingo > > > Log Message: > ----------- > in -man -Thtml, vertical spacing is required before .IP > > Modified Files: > -------------- > mandoc: > TODO > > Revision Data > ------------- > Index: TODO > =================================================================== > RCS file: /home/cvs/mandoc/mandoc/TODO,v > retrieving revision 1.273 > retrieving revision 1.274 > diff -LTODO -LTODO -u -p -r1.273 -r1.274 > --- TODO > +++ TODO > @@ -397,6 +397,12 @@ are mere guesses, and some may be wrong. > it does seem cleaner.) > loc ** exist ** algo * size * imp *** > > +- .IP wants vertical spacing before itself; > + currently, it is formatted like .Bl -compact. > + Fixing this requires getting rid of the "float" > + in the CSS for .Bl-tag first. > + Reminded by Pali Rohar 25 Oct 2018 10:10:35 +0200. > + > - format ".IP *" etc. as <ul> rather than <dl> > https://github.com/Debian/debiman/issues/67 > loc ** exist ** algo ** size * imp *** -- Pali Rohár pali.rohar@gmail.com -- To unsubscribe send an email to discuss+unsubscribe@mandoc.bsd.lv ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: mandoc & perl documentation 2018-10-26 8:15 ` Pali Rohár @ 2018-11-24 19:31 ` Ingo Schwarze 2018-11-25 13:34 ` Pali Rohár 0 siblings, 1 reply; 19+ messages in thread From: Ingo Schwarze @ 2018-11-24 19:31 UTC (permalink / raw) To: Pali Rohar; +Cc: discuss Hi Pali, getting back to this matter, i had another, closer look and it seems to me that two aspects were still open: Pali Rohar wrote on Fri, Oct 26, 2018 at 10:15:19AM +0200: > On Thursday 25 October 2018 23:30:27 Ingo Schwarze wrote: >> Pali Rohar wrote on Thu, Oct 25, 2018 at 10:10:35AM +0200: >>> On Thursday 25 October 2018 03:51:33 Ingo Schwarze wrote: >>>> Pali Rohar wrote on Wed, Oct 24, 2018 at 10:03:22AM +0200: FIRST ASPECT: Does mandoc support all font styles that perlpod(1) can request? >>> E.g. documentation for cpan modules on metacpan.org is very very >>> similar to documentation in system manpages, use more font >>> styles (not only monospaced) and looks much better. [...] >> Strictly speaking, "monospaced" is a super-family (for example, the >> Helvetica family is a proportional family and Courier is a >> monospaced family). >> >> But since mandoc does not bother with families at all, >> it somewhat incorrectly implements "monospaced" as a font >> style alongside roman, bold, italic, and bold-italic. >> >> That said, which other font styles does metacpan.org use besides >> roman, bold, italic, and the pseudo-style "monospaced", and what >> for? Having a brief look, i failed to find any. > I<...> - italic text > B<...> - bold text > C<...> - code text in a typewriter font (indication that this > represents program text or some other form of computerese) > F<...> - filenames, displayed in italics I checked all these, pod2man(1) translates them as follows: * I<...> to \fI...\fR * B<...> to \fB...\fR * C<...> to \f(CW\*(C`...\*(C'\fR == \f(CW"..."\fR * F<...> to \fI...\fR Mandoc handles all of \fI \fR \fB \f(CW, so there should be nothing to fix so far, right? It appears F<...> behaves exactly like I<...>, so i'll disregard it below. > And you can do any combination of them (e.g. typewriter font which is > both bold and italic together). So, let's check the combinations: * I<B<...>> to \fI\f(BI...\fI\fR * I<C<...>> to \fI\f(CI"..."\fI\fR * B<I<...>> to \fB\f(BI...\fB\fR * B<C<...>> to \fB\f(CB"..."\fB\fR * C<I<...>> to \f(CW"\f(CI...\f(CW"\fR * C<B<...>> to \f(CW"\f(CB...\f(CW"\fR * C<I<...>> to \f(CW"\f(CI...\f(CW"\fR * I<B<C<...>>> to \fI\f(BI\f(CB"..."\f(BI\fI\fR * I<B<C<...>>> to \fI\f(CI"\f(CB...\f(CI"\fI\fR * B<I<C<...>>> to \fB\f(BI\f(CB"..."\f(BI\fB\fR * B<C<I<...>>> to \fB\f(CB"\f(CB...\f(CB"\fB\fR * C<I<B<...>>> to \f(CW"\f(CI\f(CB...\f(CI\f(CW"\fR * C<B<I<...>>> to \f(CW"\f(CB\f(CB...\f(CB\f(CW"\fR Mandoc also handles \f(BI \f(CI \f(CB, so all of that that should work, too. Of course, in terminal output, \f(CW = \fR \f(CI = \fI \f(CB = \fB which can't be helped, but apart from that, i don't see anything that is still unimplemented, or do i overlook something? SECOND ASPECT: Does mandoc handle the man(7) code generated from =over/=item as well as possible? >>> 3) On that https://man.openbsd.org/strict page is section name "strict >>> refs" fully invisible. It is joined together with previous paragraph and >>> also with description of that section. Reader does not see that there is >>> paragraph about "strict refs" section. It should be visually separated. >>> To compare, look at metacpan page and search for "strict refs". >> That is not a section name, not even a subsection name, but merely a >> list tag formatted as follows: >> >> =over 6 >> >> =item C<strict refs> >> >> So the vertical spacing that metacpan does *after* the list tag looks >> dubious for me - doesn't that make many other lists look bad? > =item directive is used lot of times for describing functions or methods > of some class. > > In perlpod documentation is written: > > And perhaps most importantly, keep the items consistent: either use > "=item *" for all of them, to produce bullets; or use "=item 1.", > "=item 2.", etc., to produce numbered lists; or use "=item foo", > "=item bar", etc.--namely, things that look nothing like bullets or > numbers. If you start with bullets or numbers, stick with them, as > formatters use the first "=item" type to decide how to format the list. > > So it is questionable... Maybe bullets and numbers specified via =item > should be formatted differently as "=item text"? Maybe, not sure. But am i right that if so, that is a task for pod2man(1), not for mandoc(1)? Right now, it seems to me that pod2man(1) formats bulleted and numbered lists as .IP "\(bu" 6 First item. .IP "\(bu" 6 Second item. which is definitely fine, and lists with "=item foo" in just the same way as .IP "foo" 6 Description of foo. .IP "bar" 6 Description of bar. which is probably also fine for many cases, but maybe not ideal for the specific case you are quoting. That man(7) code does not permit inserting a blank output line between the .IP "foo" and the "Description of foo." If "foo" is short enough, i.e. less than 6n, it does not even ask for a line break between the two. If pod2man(1) wanted blank lines between each =item header and the subsequent body, it would have to emit something like the following - right? That's certainly not the only possibility way to request such blank lines, but one option: foo .PP .RS 6n Description of foo. .RE .PP bar .PP .RS 6n Description of bar. .RE Yours, Ingo -- To unsubscribe send an email to discuss+unsubscribe@mandoc.bsd.lv ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: mandoc & perl documentation 2018-11-24 19:31 ` Ingo Schwarze @ 2018-11-25 13:34 ` Pali Rohár 2018-11-25 18:20 ` Ingo Schwarze ` (2 more replies) 0 siblings, 3 replies; 19+ messages in thread From: Pali Rohár @ 2018-11-25 13:34 UTC (permalink / raw) To: Ingo Schwarze; +Cc: discuss [-- Attachment #1: Type: text/plain, Size: 7700 bytes --] On Saturday 24 November 2018 20:31:52 Ingo Schwarze wrote: > Hi Pali, > > getting back to this matter, i had another, closer look and it seems > to me that two aspects were still open: > > Pali Rohar wrote on Fri, Oct 26, 2018 at 10:15:19AM +0200: > > On Thursday 25 October 2018 23:30:27 Ingo Schwarze wrote: > >> Pali Rohar wrote on Thu, Oct 25, 2018 at 10:10:35AM +0200: > >>> On Thursday 25 October 2018 03:51:33 Ingo Schwarze wrote: > >>>> Pali Rohar wrote on Wed, Oct 24, 2018 at 10:03:22AM +0200: > > > FIRST ASPECT: > Does mandoc support all font styles that perlpod(1) can request? > > >>> E.g. documentation for cpan modules on metacpan.org is very very > >>> similar to documentation in system manpages, use more font > >>> styles (not only monospaced) and looks much better. > > [...] > >> Strictly speaking, "monospaced" is a super-family (for example, the > >> Helvetica family is a proportional family and Courier is a > >> monospaced family). > >> > >> But since mandoc does not bother with families at all, > >> it somewhat incorrectly implements "monospaced" as a font > >> style alongside roman, bold, italic, and bold-italic. > >> > >> That said, which other font styles does metacpan.org use besides > >> roman, bold, italic, and the pseudo-style "monospaced", and what > >> for? Having a brief look, i failed to find any. > > > I<...> - italic text > > B<...> - bold text > > C<...> - code text in a typewriter font (indication that this > > represents program text or some other form of computerese) > > F<...> - filenames, displayed in italics > > I checked all these, pod2man(1) translates them as follows: > > * I<...> to \fI...\fR > * B<...> to \fB...\fR > * C<...> to \f(CW\*(C`...\*(C'\fR == \f(CW"..."\fR > * F<...> to \fI...\fR > > Mandoc handles all of \fI \fR \fB \f(CW, so there should be nothing > to fix so far, right? Yes, seems this is working fine. > It appears F<...> behaves exactly like I<...>, so i'll disregard it > below. > > > And you can do any combination of them (e.g. typewriter font which is > > both bold and italic together). > > So, let's check the combinations: > > * I<B<...>> to \fI\f(BI...\fI\fR > * I<C<...>> to \fI\f(CI"..."\fI\fR > * B<I<...>> to \fB\f(BI...\fB\fR > * B<C<...>> to \fB\f(CB"..."\fB\fR > * C<I<...>> to \f(CW"\f(CI...\f(CW"\fR > * C<B<...>> to \f(CW"\f(CB...\f(CW"\fR > * C<I<...>> to \f(CW"\f(CI...\f(CW"\fR > * I<B<C<...>>> to \fI\f(BI\f(CB"..."\f(BI\fI\fR > * I<B<C<...>>> to \fI\f(CI"\f(CB...\f(CI"\fI\fR > * B<I<C<...>>> to \fB\f(BI\f(CB"..."\f(BI\fB\fR > * B<C<I<...>>> to \fB\f(CB"\f(CB...\f(CB"\fB\fR > * C<I<B<...>>> to \f(CW"\f(CI\f(CB...\f(CI\f(CW"\fR > * C<B<I<...>>> to \f(CW"\f(CB\f(CB...\f(CB\f(CW"\fR Question is if last 6 lines are correctly translated. Should not it be typewriter font which has both italic and bold style? Because currently it is just bold typewriter and not italic. Has troff, groff or mandoc some sequence of italic bold typewriter font? It is probably something very unusual as a big Computer Modern font family does not have such style too. > Mandoc also handles \f(BI \f(CI \f(CB, > so all of that that should work, too. > > Of course, in terminal output, > > \f(CW = \fR > \f(CI = \fI > \f(CB = \fB > > which can't be helped, but apart from that, i don't see anything > that is still unimplemented, or do i overlook something? > > > SECOND ASPECT: > Does mandoc handle the man(7) code generated from =over/=item > as well as possible? > > >>> 3) On that https://man.openbsd.org/strict page is section name "strict > >>> refs" fully invisible. It is joined together with previous paragraph and > >>> also with description of that section. Reader does not see that there is > >>> paragraph about "strict refs" section. It should be visually separated. > >>> To compare, look at metacpan page and search for "strict refs". > > >> That is not a section name, not even a subsection name, but merely a > >> list tag formatted as follows: > >> > >> =over 6 > >> > >> =item C<strict refs> > >> > >> So the vertical spacing that metacpan does *after* the list tag looks > >> dubious for me - doesn't that make many other lists look bad? > > > =item directive is used lot of times for describing functions or methods > > of some class. > > > > In perlpod documentation is written: > > > > And perhaps most importantly, keep the items consistent: either use > > "=item *" for all of them, to produce bullets; or use "=item 1.", > > "=item 2.", etc., to produce numbered lists; or use "=item foo", > > "=item bar", etc.--namely, things that look nothing like bullets or > > numbers. If you start with bullets or numbers, stick with them, as > > formatters use the first "=item" type to decide how to format the list. > > > > So it is questionable... Maybe bullets and numbers specified via =item > > should be formatted differently as "=item text"? > > Maybe, not sure. But am i right that if so, that is a task for pod2man(1), Yes. > not for mandoc(1)? Right now, it seems to me that pod2man(1) formats > bulleted and numbered lists as > > .IP "\(bu" 6 > First item. > .IP "\(bu" 6 > Second item. > > which is definitely fine, I'm not sure if it is fine. Here is simple test.pod file: $ cat test.pod =pod =over =item * Description of item1 =item * Description of item2 =back =cut Converting it directly to HTML via pod2html results in: $ pod2html test.pod ... <ul> <li><p>Description of item1</p> </li> <li><p>Description of item2</p> </li> </ul> ... But converting it into man and then via mandoc converting it into HTML results in: $ pod2man test.pod | ./mandoc -Thtml ... <div class="manual-text"> <div> </div> <dl class="Bl-tag"> <dt>•</dt> <dd>Description of item1</dd> </dl> <dl class="Bl-tag"> <dt>•</dt> <dd>Description of item2</dd> </dl> </div> ... Bullet (ߦ) generated by mandoc is on previous line as description text. So something is not there fine. I see it in chrome and also in elinks: $ pod2man test.pod | ./mandoc -Thtml | elinks -dump ... • Description of item1 • Description of item2 ... And when I print mandoc output on terminal, then description and bullet are on the same line: $ pod2man test.pod | ./mandoc ... • Description of item1 • Description of item2 ... So this looks like a problem in mandoc's HTML output. > and lists with "=item foo" in just the same way as > > .IP "foo" 6 > Description of foo. > .IP "bar" 6 > Description of bar. > > which is probably also fine for many cases, but maybe not ideal for > the specific case you are quoting. > > That man(7) code does not permit inserting a blank output line > between the .IP "foo" and the "Description of foo." > If "foo" is short enough, i.e. less than 6n, it does not even ask > for a line break between the two. > > If pod2man(1) wanted blank lines between each =item header and > the subsequent body, it would have to emit something like the > following - right? That's certainly not the only possibility > way to request such blank lines, but one option: > > foo > .PP > .RS 6n > Description of foo. > .RE > .PP > bar > .PP > .RS 6n > Description of bar. > .RE > > Yours, > Ingo -- Pali Rohár pali.rohar@gmail.com [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 195 bytes --] ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: mandoc & perl documentation 2018-11-25 13:34 ` Pali Rohár @ 2018-11-25 18:20 ` Ingo Schwarze 2018-11-26 8:48 ` Pali Rohár 2019-02-28 16:45 ` Ingo Schwarze 2019-03-02 17:09 ` Ingo Schwarze 2 siblings, 1 reply; 19+ messages in thread From: Ingo Schwarze @ 2018-11-25 18:20 UTC (permalink / raw) To: Pali Rohar; +Cc: discuss Hi Pali, Pali Rohar wrote on Sun, Nov 25, 2018 at 02:34:26PM +0100: > On Saturday 24 November 2018 20:31:52 Ingo Schwarze wrote: >> Pali Rohar wrote on Fri, Oct 26, 2018 at 10:15:19AM +0200: >>> And you can do any combination of them (e.g. typewriter font >>> which is both bold and italic together). >> So, let's check the combinations: >> >> * I<B<...>> to \fI\f(BI...\fI\fR >> * I<C<...>> to \fI\f(CI"..."\fI\fR >> * B<I<...>> to \fB\f(BI...\fB\fR >> * B<C<...>> to \fB\f(CB"..."\fB\fR >> * C<I<...>> to \f(CW"\f(CI...\f(CW"\fR >> * C<B<...>> to \f(CW"\f(CB...\f(CW"\fR >> * C<I<...>> to \f(CW"\f(CI...\f(CW"\fR >> * I<B<C<...>>> to \fI\f(BI\f(CB"..."\f(BI\fI\fR >> * I<B<C<...>>> to \fI\f(CI"\f(CB...\f(CI"\fI\fR >> * B<I<C<...>>> to \fB\f(BI\f(CB"..."\f(BI\fB\fR >> * B<C<I<...>>> to \fB\f(CB"\f(CB...\f(CB"\fB\fR >> * C<I<B<...>>> to \f(CW"\f(CI\f(CB...\f(CI\f(CW"\fR >> * C<B<I<...>>> to \f(CW"\f(CB\f(CB...\f(CB\f(CW"\fR > Question is if last 6 lines are correctly translated. That is a question about pod2man(1), not a question about mandoc(1). Regarding mandoc(1), the question only is whether it correctly handles whatever pod2man(1) produces. > Should not it be typewriter font which has both italic and bold > style? Because currently it is just bold typewriter and not italic. In principle, yes, and i don't doubt that in the typesetting business, you can find fixed-width font families looking typewriter-like and providing a font with style bold+italic. > Has troff, groff That hardly matters. If groff (or any other full roff implementation) does not provide a font with certain properties users desire, they can usually install additional fonts themselves. > or mandoc some sequence of italic bold typewriter font? For terminal, PostScript, and PDF output, mandoc does not provide any typewriter font whatsoever. For terminal output, no other formatter can portably do so, either. Regarding HTML output, there is actually a (rather tricky) way to request a typewriter-bold-italic font, and it does work in mandoc: $ cat tmp.man .TH TEST 1 .SH NAME test \(en test .SH DESCRIPTION initial text .EX .B .I typewriter-bold-italic .EE final text $ mandoc -T html -O style=mandoc.css tmp.man [...] initial text <pre> <b><i>typewriter-bold-italic</i></b> </pre> final text Now, <pre> requests monospace by default, so browsers typically render this text in a monospace bold-italic font. Note that even though the above example file is correct and unambiguous, groff -T html totally mishandles it: it renders initial text <i><br> typewriter-bold-italic</i> <br> final text So both the typewriter and the bold a totally lost - the reason being that groff -T html cannot do structural analysis, and on the presentational level, .EX simply does ".ft CW", which the \fB from .B overrides, and which the \fI from .I overrides yet again. It is not obvious to me how the above could be made useful for Perl documentation. The pod2man(1) program certainly cannot translate C<...> to .EX - not only because that is a man-ext GNU extension, but even more so because it is a block macro rather than an inline macro which would totally break both horizontal and vertical spacing. And i don't see any other macro in the man(7) language to request a typewriter font. Even resorting to the low-level roff(7) .ft request wouldn't help because it would get overridden by the subsequent .B macro rather than stacking up with it. So making all this useful for Perl would probably require using \f[CBI], but i have doubts about the portability. Mandoc could easily be taught to cope (it doesn't right now, but would simply ignore \f[CBI]), but what about other formatters? >> Right now, it seems to me that pod2man(1) formats >> bulleted and numbered lists as >> >> .IP "\(bu" 6 >> First item. >> .IP "\(bu" 6 >> Second item. >> >> which is definitely fine, > I'm not sure if it is fine. Well, the rendering by pod2man(1) shown above certainly *is* fine, i don't see in which other way it could reasonably format such a list. What you are calling into question below is whether mandoc(1) -T html handles the above man(7) code well. > Here is simple test.pod file: > > $ cat test.pod > =pod > > =over > > =item * > > Description of item1 > > =item * > > Description of item2 > > =back > > =cut > > Converting it directly to HTML via pod2html results in: > > $ pod2html test.pod > ... > <ul> > <li><p>Description of item1</p> > </li> > <li><p>Description of item2</p> > </li> > </ul> > ... > > But converting it into man and then via mandoc converting it into HTML > results in: > > $ pod2man test.pod | ./mandoc -Thtml > ... > <div class="manual-text"> > <div> </div> > <dl class="Bl-tag"> > <dt>•</dt> > <dd>Description of item1</dd> > </dl> > <dl class="Bl-tag"> > <dt>•</dt> > <dd>Description of item2</dd> > </dl> > </div> > ... You have a point here. The mandoc -man -T html formatter could be improved in two respects: * If the argument to .IP is a single bullet-like character, it could be rendered as <ul> rather than <dl>. Heh, checking the TODO file, i just noticed this was already reported in https://github.com/Debian/debiman/issues/67 . * Subsequent .IP macros could be rendered into a common list rather than opening a new list for each item. I just add a new TODO entry for this idea, see the commit below. > Bullet (ߦ) generated by mandoc is on previous line as description > text. So something is not there fine. I see it in chrome and also in > elinks: > > $ pod2man test.pod | ./mandoc -Thtml | elinks -dump > ... > • > Description of item1 > > • > Description of item2 > ... > > And when I print mandoc output on terminal, then description and bullet > are on the same line: > > $ pod2man test.pod | ./mandoc > ... > • Description of item1 > > • Description of item2 > ... > > So this looks like a problem in mandoc's HTML output. No, *that* is not the problem. The unusual line breaking is merely caused by your omission of "-O style=/path/to/mandoc.css". Without using a style sheet, expecting beauty in HTML rendering is not reasonable. Unfortunately, i cannot make "-O style" the default because no sane default can be designed for "/path/to/". Yours, Ingo Log Message: ----------- HTML formatting of .IP Modified Files: -------------- mandoc: TODO Revision Data ------------- Index: TODO =================================================================== RCS file: /home/cvs/mandoc/mandoc/TODO,v retrieving revision 1.275 retrieving revision 1.276 diff -LTODO -LTODO -u -p -r1.275 -r1.276 --- TODO +++ TODO @@ -399,8 +399,14 @@ are mere guesses, and some may be wrong. in the CSS for .Bl-tag first. Reminded by Pali Rohar 25 Oct 2018 10:10:35 +0200. +- format multiple subsequent .IP as a single list + rather than opening a new list for each item + Pali Rohar 25 Nov 2018 14:34:26 +0100 + loc * exist ** algo * size * imp *** + - format ".IP *" etc. as <ul> rather than <dl> https://github.com/Debian/debiman/issues/67 + reminded by Pali Rohar 25 Nov 2018 14:34:26 +0100 loc ** exist ** algo ** size * imp *** - .Bf at the beginning of a paragraph inserts a bogus 1ex horizontal -- To unsubscribe send an email to discuss+unsubscribe@mandoc.bsd.lv ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: mandoc & perl documentation 2018-11-25 18:20 ` Ingo Schwarze @ 2018-11-26 8:48 ` Pali Rohár 0 siblings, 0 replies; 19+ messages in thread From: Pali Rohár @ 2018-11-26 8:48 UTC (permalink / raw) To: Ingo Schwarze; +Cc: discuss On Sunday 25 November 2018 19:20:08 Ingo Schwarze wrote: > Hi Pali, > > Pali Rohar wrote on Sun, Nov 25, 2018 at 02:34:26PM +0100: > > On Saturday 24 November 2018 20:31:52 Ingo Schwarze wrote: > >> Pali Rohar wrote on Fri, Oct 26, 2018 at 10:15:19AM +0200: > > >>> And you can do any combination of them (e.g. typewriter font > >>> which is both bold and italic together). > > >> So, let's check the combinations: > >> > >> * I<B<...>> to \fI\f(BI...\fI\fR > >> * I<C<...>> to \fI\f(CI"..."\fI\fR > >> * B<I<...>> to \fB\f(BI...\fB\fR > >> * B<C<...>> to \fB\f(CB"..."\fB\fR > >> * C<I<...>> to \f(CW"\f(CI...\f(CW"\fR > >> * C<B<...>> to \f(CW"\f(CB...\f(CW"\fR > >> * C<I<...>> to \f(CW"\f(CI...\f(CW"\fR > >> * I<B<C<...>>> to \fI\f(BI\f(CB"..."\f(BI\fI\fR > >> * I<B<C<...>>> to \fI\f(CI"\f(CB...\f(CI"\fI\fR > >> * B<I<C<...>>> to \fB\f(BI\f(CB"..."\f(BI\fB\fR > >> * B<C<I<...>>> to \fB\f(CB"\f(CB...\f(CB"\fB\fR > >> * C<I<B<...>>> to \f(CW"\f(CI\f(CB...\f(CI\f(CW"\fR > >> * C<B<I<...>>> to \f(CW"\f(CB\f(CB...\f(CB\f(CW"\fR > > > Question is if last 6 lines are correctly translated. > > That is a question about pod2man(1), not a question about mandoc(1). > Regarding mandoc(1), the question only is whether it correctly > handles whatever pod2man(1) produces. > > > Should not it be typewriter font which has both italic and bold > > style? Because currently it is just bold typewriter and not italic. > > In principle, yes, and i don't doubt that in the typesetting business, > you can find fixed-width font families looking typewriter-like and > providing a font with style bold+italic. > > > Has troff, groff > > That hardly matters. If groff (or any other full roff implementation) > does not provide a font with certain properties users desire, they > can usually install additional fonts themselves. > > > or mandoc some sequence of italic bold typewriter font? > > For terminal, PostScript, and PDF output, mandoc does not provide > any typewriter font whatsoever. For terminal output, no other > formatter can portably do so, either. > > Regarding HTML output, there is actually a (rather tricky) way to > request a typewriter-bold-italic font, and it does work in mandoc: > > $ cat tmp.man > .TH TEST 1 > .SH NAME > test \(en test > .SH DESCRIPTION > initial text > .EX > .B > .I typewriter-bold-italic > .EE > final text > > $ mandoc -T html -O style=mandoc.css tmp.man > [...] > initial text > <pre> > <b><i>typewriter-bold-italic</i></b> > </pre> > final text > > Now, <pre> requests monospace by default, so browsers typically > render this text in a monospace bold-italic font. > > Note that even though the above example file is correct and unambiguous, > groff -T html totally mishandles it: it renders > > initial text > <i><br> > typewriter-bold-italic</i> <br> > final text > > So both the typewriter and the bold a totally lost - the reason > being that groff -T html cannot do structural analysis, and on the > presentational level, .EX simply does ".ft CW", which the \fB from .B > overrides, and which the \fI from .I overrides yet again. > > > It is not obvious to me how the above could be made useful for Perl > documentation. The pod2man(1) program certainly cannot translate C<...> > to .EX - not only because that is a man-ext GNU extension, but even > more so because it is a block macro rather than an inline macro > which would totally break both horizontal and vertical spacing. > And i don't see any other macro in the man(7) language to request > a typewriter font. Even resorting to the low-level roff(7) .ft request > wouldn't help because it would get overridden by the subsequent .B > macro rather than stacking up with it. > > So making all this useful for Perl would probably require using > \f[CBI], but i have doubts about the portability. Mandoc could > easily be taught to cope (it doesn't right now, but would simply > ignore \f[CBI]), but what about other formatters? It looks like there is no standard way to support it. So I guess current behavior of pod2man is the best what can be done. > > >> Right now, it seems to me that pod2man(1) formats > >> bulleted and numbered lists as > >> > >> .IP "\(bu" 6 > >> First item. > >> .IP "\(bu" 6 > >> Second item. > >> > >> which is definitely fine, > > > I'm not sure if it is fine. > > Well, the rendering by pod2man(1) shown above certainly *is* fine, > i don't see in which other way it could reasonably format such a list. You are right, it is really OK. > What you are calling into question below is whether mandoc(1) -T html > handles the above man(7) code well. > > > Here is simple test.pod file: > > > > $ cat test.pod > > =pod > > > > =over > > > > =item * > > > > Description of item1 > > > > =item * > > > > Description of item2 > > > > =back > > > > =cut > > > > Converting it directly to HTML via pod2html results in: > > > > $ pod2html test.pod > > ... > > <ul> > > <li><p>Description of item1</p> > > </li> > > <li><p>Description of item2</p> > > </li> > > </ul> > > ... > > > > But converting it into man and then via mandoc converting it into HTML > > results in: > > > > $ pod2man test.pod | ./mandoc -Thtml > > ... > > <div class="manual-text"> > > <div> </div> > > <dl class="Bl-tag"> > > <dt>•</dt> > > <dd>Description of item1</dd> > > </dl> > > <dl class="Bl-tag"> > > <dt>•</dt> > > <dd>Description of item2</dd> > > </dl> > > </div> > > ... > > You have a point here. The mandoc -man -T html formatter could be > improved in two respects: > > * If the argument to .IP is a single bullet-like character, > it could be rendered as <ul> rather than <dl>. > > Heh, checking the TODO file, i just noticed this was already > reported in https://github.com/Debian/debiman/issues/67 . > > * Subsequent .IP macros could be rendered into a common list > rather than opening a new list for each item. > > I just add a new TODO entry for this idea, see the commit below. Ok, so resolving these two points on TODO list should fix above reported problem. > > > Bullet (ߦ) generated by mandoc is on previous line as description > > text. So something is not there fine. I see it in chrome and also in > > elinks: > > > > $ pod2man test.pod | ./mandoc -Thtml | elinks -dump > > ... > > • > > Description of item1 > > > > • > > Description of item2 > > ... > > > > And when I print mandoc output on terminal, then description and bullet > > are on the same line: > > > > $ pod2man test.pod | ./mandoc > > ... > > • Description of item1 > > > > • Description of item2 > > ... > > > > So this looks like a problem in mandoc's HTML output. > > No, *that* is not the problem. The unusual line breaking is merely > caused by your omission of "-O style=/path/to/mandoc.css". > Without using a style sheet, expecting beauty in HTML rendering is > not reasonable. > > Unfortunately, i cannot make "-O style" the default because no > sane default can be designed for "/path/to/". > > Yours, > Ingo > > > Log Message: > ----------- > HTML formatting of .IP > > Modified Files: > -------------- > mandoc: > TODO > > Revision Data > ------------- > Index: TODO > =================================================================== > RCS file: /home/cvs/mandoc/mandoc/TODO,v > retrieving revision 1.275 > retrieving revision 1.276 > diff -LTODO -LTODO -u -p -r1.275 -r1.276 > --- TODO > +++ TODO > @@ -399,8 +399,14 @@ are mere guesses, and some may be wrong. > in the CSS for .Bl-tag first. > Reminded by Pali Rohar 25 Oct 2018 10:10:35 +0200. > > +- format multiple subsequent .IP as a single list > + rather than opening a new list for each item > + Pali Rohar 25 Nov 2018 14:34:26 +0100 > + loc * exist ** algo * size * imp *** > + > - format ".IP *" etc. as <ul> rather than <dl> > https://github.com/Debian/debiman/issues/67 > + reminded by Pali Rohar 25 Nov 2018 14:34:26 +0100 > loc ** exist ** algo ** size * imp *** > > - .Bf at the beginning of a paragraph inserts a bogus 1ex horizontal -- Pali Rohár pali.rohar@gmail.com -- To unsubscribe send an email to discuss+unsubscribe@mandoc.bsd.lv ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: mandoc & perl documentation 2018-11-25 13:34 ` Pali Rohár 2018-11-25 18:20 ` Ingo Schwarze @ 2019-02-28 16:45 ` Ingo Schwarze 2019-03-02 17:09 ` Ingo Schwarze 2 siblings, 0 replies; 19+ messages in thread From: Ingo Schwarze @ 2019-02-28 16:45 UTC (permalink / raw) To: Pali Rohar; +Cc: discuss Hi, i just implement yet another suggestion that came up in this conversation, see the commit below. The only TODO item i'm aware of that is still open following the reports from Pali Rohar is this one: - format ".IP *" etc. as <ul> rather than <dl> https://github.com/Debian/debiman/issues/67 reminded by Pali Rohar 25 Nov 2018 14:34:26 +0100 loc ** exist ** algo ** size * imp *** It will eventually get done, too. Yours, Ingo Log Message: ----------- Format multiple subsequent .IP or multiple subsequent .TP/.TQ as a single <dl> list rather than opening a new list for each item; feature suggested by Pali dot Rohar at gmail dot com. Modified Files: -------------- mandoc: TODO man_html.c Revision Data ------------- Index: man_html.c =================================================================== RCS file: /home/cvs/mandoc/mandoc/man_html.c,v retrieving revision 1.170 retrieving revision 1.171 diff -Lman_html.c -Lman_html.c -u -p -r1.170 -r1.171 --- man_html.c +++ man_html.c @@ -233,7 +233,25 @@ print_man_node(MAN_ARGS) /* This will automatically close out any font scope. */ t->refcnt--; - print_stagq(h, t); + if (n->type == ROFFT_BLOCK && + (n->tok == MAN_IP || n->tok == MAN_TP || n->tok == MAN_TQ)) { + t = h->tag; + while (t->tag != TAG_DL) + t = t->next; + /* + * Close the list if no further item of the same type + * follows; otherwise, close the item only. + */ + if (n->next == NULL || + (n->tok == MAN_IP && n->next->tok != MAN_IP) || + (n->tok != MAN_IP && + n->next->tok != MAN_TP && n->next->tok != MAN_TQ)) { + print_tagq(h, t); + t = NULL; + } + } + if (t != NULL) + print_stagq(h, t); if (n->flags & NODE_NOFILL && n->tok != MAN_YS && (n->next != NULL && n->next->flags & NODE_LINE)) { @@ -399,7 +417,15 @@ man_IP_pre(MAN_ARGS) switch (n->type) { case ROFFT_BLOCK: html_close_paragraph(h); - print_otag(h, TAG_DL, "c", "Bl-tag"); + /* + * Open a new list unless there is an immediately + * preceding item of the same type. + */ + if (n->prev == NULL || + (n->tok == MAN_IP && n->prev->tok != MAN_IP) || + (n->tok != MAN_IP && + n->prev->tok != MAN_TP && n->prev->tok != MAN_TQ)) + print_otag(h, TAG_DL, "c", "Bl-tag"); return 1; case ROFFT_HEAD: print_otag(h, TAG_DT, ""); Index: TODO =================================================================== RCS file: /home/cvs/mandoc/mandoc/TODO,v retrieving revision 1.283 retrieving revision 1.284 diff -LTODO -LTODO -u -p -r1.283 -r1.284 --- TODO +++ TODO @@ -349,11 +349,6 @@ are mere guesses, and some may be wrong. it does seem cleaner.) loc ** exist ** algo * size * imp *** -- format multiple subsequent .IP as a single list - rather than opening a new list for each item - Pali Rohar 25 Nov 2018 14:34:26 +0100 - loc * exist ** algo * size * imp *** - - format ".IP *" etc. as <ul> rather than <dl> https://github.com/Debian/debiman/issues/67 reminded by Pali Rohar 25 Nov 2018 14:34:26 +0100 -- To unsubscribe send an email to discuss+unsubscribe@mandoc.bsd.lv ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: mandoc & perl documentation 2018-11-25 13:34 ` Pali Rohár 2018-11-25 18:20 ` Ingo Schwarze 2019-02-28 16:45 ` Ingo Schwarze @ 2019-03-02 17:09 ` Ingo Schwarze 2 siblings, 0 replies; 19+ messages in thread From: Ingo Schwarze @ 2019-03-02 17:09 UTC (permalink / raw) To: Pali Rohár; +Cc: discuss Hi Pali, i just implemented the last feature request mentioned in the mail cited below, see the commit at the end, and i believe that everything touched in that conversation has now been taken care of. If there is something i missed, pleasde speak up! Yours, Ingo Pali Rohar wrote on Sun, Nov 25, 2018 at 02:34:26PM +0100: > Here is simple test.pod file: > > $ cat test.pod > =pod > > =over > > =item * > > Description of item1 > > =item * > > Description of item2 > > =back > > =cut > > Converting it directly to HTML via pod2html results in: > > $ pod2html test.pod > ... > <ul> > <li><p>Description of item1</p> > </li> > <li><p>Description of item2</p> > </li> > </ul> > ... Mandoc from CVS HEAD nor renders: <div class="manual-text"> <ul class="Bl-bullet"> <li>Description of item1</li> <li>Description of item2</li> </ul> </div> Log Message: ----------- Represent multiple subsequent .IP blocks having a consistent head argument of *, \-, or \(bu as <ul> rather than as <dl>, using a bit of heuristics. Basic idea suggested by Dagfinn Ilmari Mannsaker <ilmari at github> in https://github.com/Debian/debiman/issues/67 and independently by <Pali dot Rohar at gmail dot com> on <discuss at mandoc dot bsd dot lv>. Modified Files: -------------- mandoc: TODO man_html.c Revision Data ------------- Index: TODO =================================================================== RCS file: /home/cvs/mandoc/mandoc/TODO,v retrieving revision 1.285 retrieving revision 1.286 diff -LTODO -LTODO -u -p -r1.285 -r1.286 --- TODO +++ TODO @@ -342,11 +342,6 @@ are mere guesses, and some may be wrong. --- HTML issues -------------------------------------------------------- -- format ".IP *" etc. as <ul> rather than <dl> - https://github.com/Debian/debiman/issues/67 - reminded by Pali Rohar 25 Nov 2018 14:34:26 +0100 - loc ** exist ** algo ** size * imp *** - - .Bf at the beginning of a paragraph inserts a bogus 1ex horizontal space, see for example random(3). Introduced in http://mdocml.bsd.lv/cgi-bin/cvsweb/mdoc_html.c.diff?r1=1.91&r2=1.92 Index: man_html.c =================================================================== RCS file: /home/cvs/mandoc/mandoc/man_html.c,v retrieving revision 1.172 retrieving revision 1.173 diff -Lman_html.c -Lman_html.c -u -p -r1.172 -r1.173 --- man_html.c +++ man_html.c @@ -46,6 +46,8 @@ static void print_man_head(const stru struct html *); static void print_man_nodelist(MAN_ARGS); static void print_man_node(MAN_ARGS); +static char list_continues(const struct roff_node *, + const struct roff_node *); static int man_B_pre(MAN_ARGS); static int man_IP_pre(MAN_ARGS); static int man_I_pre(MAN_ARGS); @@ -236,16 +238,13 @@ print_man_node(MAN_ARGS) if (n->type == ROFFT_BLOCK && (n->tok == MAN_IP || n->tok == MAN_TP || n->tok == MAN_TQ)) { t = h->tag; - while (t->tag != TAG_DL) + while (t->tag != TAG_DL && t->tag != TAG_UL) t = t->next; /* * Close the list if no further item of the same type * follows; otherwise, close the item only. */ - if (n->next == NULL || - (n->tok == MAN_IP && n->next->tok != MAN_IP) || - (n->tok != MAN_IP && - n->next->tok != MAN_TP && n->next->tok != MAN_TQ)) { + if (list_continues(n, n->next) == '\0') { print_tagq(h, t); t = NULL; } @@ -416,29 +415,82 @@ man_PP_pre(MAN_ARGS) return 1; } +static char +list_continues(const struct roff_node *n1, const struct roff_node *n2) +{ + const char *s1, *s2; + char c1, c2; + + if (n1 == NULL || n1->type != ROFFT_BLOCK || + n2 == NULL || n2->type != ROFFT_BLOCK) + return '\0'; + if ((n1->tok == MAN_TP || n1->tok == MAN_TQ) && + (n2->tok == MAN_TP || n2->tok == MAN_TQ)) + return ' '; + if (n1->tok != MAN_IP || n2->tok != MAN_IP) + return '\0'; + n1 = n1->head->child; + n2 = n2->head->child; + s1 = n1 == NULL ? "" : n1->string; + s2 = n2 == NULL ? "" : n2->string; + c1 = strcmp(s1, "*") == 0 ? '*' : + strcmp(s1, "\\-") == 0 ? '-' : + strcmp(s1, "\\(bu") == 0 ? 'b' : ' '; + c2 = strcmp(s2, "*") == 0 ? '*' : + strcmp(s2, "\\-") == 0 ? '-' : + strcmp(s2, "\\(bu") == 0 ? 'b' : ' '; + return c1 != c2 ? '\0' : c1 == 'b' ? '*' : c1; +} + static int man_IP_pre(MAN_ARGS) { const struct roff_node *nn; + const char *list_class; + enum htmltag list_elem, body_elem; + char list_type; + + nn = n->type == ROFFT_BLOCK ? n : n->parent; + if ((list_type = list_continues(nn->prev, nn)) == '\0') { + /* Start a new list. */ + if ((list_type = list_continues(nn, nn->next)) == '\0') + list_type = ' '; + switch (list_type) { + case ' ': + list_class = "Bl-tag"; + list_elem = TAG_DL; + break; + case '*': + list_class = "Bl-bullet"; + list_elem = TAG_UL; + break; + case '-': + list_class = "Bl-dash"; + list_elem = TAG_UL; + break; + default: + abort(); + } + } else { + /* Continue a list that was started earlier. */ + list_class = NULL; + list_elem = TAG_MAX; + } + body_elem = list_type == ' ' ? TAG_DD : TAG_LI; switch (n->type) { case ROFFT_BLOCK: html_close_paragraph(h); - /* - * Open a new list unless there is an immediately - * preceding item of the same type. - */ - if (n->prev == NULL || - (n->tok == MAN_IP && n->prev->tok != MAN_IP) || - (n->tok != MAN_IP && - n->prev->tok != MAN_TP && n->prev->tok != MAN_TQ)) - print_otag(h, TAG_DL, "c", "Bl-tag"); + if (list_elem != TAG_MAX) + print_otag(h, list_elem, "c", list_class); return 1; case ROFFT_HEAD: + if (body_elem == TAG_LI) + return 0; print_otag(h, TAG_DT, ""); break; case ROFFT_BODY: - print_otag(h, TAG_DD, ""); + print_otag(h, body_elem, ""); return 1; default: abort(); -- To unsubscribe send an email to discuss+unsubscribe@mandoc.bsd.lv ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: mandoc & perl documentation 2018-10-25 8:10 ` Pali Rohár 2018-10-25 21:30 ` Ingo Schwarze @ 2019-01-17 8:02 ` Ingo Schwarze 1 sibling, 0 replies; 19+ messages in thread From: Ingo Schwarze @ 2019-01-17 8:02 UTC (permalink / raw) To: Pali Rohar; +Cc: discuss Hi Pali, Pali Rohar wrote on Thu, Oct 25, 2018 at 10:10:35AM +0200: > 3) On that https://man.openbsd.org/strict page is section name "strict > refs" fully invisible. It is joined together with previous paragraph and > also with description of that section. Reader does not see that there is > paragraph about "strict refs" section. It should be visually separated. > To compare, look at metacpan page and search for "strict refs". i believe this is one of the issues that got fixed by recent work on HTML and CSS formatting of paragraphs and tagged list items, in particular regarding vertical spacing, see https://man.openbsd.org/strict It now looks better because that work allowed adding these CSS rules (showing a shortened version): .Bl-tag { margin-top: 0.6em; } .Bl-tag > dd { margin-bottom: 0.6em; } It seems that all issues discussed in this mail were now taken care of. Don't hesitate to speak up in case i missed something. Yours, Ingo -- To unsubscribe send an email to discuss+unsubscribe@mandoc.bsd.lv ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: mandoc & perl documentation 2018-10-25 1:51 ` Ingo Schwarze 2018-10-25 8:10 ` Pali Rohár @ 2018-11-04 20:00 ` Pali Rohár 1 sibling, 0 replies; 19+ messages in thread From: Pali Rohár @ 2018-11-04 20:00 UTC (permalink / raw) To: Ingo Schwarze; +Cc: discuss [-- Attachment #1: Type: text/plain, Size: 888 bytes --] On Thursday 25 October 2018 03:51:33 Ingo Schwarze wrote: > Pali Rohar wrote on Wed, Oct 24, 2018 at 10:03:22AM +0200: > > If you look at the output for Email::Address::XS, then whole > > SYNOPSIS should be written in typewriter/monospaced font. > > On the one hand, no, a SYNOPSIS should absolutely not be written > in typewriter/monospaced font Hi! Now I found perlpodstyle documentation which says about SYNOPSIS: https://perldoc.perl.org/perlpodstyle.html#SYNOPSIS "For Perl module documentation, it's usually convenient to have the contents of this section be a verbatim block showing some (brief) examples of typical ways the module is used." And verbatim block is formatted by typewriter font style. perlpodstyle documentation is "general guideline for how to write POD documentation for Perl scripts and modules". -- Pali Rohár pali.rohar@gmail.com [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 195 bytes --] ^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2019-03-02 17:09 UTC | newest] Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2018-09-13 15:12 mandoc & perl documentation Pali Rohár 2018-09-13 15:32 ` Anthony J. Bentley 2018-09-13 15:36 ` Pali Rohár 2018-10-11 7:52 ` Pali Rohár 2018-10-11 8:54 ` Jan Stary 2018-10-23 17:45 ` Ingo Schwarze 2018-10-24 8:03 ` Pali Rohár 2018-10-25 1:51 ` Ingo Schwarze 2018-10-25 8:10 ` Pali Rohár 2018-10-25 21:30 ` Ingo Schwarze 2018-10-26 8:15 ` Pali Rohár 2018-11-24 19:31 ` Ingo Schwarze 2018-11-25 13:34 ` Pali Rohár 2018-11-25 18:20 ` Ingo Schwarze 2018-11-26 8:48 ` Pali Rohár 2019-02-28 16:45 ` Ingo Schwarze 2019-03-02 17:09 ` Ingo Schwarze 2019-01-17 8:02 ` Ingo Schwarze 2018-11-04 20:00 ` Pali Rohár
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).