LaTeX 中的链接文本 table 与 knitr/kable
Linked text in LaTeX table with knitr/kable
我有以下数据框:
site_name | site_url
--------------------| ------------------------------------
3D Printing | https://3dprinting.stackexchange.com
Academia | https://academia.stackexchange.com
Amateur Radio | https://ham.stackexchange.com
我想生成第三列,其中 link 与文本集成在一起。在 HTML 中,我想出了以下伪代码:
df$url_name <- "[content of site_name](content of site_url)"
导致以下工作程序代码:
if (knitr::is_html_output()) {
df <- df %>% dplyr::mutate(url_name = paste0("[", df[[1]], "](", df[[2]], ")"))
knitr::kable(df)
}
在 LaTeX 中也有 knitr
的方法吗?
(我更喜欢与 kableExtra
兼容的解决方案,但如果这不可能,我准备学习任何 table 包可以做到这一点。)
*** 添加:我刚刚注意到上面的代码在带有 yaml header output: pdf_document
的普通 .Rmd 文档中工作。但不在我的 bookdown
项目中。
问题出在 knitr::kable
。它不识别 bookdown
项目需要 Markdown 输出,所以你需要明确地告诉它:
df <- df %>% dplyr::mutate(url_name = paste0("[", df[[1]], "](", df[[2]], ")"))
knitr::kable(df, format = "markdown")
这适用于任何类型的 Markdown 输出:html_document
、pdf_document
、bookdown::pdf_book
等。
或者,如果 table 的其他部分需要 LaTeX 输出,您可以编写 LaTeX 等价物。当然,这不适用于 HTML 输出,但对于 PDF 目标应该没问题:
df <- df %>% dplyr::mutate(urlName = paste0("\href{", df[[2]], "}{", df[[1]], "}"))
knitr::kable(df, format = "latex", escape = FALSE)
对于这个,我不得不更改列名称;下划线在 LaTeX 中是特殊的。如果您将其保留为 format = "markdown"
,您可能不这样做就可以逃脱,但是使用第一个解决方案可能会更好。
我有以下数据框:
site_name | site_url
--------------------| ------------------------------------
3D Printing | https://3dprinting.stackexchange.com
Academia | https://academia.stackexchange.com
Amateur Radio | https://ham.stackexchange.com
我想生成第三列,其中 link 与文本集成在一起。在 HTML 中,我想出了以下伪代码:
df$url_name <- "[content of site_name](content of site_url)"
导致以下工作程序代码:
if (knitr::is_html_output()) {
df <- df %>% dplyr::mutate(url_name = paste0("[", df[[1]], "](", df[[2]], ")"))
knitr::kable(df)
}
在 LaTeX 中也有 knitr
的方法吗?
(我更喜欢与 kableExtra
兼容的解决方案,但如果这不可能,我准备学习任何 table 包可以做到这一点。)
*** 添加:我刚刚注意到上面的代码在带有 yaml header output: pdf_document
的普通 .Rmd 文档中工作。但不在我的 bookdown
项目中。
问题出在 knitr::kable
。它不识别 bookdown
项目需要 Markdown 输出,所以你需要明确地告诉它:
df <- df %>% dplyr::mutate(url_name = paste0("[", df[[1]], "](", df[[2]], ")"))
knitr::kable(df, format = "markdown")
这适用于任何类型的 Markdown 输出:html_document
、pdf_document
、bookdown::pdf_book
等。
或者,如果 table 的其他部分需要 LaTeX 输出,您可以编写 LaTeX 等价物。当然,这不适用于 HTML 输出,但对于 PDF 目标应该没问题:
df <- df %>% dplyr::mutate(urlName = paste0("\href{", df[[2]], "}{", df[[1]], "}"))
knitr::kable(df, format = "latex", escape = FALSE)
对于这个,我不得不更改列名称;下划线在 LaTeX 中是特殊的。如果您将其保留为 format = "markdown"
,您可能不这样做就可以逃脱,但是使用第一个解决方案可能会更好。