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

exams2pdf转换含URL链接的RMD文件报错,求解决方案

问题描述

我在RMD文件q1.rmd中使用标准Markdown语法添加链接,代码如下:

```{r data generation, echo = FALSE, results = "hide"}
knitr::opts_chunk$set(echo = FALSE)
options(scipen=100)
x = sample(1:6,10,TRUE)
Question

Find the sample mean.

r x

Solution

r mean(x)

Meta-information

extype: num
exsolution: r mean(x)
exname: find mean

运行`exams2pdf("q1.rmd")`后出现如下错误:
> ! Undefined control sequence.
> l.3 Find the \href
> {https://en.wikipedia.org/wiki/Sample_mean_and_covariance%5C%5C...
> 
> Error: LaTeX failed to compile plain1.tex. See https://yihui.org/tinytex/r/#debugging for debugging tips. See plain1.log for more info.

我的大量问题中都包含链接,需要简便的解决方案避免`exams2pdf`失效。

# 解决方案
错误根源是:`exams2pdf`生成的LaTeX代码使用了`\href`命令,但默认的LaTeX模板没有加载`hyperref`包(该包负责解析`\href`实现链接功能)。以下是几种简便解决方法:

## 方法一:调用`exams2pdf`时指定加载`hyperref`包
直接在调用命令中通过`header`参数添加LaTeX包引用,无需修改RMD文件:
```r
exams2pdf("q1.rmd", header = "\\usepackage{hyperref}")

该参数会将指定的LaTeX命令插入到生成的.tex文件的导言区,支持所有Markdown链接转换为LaTeX可识别的格式。

方法二:在RMD文件开头添加LaTeX命令

如果需要单个RMD文件独立支持链接,可在文件最开头(代码块之前)添加raw LaTeX命令:

\usepackage{hyperref}

exams会自动将该命令纳入LaTeX导言区,确保\href命令可被解析。

方法三:自定义模板(适合大量问题场景)

如果有大量问题需要处理,建议自定义包含hyperref的LaTeX模板,后续所有调用统一使用该模板:

  1. 复制exams包默认的plain.tex模板(可通过system.file("templates", "plain.tex", package = "exams")找到路径)
  2. 在模板的导言区(\begin{document}之前)添加\usepackage{hyperref}
  3. 调用exams2pdf时指定模板:
exams2pdf(c("q1.rmd", "q2.rmd", ...), template = "my_custom_template.tex")

内容的提问来源于stack exchange,提问作者Chad Worley

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 13:55:19