* mandoc: Finally get rid of the archaic <table> markup for header and
@ 2022-07-05 21:25 schwarze
0 siblings, 0 replies; only message in thread
From: schwarze @ 2022-07-05 21:25 UTC (permalink / raw)
To: source
Log Message:
-----------
Finally get rid of the archaic <table> 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 <cyber at sysrq dot in> 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 <schwarze@openbsd.org>
+ * Copyright (c) 2013-2015,2017-2020,2022 Ingo Schwarze <schwarze@openbsd.org>
* Copyright (c) 2008-2012, 2014 Kristaps Dzonsons <kristaps@bsd.lv>
*
* 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 <body> to the max-width given for <html>.
- 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 <img> 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
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-07-05 21:26 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-05 21:25 mandoc: Finally get rid of the archaic <table> markup for header and schwarze
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).