             command     : required
             args        : required
             postprocess : undefined
+            path        : undefined  # if set, change working directory to path
             cb          : required   # cb(error, html, warnings)
         html = undefined
         warnings = undefined

            elt.find('link').remove()
            source = elt.html()

            # finally set html in the live DOM
            @preview_content.html(source)

            @localize_image_links(@preview_content)

            ## this would disable clickable links...
            #@preview.find("a").click () =>
            #    return false
            # Make it so preview links can be clicked, don't close SMC page.
            @preview_content.find("a").attr("target","_blank")
            @preview_content.find("table").addClass('table')  # bootstrap table

            @preview_content.mathjax()

            #@preview_content.find(".smc-html-cursor").scrollintoview()
            #@preview_content.find(".smc-html-cursor").remove()

            #console.log("update_preview time=#{misc.mswalltime(t0)}ms")
            if @_update_preview_redo

        cb(undefined, m.s)

    rmd_to_html: (cb) =>
        split_path = misc.path_split(@filename)
        @to_html_via_exec
            command     : "smc-rmd2html"
            args        : [split_path.tail]
            path        : split_path.head
            cb          : cb

    rst_to_html: (cb) =>
