You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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
---

解决办法

  1. 用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)
    
  2. 预先定义LaTeX脚注:如果上面的方法还是有问题,可以在文档开头(YAML块之后)先定义脚注,再在表格标题里引用:
    先添加LaTeX代码:
    \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:
    caption = 'Pan has been folRate regfixed) togram. Ogram was making ER flnto the IMF program.\\ref{fn:imf_link}'
    
  3. 切换到bookdown输出:如果项目允许,改用bookdown的elsevier格式,它支持更友好的脚注和引用语法,不需要手动处理LaTeX转义,直接用文本引用即可。

内容的提问来源于stack exchange,提问作者Ali Inayat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 00:40:53