Subject: Re: bug#27153: gnu: sicp: Add the HTML version.

From: Maxim Cournoyer <[email-masked]>
Date: Tue, 30 May 2017 20:42:34 -0700

Hi Clément,

Clément Lassieur <[email-masked]> writes:

> Yesterday, while browsing the Info version of SICP, I came accross an
> incomplete figure (Figure 3.1: environments A and B are missing).  I
> thought the HTML version might be complete and indeed it was.  It's
> really nice by the way, see http://sarabander.github.io/sicp/.  And real
> figures are in my opinion more pleasant to study than ASCII art figures.
>
> So I think we should add the HTML version to our package. :-)  That
> would allow us to use it without Internet access.
>
> I find it much easier to browse the Info manual than the HTML one, so I
> wrote this small Elisp snippet to switch from the former to the latter:
>
> (defun sicp-browse ()
>   "Ask a browser to load the HTML version of the current node."
>   (interactive)
>   (let* ((home (expand-file-name "~"))
>          (dir (concat "file://" home "/.guix-profile/share/doc/sicp/html/"))
>          (node Info-current-node)
>          (pattern
>           (string-join
>            '("^\\(?1:[0-9]\\)\.\\(?2:[0-9]\\)\.\\(?3:[0-9]\\)$" ; 4-5-7
>              "^\\(?1:[0-9]\\)\.\\(?2:[0-9]\\)$"                 ; 4-5
>              "^Chapter \\(?1:[0-9]\\)$")                        ; Chapter 4
>            "\\|")))
>     (if (string-match pattern node)
>         (let ((chapter     (match-string 1 node)) ; 4
>               (section     (match-string 2 node)) ; 5
>               (sub-section (match-string 3 node)) ; 7
>               base
>               (anchor ""))
>           (if section
>               (setq base (format "%s_002e%s" chapter section))
>             (setq base (format "Chapter-%s" chapter)))
>           (when sub-section
>             (setq anchor (format "#g_t%s_002e%s" base sub-section)))
>           (browse-url (concat dir base ".xhtml" anchor)))
>       (error "Node not matched"))))

Cool! Thanks for sharing. I having started my study of SICP yet, but
that's something I've been meaning to do.

Also, couldn't the info version contain real figures (bitmaps)? Emacs is
capable of displaying images; maybe the info viewer is able to detect if
yes or no images are supported, and degrade gracefully to an alternative
(ascii art) when support is lacking?

Just some thoughts :)

Maxim