如何为R Markdown行内动态生成的文本添加下划线?
解决方案
你可以通过在水果名称外层添加Pandoc通用的下划线语法__文本__来实现,这种写法同时支持HTML和PDF两种输出格式,行内输出完全可行。
修改后的代码如下:
--- title: "Untitled" output: pdf_document: default html_document: default date: '2022-07-18' --- ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE)
R Markdown
toPrint <- NULL toSAve <- list(c("banana", "yellow"), c("apple", "green")) for(i in 1:length(toSAve)){ # 给水果名添加__包裹,实现下划线效果 fruit_name <- paste0("__", toSAve[[i]][1], "__") toPrint <- paste(toPrint, paste0(i, ".", fruit_name,"\\linebreak"), toSAve[[i]][2], "\\linebreak", "\\linebreak") }
\raggedrightr toPrint
### 原理说明 Pandoc会自动将`__文本__`语法转换为对应输出格式的下划线标记: - 生成HTML时,转为`<u>文本</u>`标签 - 生成PDF时,转为LaTeX的`\underline{文本}`命令 如果需要针对不同输出格式做更精细的控制,也可以用`knitr`的输出判断函数分别处理: ```r for(i in 1:length(toSAve)){ if(knitr::is_html_output()){ fruit_name <- paste0("<u>", toSAve[[i]][1], "</u>") } else if(knitr::is_latex_output()){ fruit_name <- paste0("\\underline{", toSAve[[i]][1], "}") } toPrint <- paste(toPrint, paste0(i, ".", fruit_name,"\\linebreak"), toSAve[[i]][2], "\\linebreak", "\\linebreak") }
内容的提问来源于stack exchange,提问作者CharlotteS.
相关产品推荐
相关产品推荐

