This package is not currently part of the Emacs distribution.
Generate a table of content
You can re-generate the toc, put it wherever you want and customize it.
See outline-toc.el (in development and not in MELPA yet). It displays a TOC on the sidebar, highlighting the one that you're editing in the master document. Also works for org-mode (and other outline-mode compatible files).
Live preview as you type
There are a few possibilities.
It also knows Github Flavoured Markdown.
If you have a problem with scrolling the page, just click on "Auto scroll" in the browser (the red link on the right).
Or look at impatient-mode below, which also works for html.
You can tell flymd to stop updating the page with (flymd-unflyit) (not an interactive command).
See impatient-mode (in MELPA). It only depends on emacs packages. This package is designed for html though, but it is possible to make it render markdown. Evaluate this somewhere so you have the function:
(defun markdown-html (buffer) (princ (with-current-buffer buffer (format "<!DOCTYPE html><html><title>Impatient Markdown</title><xmp theme=\"united\" style=\"display:none;\"> %s </xmp><script src=\"http://strapdownjs.com/v/0.2/strapdown.js\"></script></html>" (buffer-substring-no-properties (point-min) (point-max)))) (current-buffer)))
Then M-x imp-set-user-filter in your markdown buffer, and supply markdown-html when it asks for the function. Live updating markdown!
Another filter which cooperates markdown-mode:
(defun markdown-filter (buffer) (princ (with-temp-buffer (let ((tmpname (buffer-name))) (set-buffer buffer) (set-buffer (markdown tmpname)) ; the function markdown is in `markdown-mode.el' (buffer-string))) (current-buffer)))
livedown is specific to markdown but it requires nodejs packages (to be easily installed with npm).