There seems to be a fair bit of opposition to argument list markup. That's fine. What about this approach: - Only surround each definition in the HTML with class="proc def", class="syntax def", etc. (or "proc-def", "syntax-def"). No required tags or classes for the arguments. - Write a tool to extract only the text inside those tags (including subtags). I.e. remove all markup from the text inside. Then parse that text as an S-expression (allowing for typography such as ellipsis for rest arguments, square brackets for optional arguments and angle brackets for placeholders). - If an S-expression metadata doesn't exist for this SRFI, generate one based on the things parsed from the HTML. If the metadata file exists, verify that it matches what's in the HTML. I got encouraging results with this little Python script: import sys from bs4 import BeautifulSoup soup = BeautifulSoup(sys.stdin.read(), "html.parser") for def_ in soup.select(".def"): print(def_.text) Given SRFI-81 with only added markup like this: <span class="proc def">...</span> <span class="syntax def">...</span> It prints output lilke this: (buffer-mode name) (buffer-mode? obj) (transcoder (codec codec) (eol-style eol-style)) (update-transcoder old (codec codec) (eol-style eol-style)) (eol-style lf) There will probably be some SRFIs where the typography inside the S-expressions is different, but if we can change that to be consistent enough across all SRFIs, that ought to be one of the simplest ways to go about generating an index. > Since classes are a major hook for CSS and CSS is the preferred > style of formatting of all but the simplest kind today, I think > that's unreasonable. *Some* classes may have no formatting > implications. I meant that the output would be human-readable even styling the classes, for bare-bones applications. It wouldn't necessarily be pretty. But by using e.g. <b> for procedure names and <var> for arguments (including optional and rest arguments as well as return values) with no CSS classes at all and light typography (brackets, arrows and ellipses) it already looks serviceable. This is close to what's currently done in many SRFIs.