Cloud2016 我以为论坛很多人都用了呢,看来并没有我想的那么多。这个使用体验确实不错。

在折腾的过程中遇到一个小问题,渲染的书籍没法在 RStudio 的 View 窗口里预览,如图所示

复现此问题很容易,第一步:

brew install --cask homebrew/cask/docker
# 只要带有 RStudio Server 镜像,其它的应该也可以,没试过
docker pull rocker/geospatial
docker run -itd -p 8282:8787 --rm --name=sdsr \
  --privileged=true -v "/${PWD}:/home/rstudio" \
  -e USER=rstudio -e PASSWORD=cloud2016 rocker/geospatial:latest

第二步:进入 < http://localhost:8282>,从模版创建 Quarto Book 项目,然后 Render Book。

P.S. 已提报 https://github.com/quarto-dev/quarto-cli/issues/531

    作为一个“老”Rmarkdown用户,我会有啥特别的动力去换成Quarto么?

      shrektan 如果现有的 R Markdown 满足你的需求,那么可以一切照旧,不必尝鲜。Quarto 的初衷是去掉 R Markdown 对 R 的依赖,比如 Python 用户可以用 Jupyter 内核去跑 Python 代码,而不需要绕道先安装 R 和 reticulate 包、用 R 调用 Python。它是要做一项大一统的工作,但 R 这边依然是基于 knitr 的,和 R Markdown 的根基一样。只要有我在,R Markdown 不会消失的,哈哈,在可预见的未来我还会维护这套系统。

      Quarto 的另一个大一统工作是把现有 R Markdown 系统里几乎所有的 R 包都重写了一遍,收到一个软件中,而不是分散在各个 R 包中。在这个过程中,它也做了大量的美工工作,所以可能对看脸的用户来说,它有些输出格式会更漂亮一点。

      可能唯一不能被收服的就是 blogdown 了,因为 Quarto 不会再新增一个依赖(Hugo),而且 blogdown 里专门针对 Hugo 做了很多工作,在 Quarto 中重写一遍会有点困难。

        2 年 后

        yihui 周末在折腾一个新的网页,在搜quarto和blogdown最近的消息跑进来了。看到谢老大的“只要我还在”,感触良多.....

          • 已编辑

          wglaive blogdown 没有直接被 Quarto 收纳,但 Quarto 后来也确实重写了一个自己的网站系统,不依赖 Hugo。我觉得 Hugo 的优势在于安装便利、模版灵活、速度贼快,Quarto 网站的格式比较固定,大家做出来的网站会有点千篇一律。现在 blogdown 已经几乎没什么“最近消息”了,它已经完全稳定下来,只是偶尔解决一下上游 Hugo 更新带来的一些小问题。

          “只要我还在”依旧成立,我还在,只是换了一种身份继续维护这些东西而已。

            yihui Quarto blog 的字体用的是 font.gooogleapi.com 上的字体,这个对国内用户很不友好,打开网页需要 5 到 10 秒左右,新建文章缺少 New Post 插件,渲染速度确实不如 hugo,主题没有 hugo 丰富,但有一点,对新手很友好。

            blogdown 的主题和 hugo 需要从 GitHub 下载(我知道有两个代理地址可以从 GitHub下载东西,不知道能不能帮上忙,见 ipkg 包,纯套壳,哈哈哈),能否自带一个默认主题(主要功能如代码高亮、代码复制按钮、代码块折叠、公式、思源字体、导航目录、评论等),让新用户先用起来(这个新用户大概是这样的:不懂 css,js,学了一个学期统计学,R 语言也是刚入门),其实新用户对主题要求不是很高,部署成功那一刻成就感爆棚,解决了有没有的问题,这是质变,后面再美化,边际效用越来越小还耗时间,所以一开始主要功能都有了,后面就不需要花大量时间折腾了。另外就是增加对 .qmd 格式支持就完美了。

            要求是不是有点多,说起来容易,都是没有经过深入调查研究瞎说的,没经历过开发人员的苦,请别介意。

              12 天 后

              yihui 既然益輝不在 Posit 那我就要把 Rstudio 移除了!(題外話
              不過還是在 command line 用 blogdown 來 build up site 繼續寫作,謝謝益輝的開發!

                • 已编辑

                chuxinyuan dead-sky 这两周我把工作推到了一边,大力投入 litedown 的开发,已经看到曙光。本来我只是想重写一下 knitr 和 rmarkdown 就算了,但写着写着发现在我目前的架构上,其实 bookdown 和 blogdown 已经是唾手可得,所以在不久的未来,你们应该就可以看见一整套极度精简版的 R Markdown 系统,即:

                litedown = knitr + evaluate + rmarkdown
                  + bookdown + blogdown + pagedown + xaringan + tufte
                  - Pandoc - Hugo

                它仅有两个依赖包,就是 commonmark 和 xfun,不依赖外部系统软件。前提是我会去掉一些功能,比如重点支持 HTML 输出,次要支持 LaTeX,而所有其它格式都不支持。默认情况下一切都是极简风,比如网站会是类似 hugo-xmin 那种令人生无可恋的主题(要是用户有本事折腾算我输)。当然,扩展性肯定还是会留的。

                过去十二年开发和维护 knitr 让我对其中的一些设计深感懊悔(当年还是太年轻,不会拒绝),这次重新设计,终于一吐胸中闷气,把很多拥堵的节点都打通了,还衍生出一些非常奇葩的功能。随便剧透几个例子,比如 litedown 可以准确识别 Markdown 元素,所以代码块或注释中的代码将不再会被解析到:

                ````markdown
                下面的代码块不会被运行:
                
                ```{r}
                1 + 1
                ```
                
                行内代码 `r pi` 也不会。
                ````
                
                <!--
                注释随便你注,我要是碰了你的注释算我输。
                
                ```{r}
                1 + 1
                ```
                -->

                knitr 对这两个问题的解决方案堪称恶心,它发明了两个新引擎,得写成这种鬼样子(简直该陈列到“不自然博物馆”里去):

                ````{verbatim, lang='markdown'}
                代码。
                ````
                
                ````{comment}
                注释掉的内容。
                ````

                行内代码我设计了一种新语法 `{lang} code`,这里的语言 lang 不再局限于 r,可以是其它语言(尽管我还决定好如何支持其它语言),而且 {} 里可以像代码块一样写选项,比如 `{r, eval=FALSE} code`

                再比如代码和文本的运行顺序可以通过一个选项任意指定,不一定非得是从头到尾按顺序执行,你可以先运行第二段代码,再运行第一段文本,再运行第五段代码,等等。这是为了解决一个长久以来的痛点,就是有时候文本中需要用到后面代码段中的变量(比如文首摘要中需要插入文末结论部分中计算的数值),knitr 的解决方案也很恶心,我都不知道我是如何能有勇气把它写在书中的,而 litedown 则完美允许非线性的运行顺序。不过我估计有人听说了这个逆天的功能会排队来刺杀我,而有人会排队来给我送花。

                knitr 的缓存设计也让我感到如鲠在喉多年。今年在瑞士再保险看别人的文档编起来辣么慢,而我也不是很有底气让人用 cache = TRUE,于是此事终于给了我一道强刺激让我把那个糟糕的缓存系统重写了一遍,以后要是再推荐别人启用缓存就不需要找那个宁夏人梁静茹借勇气了。

                还有 HTML 预览将会支持源文档和输出文档在左右栏同步滚动,这样写文档的时候可以左边写哪儿、右边就预览哪儿,不需要一会儿左边拖拖拖、一会儿又右边滚滚滚。类似 Typst 那样实时增量更新预览也是有可能的,即写哪儿就只编译哪一块而不必编整个文档,但到这里就碰到我的技术短板了,可能不是那么容易能做出来,可以留作后话。

                  yihui 看上头这段,有种换工作后“顿开金绳扯断玉锁”的感觉。看来“祸福相倚”的老话,果然很老。

                  CyrusYip 哈哈,謝謝,我有在 vscode 上安裝過。不過因為很久不使用 R 了,所以應該不會在 vscode 上面安裝,保持乾淨。還是比較喜歡直接在 shell 裡面下指令打 R 的 function!

                  5 天 后

                  yihui 非常感谢谢大牛的技术贡献,我刚刚用Quarto在Rstudio下完成了一本技术专著的撰写,体验非常好。因为我不是计算机技术出身,很多复杂的设置做不来,所以就到处借鉴各位大牛的东西,在此表示诚挚谢意!

                    1 个月 后

                    geoallan 能不能看看你的_quarto.yml内容?