如何在Quarto导出MS Word时隐藏代码块,仅HTML中显示?
解决Quarto导出Word时隐藏正文代码块的方案
以下几种方法可以实现你的需求:
1. 全局配置控制默认行为
在项目根目录的_quarto.yml文件中,针对Word(docx)格式单独设置代码块的显示与执行规则,HTML格式保持默认:
format: html: # HTML格式的其他配置,代码块默认正常显示执行 docx: execute: echo: false # Word导出时不显示代码 eval: false # Word导出时不执行代码
这种方式下,所有正文代码块在Word中都会被隐藏且不执行,HTML中正常显示。如果附录需要显示代码,只需在附录的代码块上单独添加属性{echo=true, eval=false},强制在Word中显示代码。
2. 单个代码块的条件控制
如果需要更精细地控制某几个代码块,可直接在代码块属性中使用Quarto的条件函数docx(),指定仅在非Word环境下显示执行:
```{r, echo=!docx(), eval=!docx()} # 这里是正文需要隐藏的代码
对于附录中需要显示的代码块,无需添加该条件,或直接显式设置`{echo=true, eval=false}`即可。 ## 3. 代码引用+附录集中展示 把正文需要隐藏的代码统一定义在附录中,正文通过引用标签调用,同时控制引用的显示条件: - 正文部分(仅HTML显示代码): ```r ```{r ref.label="sample-code", echo=!docx(), eval=!docx()}
- 附录部分(Word和HTML都显示完整代码): ```r ```{r sample-code, echo=true, eval=false} # 完整的示例代码
这种方式能让代码集中在附录,正文仅在HTML中展示代码片段,Word中正文无代码,附录保留完整代码。 内容的提问来源于stack exchange,提问作者timnus
相关产品推荐
相关产品推荐

