[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#27153: gnu: sicp: Add the HTML version.
From: |
Maxim Cournoyer |
Subject: |
bug#27153: gnu: sicp: Add the HTML version. |
Date: |
Tue, 30 May 2017 20:42:34 -0700 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) |
Hi Clément,
Clément Lassieur <address@hidden> 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