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

如何在R/Exams中调整SVG文件的缩放比例?

解决R/Exams中SVG无法缩放的问题

在Windows系统的RStudio里使用R/Exams时,通过\includegraphics[scale]调整SVG图片缩放比例没效果,核心原因是LaTeX的graphicx包对SVG格式的原生支持有限,推荐试试下面几种方案:

方案1:转SVG为PDF后再缩放(最稳定)

LaTeX对PDF图片的缩放支持更可靠,用rsvg包将SVG转成PDF后再引入:

  1. 先安装依赖包:
install.packages("rsvg")
  1. 修改你的试题代码:
<<echo=FALSE, results=hide>>=
# 下载SVG文件并转换为PDF
svg_path <- "atom.svg"
download.file("https://dev.w3.org/SVG/tools/svgweb/samples/svg-files/atom.svg", svg_path)
rsvg::rsvg_pdf(svg_path, "atom.pdf")
include_supplement("atom.pdf", recursive = TRUE)
@

\begin{question}
2加1等于多少?

\includegraphics[scale = 0.1]{atom.pdf}

\begin{answerlist}
\item 1
\item 2
\item 3
\end{answerlist}
\end{question}

\extype{schoice}
\exsolution{001}
\exshuffle{3}

方案2:手动修改SVG文件的尺寸属性

直接编辑SVG文件,调整根标签<svg>的尺寸参数:

  • 找到<svg>标签里的viewBox属性(比如原属性为viewBox="0 0 100 100"),把后两个数值乘以缩放比例,比如改成viewBox="0 0 10 10"就能缩小到原尺寸的1/10;
  • 或者直接修改width和height属性,比如设为width="10px" height="10px"。

修改完成后,用\includegraphics引入时无需加scale参数,直接使用修改后的SVG即可。

方案3:用R代码自动修改SVG尺寸

如果不想手动编辑文件,用xml2包批量修改SVG的尺寸属性:

  1. 安装依赖包:
install.packages("xml2")
  1. 修改试题代码:
<<echo=FALSE, results=hide>>=
library(xml2)
svg_path <- "atom.svg"
download.file("https://dev.w3.org/SVG/tools/svgweb/samples/svg-files/atom.svg", svg_path)

# 读取SVG文件并调整尺寸
svg <- read_xml(svg_path)
view_box <- xml_attr(svg, "viewBox")

if (!is.na(view_box)) {
  # 基于viewBox缩放
  vb_vals <- as.numeric(strsplit(view_box, " ")[[1]])
  vb_vals[3:4] <- vb_vals[3:4] * 0.1  # 缩放比例0.1
  xml_attr(svg, "viewBox") <- paste(vb_vals, collapse = " ")
} else {
  # 直接修改width/height
  xml_attr(svg, "width") <- as.numeric(xml_attr(svg, "width")) * 0.1
  xml_attr(svg, "height") <- as.numeric(xml_attr(svg, "height")) * 0.1
}

# 保存修改后的SVG
write_xml(svg, "atom_scaled.svg")
include_supplement("atom_scaled.svg", recursive = TRUE)
@

\begin{question}
2加1等于多少?

\includegraphics{atom_scaled.svg}

\begin{answerlist}
\item 1
\item 2
\item 3
\end{answerlist}
\end{question}

\extype{schoice}
\exsolution{001}
\exshuffle{3}

提示:优先选方案1,因为PDF格式在LaTeX环境中的兼容性最好,几乎不会出现缩放失效的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 15:01:26