• R语言已解决
  • 用blogdown写博客时,怎样让.rmd文档能够knit生成html文档?

事情是酱紫的,我新写的一篇博客里面用了下面:::符号,写的时候是在普通项目里面用 rmarkdown 文档写,能够 knit 生成 html 文档,出现的结果就是正常两列框。然而弄到博客项目里面时,不知为撒无法 knit 生成 html 文档,只会生成 .md 文档。

:::::: {.columns style="display: flex;"}

::: {.column width="49%"}
```{sql}
--左
```
:::

::: {.column width="2%"}
:::

::: {.column width="49%"}
```{sql}
--右
```
:::

::::::

问了下新必应,说是在 yaml 文件头加上下面这段,但是也不管用。

output:
  html_document:
    keep_md: false

    yuanfan

    YAML 的输出部分改为如下试试

    output:
      blogdown::html_page:
        toc: true
        number_sections: true

      Cloud2016
      刚试了下,也不行,:::这个符号还是没变成框。
      顺带附上系统版本信息,昨天忘记了。

      > sessionInfo()
      R version 4.3.0 (2023-04-21 ucrt)
      Platform: x86_64-w64-mingw32/x64 (64-bit)
      Running under: Windows 11 x64 (build 22621)
      Matrix products: default
      locale:
      [1] LC_COLLATE=Chinese (Simplified)_China.utf8  LC_CTYPE=Chinese (Simplified)_China.utf8   
      [3] LC_MONETARY=Chinese (Simplified)_China.utf8 LC_NUMERIC=C                               
      [5] LC_TIME=Chinese (Simplified)_China.utf8    
      
      time zone: Asia/Shanghai
      tzcode source: internal
      
      attached base packages:
      [1] stats     graphics  grDevices utils     datasets  methods   base     
      
      loaded via a namespace (and not attached):
       [1] digest_0.6.31    later_1.3.0      R6_2.5.1         httpuv_1.6.9     fastmap_1.1.1    xfun_0.39        blogdown_1.16   
       [8] magrittr_2.0.3   knitr_1.42       htmltools_0.5.5  rmarkdown_2.21   ps_1.7.5         promises_1.2.0.1 servr_0.26      
      [15] cli_3.6.1        processx_3.8.1   compiler_4.3.0   rstudioapi_0.14  tools_4.3.0      evaluate_0.20    Rcpp_1.0.10     
      [22] yaml_2.3.7       jsonlite_1.8.4   rlang_1.1.0  

      yuanfan 这问题略有些复杂。::: 是 Pandoc 的 Markdown 语法,只有 Pandoc 一家支持它,别的 Markdown 转换工具都不认识它(比如 Hugo 就不认识它)。如果一定要用它的话,那就只能按 fenguoerbian 说的修改你的全局选项。但是,修改的不良副作用是其它 .Rmd 日志也会受牵连,它们以前是被转换为 .md;如果改了这个选项,那么它们都将被重新转换为 .html。现在你有两条路可走:

      1. 要么修改那个 blogdown.method 选项,并同时做一些重命名工作:
        files = blogdown:::list_rmds()
        # .Rmd -> .Rmarkdown
        file.rename(files, xfun::with_ext(files, '.Rmarkdown'))
        # .md -> .markdown
        file.rename(xfun::with_ext(files, '.md'), xfun::with_ext(files, '.markdown'))
        这是因为 .Rmarkdown 扩展名的文档一定会生成 .markdown 文档,不受那个选项影响。修改那个选项只会让将来的 .Rmd 通过 Pandoc 生成 .html
      2. 要么你不用 ::: 语法,而是改写原始 HTML 标签:
        <div style="display: flex;">
        <div style="width: 49%">
        </div>
        <div style="width: 2%">
        </div>
        <div style="width: 49%">
        </div>
        </div>

        yihui
        我选第二条路,但还有一个疑问。其实我是不是可以把我的博客项目里面blogdown.method = 'markdown'直接删掉,然后每次想 knit 生成.html 或者.md 就在.rmd 文档里面单独设置。

        因为一楼的代码是从这里抄的,用了:::符号
        https://github.com/cosname/cosx.org/blob/master/content/post/2020-11-15-dt-vs-pd.rmd
        ,这篇文章就 knit 生成了 html 文档,其他的.rmd 文档都设置了output:
        blogdown::html_page
        于是都 knit 生成 html 文档。而主站的.Rprofile 文档也没像你们说的设置那些。
        https://github.com/cosname/cosx.org/blob/master/.Rprofile

          yuanfan 把我的博客项目里面blogdown.method = 'markdown'直接删掉,然后每次想 knit 生成.html 或者.md 就在.rmd 文档里面单独设置

          如果你想自由选择输出 .html 或是 .md,那么最简单的办法是设置 options(blogdown.method = 'html'),然后用扩展名来选择:.Rmd 会生成 .html.Rmarkdown 会生成 .markdown

          19 天 后