如何在Rmarkdown的PDF输出表格标题中添加链接
问题:Rmarkdown转Elsevier PDF时表格标题脚注链接编译报错
我用rticles包将Rmarkdown的HTML输出转为PDF输出,已经对.Rmd文件做了多项修改且都正常生效,但遇到一个问题:表格标题中作为脚注的网站链接会导致编译报错。我曾尝试在caption参数中使用文本引用,但因为没用到bookdown所以无效。移除该链接后,编译就能正常运行。
相关代码块
X1=inflation_data$exp[!is.na(inflation_data$exp)&inflation_data$date<="2018-11-02"]-100 X2=inflation_data$exp[!is.na(inflation_data$exp)&inflation_data$date>="2019-01-01"]-100 Y1=inflation_data$inf_yy[inflation_data$date<="2018-11-02"] Y2=inflation_data$inf_yy[inflation_data$date>="2019-01-01"] df1<-DTW(X1,Y1)%>%setNames(c('x','Fixed ER regime')) df2<-DTW(X2,Y2)%>%setNames(c('x','Managed ER regime')) list_df=list(df1,df2) df1122 <- list_df %>% reduce(inner_join, by='x') colnames(df1122)[1]='' knitr::kable(df1122,digits = 2, caption = 'Pan has been folRate regfixed) togram. Ogram was making ER flnto the IMF program.^[https://www.imf.org/05/12/pr19157-IF-Rhes-Sff-Lel-Ant-on-Emic-Poies-wh-Wn-for-a-Thee-Ye-EF]')%>%kable_classic("striped",font_size=10)%>%row_spec(0,bold=T)
编译错误信息
! 缺少$符号。
$ l.621 ...cies-with-Pakistan-for a-Three-Year-EFF]}请在elsevier.Rmd中查找以下文本:
...cies-with-Pakistan-for a-Three-Year-EFF]}你可能需要在某个内嵌R表达式
r周围添加$ $(见上述提示)。错误:
LaTeX编译elsevier.tex失败。请查看调试指南获取排错技巧。查看elsevier.log获取详细信息。执行终止。
YAML配置
--- title: "My title" author: - name: My name email: my.name@google.com affiliation: My Department, My Company correspondingauthor: true footnote: 1 address: - code: My department organization: My organization addressline: 1 my adress city: My city state: My state postcode: 14000 country: My country footnote: - code: 1 text: "This is the first author footnote." abstract: | This is my long abstract. This is my long abstract. This is my long abstract. This is my long abstract. This is my long abstract. This is my long abstract. This is my long abstract. This is my long abstract. This is my long abstract. This is my long abstract. This is my long abstract. keywords: - keyword1 - keyword2 - keyword3 journal: "An awesome journal" date: "`r Sys.Date()`" classoption: preprint, 3p, authoryear bibliography: references.bib linenumbers: false numbersections: true # Use a CSL with `citatssssssssssssssssssssssion_package = "default"` # csl: https://www.zotero.org/styles/elsevier-harvard output: rticles::elsevier_article: latex_engine: xelatex keep_tex: true citation_package: natbib fontsize: 12pt ---
解决办法
- 用LaTeX的
\url{}包裹链接:LaTeX会把URL里的特殊字符(比如连字符、下划线)当成公式符号处理,导致报错。需要在脚注里用\url{}包裹链接,同时在R字符串里要把反斜杠转义成两个,修改后的caption代码如下:knitr::kable(df1122,digits = 2, caption = 'Pan has been folRate regfixed) togram. Ogram was making ER flnto the IMF program.^[\\url{https://www.imf.org/05/12/pr19157-IF-Rhes-Sff-Lel-Ant-on-Emic-Poies-wh-Wn-for-a-Thee-Ye-EF}]')%>%kable_classic("striped",font_size=10)%>%row_spec(0,bold=T) - 预先定义LaTeX脚注:如果上面的方法还是有问题,可以在文档开头(YAML块之后)先定义脚注,再在表格标题里引用:
先添加LaTeX代码:
然后修改caption:\footnote{https://www.imf.org/05/12/pr19157-IF-Rhes-Sff-Lel-Ant-on-Emic-Poies-wh-Wn-for-a-Thee-Ye-EF}\label{fn:imf_link}caption = 'Pan has been folRate regfixed) togram. Ogram was making ER flnto the IMF program.\\ref{fn:imf_link}' - 切换到bookdown输出:如果项目允许,改用bookdown的elsevier格式,它支持更友好的脚注和引用语法,不需要手动处理LaTeX转义,直接用文本引用即可。
内容的提问来源于stack exchange,提问作者Ali Inayat
相关产品推荐
相关产品推荐

