Cloud2016 本来觉得有点必要,但我转念想了一下,好像也没啥好比较的,因为 markdown 包的功能太有限,两页文档就可以说尽它的 Markdown 语法,文档中没说的就是不支持的。它的定位就是小众用户群。要是有亮眼的应用,那几乎一定是 JavaScript/CSS 的功劳,而不是 markdown 本身的强大。

    yihui 我想的是有一两个表格总结展示功能对比就好了,就好像 https://posit.co/products/open-source/rstudio/ 对比开源版和 Pro 版,不用详详细细的文档那么多,功能的详细介绍,让用户看文档就好了。现在有三套工具,作为一个刚接触的用户来说,可能会有点懵。他的工作可能用 markdown 包就可以搞定了,却走了 Quarto 的路子。

    我试着划分几个维度,其一是输出格式对比(比如 HTML、LaTeX 等),其二是使用场景对比(比如文档报告、幻灯片展示等),其三是功能对比(比如 HTML 输出下,是否支持目录等)

    12 天 后

    最近两周增加了以下新功能:

    • ::: 层,HTML 输出 <div>,LaTeX 输出 \begin...\end... 环境。能用层之后 Markdown 就可以做很多额外的事情了。
    • 自包含(self-contained)HTML 文件的支持大大增强。九年前我向 Pandoc 建议提供一个选项,让 Pandoc 可以不要嵌入网络资源、只嵌入本地文件。当时作者没有采纳,但前几年他提供了一个蹩脚的办法,就是在网络资源的标签中加入 data-external="1" 的属性,这样 Pandoc 就可以不下载、嵌入它。如今我抄起键盘把这个功能在 markdown 包中实现了。当创建自包含 HTML 文件时,可选嵌入本地或网络文件或二者皆嵌入(参见文档中的 embed_resources 选项)。
    • 增强了 MathJax 支持,并新加了 KaTeX 支持。后者基本上可以本嵌入进自包含的 HTML 输出中,也就意味着离线也可以渲染数学公式。前者因为实在是太复杂了,目前只能部分嵌入。
    • 增强了高亮工具 highlight.js 的支持,并新加了另一个高亮工具 Prism.js 的支持。后者我已经听说几年,但如今终于有动力研究了一下,因为我觉得 highlight.js 的基础库还是太臃肿,自带的三十多种语言里多数都是我不需要的(除了演示,谁会在一个页面上使用三十多种语言呢)。Prism 提供了一个只有几 K 的核心库,然后按需加载需要的语言支持,这一点正好符合我的需求。于是 markdown 的默认高亮工具变成了 Prism。

    这下应该是没什么大的核心功能可加了。其它边边角角的功能估计我会用插件形式去做。

    R Markdown 里输入中文经常会莫名其妙的换行,其实上一行还可以写好几个字的,不知道它为什么要换行呢,我不知道这个问题是不是只有我遇到了。

      chuxinyuan 请提供一个如此莫名其妙的例子吧,如果没有可重复的例子,那么是很难猜的。

        yihui 是的,这里给出一个可重复的例子会更好点。只是每个人的 RStudio 设置的不一样……

        ---
        title: "测试用例"
        output: html_document
        ---
        
        ```{r}
        #| echo: FALSE
        abcdefghijklmn = 1
        ```
        
        
        &emsp;&emsp;当圆的半径为`r abcdefghijklmn[1]`时,圆的面积为`r pi * abcdefghijklmn * abcdefghijklmn`,圆的周长周长为`r 2 * pi * abcdefghijklmn`;当圆的半径为`r abcdefghijklmn[1]`时,圆的面积为`r pi * abcdefghijklmn * abcdefghijklmn`,圆的周长周长为`r 2 * pi * abcdefghijklmn`;当圆的半径为`r abcdefghijklmn[1]`时,圆的面积为`r pi * abcdefghijklmn * abcdefghijklmn`,圆的周长周长为`r 2 * pi * abcdefghijklmn`;当圆的半径为`r abcdefghijklmn[1]`时,圆的面积为`r pi * abcdefghijklmn * abcdefghijklmn`,圆的周长周长为`r 2 * pi * abcdefghijklmn`;当圆的半径为`r abcdefghijklmn[1]`时,圆的面积为`r pi * abcdefghijklmn * abcdefghijklmn`,圆的周长周长为`r 2 * pi * abcdefghijklmn`;当圆的半径为`r abcdefghijklmn[1]`时,圆的面积为`r pi * abcdefghijklmn * abcdefghijklmn`,圆的周长周长为`r 2 * pi * abcdefghijklmn`;当圆的半径为`r abcdefghijklmn[1]`时,圆的面积为`r pi * abcdefghijklmn * abcdefghijklmn`,圆的周长周长为`r 2 * pi * abcdefghijklmn`;当圆的半径为`r abcdefghijklmn[1]`时,圆的面积为`r pi * abcdefghijklmn * abcdefghijklmn`,圆的周长周长为`r 2 * pi * abcdefghijklmn`;当圆的半径为`r abcdefghijklmn[1]`时,圆的面积为`r pi * abcdefghijklmn * abcdefghijklmn`,圆的周长周长为`r 2 * pi * abcdefghijklmn`;

        编辑器会出现莫名其妙换行。

          chuxinyuan 这个问题与本帖无关。简言之,编辑器的换行行为通常是以西文习惯为准的,也就是逢空格才考虑换行,这样做是为了避免分裂一个完整的单词。中文不以空格为分隔符,所以连续的中文字符会被当做一个“单词”。要是你觉得实在辣眼睛,不妨切换到 RStudio 的可视化编辑器。

            yihui 如此看来,是编辑器的问题。问题不大,对编织的文档结果没影响就行,谢谢答疑解惑。

            yihui

            我能理解层出不穷的“新功能”会让开发者和用户都感到兴奋,但我有点越来越兴奋不起来了。

            是不是属于审美疲劳?三年前我偶然看见一个有趣的工具,就在它基础上写了一个跟 R Markdown 有关的包,很另类,自用了一年,就是一直提不起精神来把它公开……

              dapengde 审美疲劳是一方面。另一方面是维护起来太累了,这跟生娃太像了,生之前往往体会不到原来生下来之后要费这么大劲去养。现在体会到了无穷尽的新功能要花那么多时间和精力去维护,我压根儿就不想去把它们开发出来了,因为那些破功能都特么太占用我养娃的时间和精力……

              刚刚把新一版的 markdown 包发上了 CRAN:https://cran.r-project.org/package=markdown 宣布主要功能已经集结完毕,接下来应该不会有大动作了。最近主要花时间写了几篇文档,敲键盘敲得现在我小指都酸了。

              我记得你大前年好像问过(若不是你就是湘云,我记不清了)是不是可以把 hugo-prose 的样式搬进 R Markdown,当时我说可以考虑。这两天我也挑灯夜战把里面的 CSS 和 JS 抽离出来,可以复用了。上面的第三篇文档就是一个演示,还用我的黄瓜架子当了超宽图片的例子。这一阵高强度脑力劳动结束,明天我也要去园子里翻地种菜了。这边的春天终于来了。

                yihui

                是的,生出来不易,养起来更难。短痛能忍,长痛难熬。我现在是写个包也不想发布,以前发布的从CRAN下架了也懒得去修改升级。常常怀疑做了是为了啥,不做又能怎么样。大概是老了。

                很高兴看的 prose 主题可以独立使用,这个需求我肯定提过,但忘了是在哪里提的了。