From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=T_SCC_BODY_TEXT_LINE, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 10214 invoked from network); 5 Jul 2022 21:26:01 -0000 Received: from bsd.lv (HELO mandoc.bsd.lv) (66.111.2.12) by inbox.vuxu.org with ESMTPUTF8; 5 Jul 2022 21:26:01 -0000 Received: from fantadrom.bsd.lv (localhost [127.0.0.1]) by mandoc.bsd.lv (OpenSMTPD) with ESMTP id 334b55f9 for ; Tue, 5 Jul 2022 16:25:59 -0500 (EST) Received: from localhost (mandoc.bsd.lv [local]) by mandoc.bsd.lv (OpenSMTPD) with ESMTPA id 4bfda8cf for ; Tue, 5 Jul 2022 16:25:59 -0500 (EST) Date: Tue, 5 Jul 2022 16:25:59 -0500 (EST) X-Mailinglist: mandoc-source Reply-To: source@mandoc.bsd.lv MIME-Version: 1.0 From: schwarze@mandoc.bsd.lv To: source@mandoc.bsd.lv Subject: mandoc: Finally get rid of the archaic markup for header and X-Mailer: activitymail 1.26, http://search.cpan.org/dist/activitymail/ Content-Type: text/plain; charset=utf-8 Message-ID: <33665ec6a8706e41@mandoc.bsd.lv> Log Message: ----------- Finally get rid of the archaic
markup for header and footer lines and use flexbox CSS instead. Improve accessibility by adding role and aria-label attributes to these header and footer lines. Using ideas from both Anna Vyalkova and myself. As a welcome side effect, this also resolves the long-standing issue that the rendering was always 65em wide, requiring horizontal scrolling when the window was narrower. Now, rendering nicely adapts to browser windows of arbitrary narrowness. Modified Files: -------------- mandoc: TODO man_html.c mandoc.css mdoc_html.c Revision Data ------------- Index: mdoc_html.c =================================================================== RCS file: /home/cvs/mandoc/mandoc/mdoc_html.c,v retrieving revision 1.346 retrieving revision 1.347 diff -Lmdoc_html.c -Lmdoc_html.c -u -p -r1.346 -r1.347 --- mdoc_html.c +++ mdoc_html.c @@ -453,16 +453,19 @@ print_mdoc_node(MDOC_ARGS) static void mdoc_root_post(const struct roff_meta *meta, struct html *h) { - struct tag *t, *tt; + struct tag *t; - t = print_otag(h, TAG_TABLE, "c", "foot"); - tt = print_otag(h, TAG_TR, ""); + t = print_otag(h, TAG_DIV, "cr?", "foot", "doc-pagefooter", + "aria-label", "manual footer line"); - print_otag(h, TAG_TD, "c", "foot-date"); + print_otag(h, TAG_SPAN, "c", "foot-left"); + print_stagq(h, t); + + print_otag(h, TAG_SPAN, "c", "foot-date"); print_text(h, meta->date); - print_stagq(h, tt); + print_stagq(h, t); - print_otag(h, TAG_TD, "c", "foot-os"); + print_otag(h, TAG_SPAN, "c", "foot-os"); print_text(h, meta->os); print_tagq(h, t); } @@ -470,7 +473,7 @@ mdoc_root_post(const struct roff_meta *m static int mdoc_root_pre(const struct roff_meta *meta, struct html *h) { - struct tag *t, *tt; + struct tag *t; char *volume, *title; if (NULL == meta->arch) @@ -485,18 +488,18 @@ mdoc_root_pre(const struct roff_meta *me mandoc_asprintf(&title, "%s(%s)", meta->title, meta->msec); - t = print_otag(h, TAG_TABLE, "c", "head"); - tt = print_otag(h, TAG_TR, ""); + t = print_otag(h, TAG_DIV, "cr?", "head", "doc-pageheader", + "aria-label", "manual header line"); - print_otag(h, TAG_TD, "c", "head-ltitle"); + print_otag(h, TAG_SPAN, "c", "head-ltitle"); print_text(h, title); - print_stagq(h, tt); + print_stagq(h, t); - print_otag(h, TAG_TD, "c", "head-vol"); + print_otag(h, TAG_SPAN, "c", "head-vol"); print_text(h, volume); - print_stagq(h, tt); + print_stagq(h, t); - print_otag(h, TAG_TD, "c", "head-rtitle"); + print_otag(h, TAG_SPAN, "c", "head-rtitle"); print_text(h, title); print_tagq(h, t); Index: man_html.c =================================================================== RCS file: /home/cvs/mandoc/mandoc/man_html.c,v retrieving revision 1.181 retrieving revision 1.182 diff -Lman_html.c -Lman_html.c -u -p -r1.181 -r1.182 --- man_html.c +++ man_html.c @@ -1,6 +1,6 @@ /* $Id$ */ /* - * Copyright (c) 2013-2015, 2017-2020 Ingo Schwarze + * Copyright (c) 2013-2015,2017-2020,2022 Ingo Schwarze * Copyright (c) 2008-2012, 2014 Kristaps Dzonsons * * Permission to use, copy, modify, and distribute this software for any @@ -263,26 +263,26 @@ print_man_node(MAN_ARGS) static void man_root_pre(const struct roff_meta *man, struct html *h) { - struct tag *t, *tt; + struct tag *t; char *title; assert(man->title); assert(man->msec); mandoc_asprintf(&title, "%s(%s)", man->title, man->msec); - t = print_otag(h, TAG_TABLE, "c", "head"); - tt = print_otag(h, TAG_TR, ""); + t = print_otag(h, TAG_DIV, "cr?", "head", "doc-pageheader", + "aria-label", "manual header line"); - print_otag(h, TAG_TD, "c", "head-ltitle"); + print_otag(h, TAG_SPAN, "c", "head-ltitle"); print_text(h, title); - print_stagq(h, tt); + print_stagq(h, t); - print_otag(h, TAG_TD, "c", "head-vol"); + print_otag(h, TAG_SPAN, "c", "head-vol"); if (man->vol != NULL) print_text(h, man->vol); - print_stagq(h, tt); + print_stagq(h, t); - print_otag(h, TAG_TD, "c", "head-rtitle"); + print_otag(h, TAG_SPAN, "c", "head-rtitle"); print_text(h, title); print_tagq(h, t); free(title); @@ -291,16 +291,19 @@ man_root_pre(const struct roff_meta *man static void man_root_post(const struct roff_meta *man, struct html *h) { - struct tag *t, *tt; + struct tag *t; + + t = print_otag(h, TAG_DIV, "cr?", "foot", "doc-pagefooter", + "aria-label", "manual footer line"); - t = print_otag(h, TAG_TABLE, "c", "foot"); - tt = print_otag(h, TAG_TR, ""); + print_otag(h, TAG_SPAN, "c", "foot-left"); + print_stagq(h, t); - print_otag(h, TAG_TD, "c", "foot-date"); + print_otag(h, TAG_SPAN, "c", "foot-date"); print_text(h, man->date); - print_stagq(h, tt); + print_stagq(h, t); - print_otag(h, TAG_TD, "c", "foot-os"); + print_otag(h, TAG_SPAN, "c", "foot-os"); if (man->os != NULL) print_text(h, man->os); print_tagq(h, t); Index: TODO =================================================================== RCS file: /home/cvs/mandoc/mandoc/TODO,v retrieving revision 1.325 retrieving revision 1.326 diff -LTODO -LTODO -u -p -r1.325 -r1.326 --- TODO +++ TODO @@ -538,13 +538,6 @@ are mere guesses, and some may be wrong. does this affect other characters, other source macros...? Jackson Pauls 29 Aug 2017 16:56:27 +0100 -- The tables used to render the three-part page headers actually force - the width of the to the max-width given for . - Not yet sure how to fix that... - Observed by an Anonymous Coward on undeadly.org: - http://undeadly.org/cgi?action=article&sid=20140925064244&pid=1 - loc * exist * algo ** size * imp *** - - generate tags in HTML idea from florian@ Tue, 7 Apr 2015 00:26:28 +0000 may be possible to implement with .Lk img://something.png alt_text Index: mandoc.css =================================================================== RCS file: /home/cvs/mandoc/mandoc/mandoc.css,v retrieving revision 1.50 retrieving revision 1.51 diff -Lmandoc.css -Lmandoc.css -u -p -r1.50 -r1.51 --- mandoc.css +++ mandoc.css @@ -53,19 +53,28 @@ table.results { margin-top: 1em; /* Header and footer lines. */ -table.head { width: 100%; +div[role=doc-pageheader] { + display: flex; border-bottom: 1px dotted #808080; margin-bottom: 1em; font-size: smaller; } -td.head-vol { text-align: center; } -td.head-rtitle { +.head-ltitle { flex: 1; } +.head-vol { flex: 0 1 auto; + text-align: center; } +.head-rtitle { flex: 1; text-align: right; } -table.foot { width: 100%; +div[role=doc-pagefooter] { + display: flex; + justify-content: space-between; border-top: 1px dotted #808080; margin-top: 1em; font-size: smaller; } -td.foot-os { text-align: right; } +.foot-left { flex: 1; } +.foot-date { flex: 0 1 auto; + text-align: center; } +.foot-os { flex: 1; + text-align: right; } /* Sections and paragraphs. */ -- To unsubscribe send an email to source+unsubscribe@mandoc.bsd.lv