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

如何在bookdown表格单元格中插入LaTeX公式与tikz绘图

解决方案

要同时兼容HTML和PDF两种输出格式,最稳定的方案是用knitr::kable生成表格,直接嵌入tikz绘图和LaTeX公式,具体实现如下:

实现步骤

  1. 调整tikz代码块参数,设置合适的输出宽度和垂直对齐规则,避免图幅过大撑爆单元格,同时保证和同行内容对齐
  2. 公式直接用行内LaTeX语法编写,注意R字符串中反斜杠需要双重转义
  3. 调用kable生成表格时设置escape=FALSE,避免单元格内的LaTeX和HTML代码被转义

示例代码

library(knitr)
# 预生成uniform分布的tikz图
uniform_plot <- knit_child(text = "
```{tikz, echo=FALSE, cache=TRUE, out.width='2cm', out.extra='style=\"vertical-align: middle;\"'}
\\begin{tikzpicture}[baseline={([yshift=-.5ex]current bounding box.center)}]
\\draw[->] (-1.7,0) -- (1.9,0) node[below]{$x$};
\\draw[->] (0,-.2) -- (0,1.4) node[right]{$K(x)$};
\\draw (-1,0.1) -- (-1,-0.1) node[below] {$-1$};
\\draw (1,0.1) -- (1,-0.1) node[below] {$1$};
\\draw[thick] (-1.6,0) -- (-1,0);
\\draw[thick] (-1,.5) -- (1,.5);
\\draw[thick] (1,0) -- (1.6,0);
\\end{tikzpicture}

")

构造表格数据

tab_data <- data.frame(
Name = c("Uniform", "Another"),
Plot = c(uniform_plot, "..."),
$K(x) = \\cdots$ = c("$\begin{cases}1/2 & \mbox{if } -1 \leq x \leq 1 \\ 0 & \mbox{otherwise}\end{cases}$", "..."),
check.names = FALSE
)

输出表格

kable(tab_data, align = "ccc", escape = FALSE)

## 注意事项
- `out.width`参数可以根据实际需要调整图的大小,`out.extra`的垂直对齐规则在HTML和PDF输出中都会自动适配
- 如果你的tikz图已经提前渲染为本地图片,也可以用`include_graphics("图片路径")`替代内嵌的tikz代码块,效果一致
- 不推荐直接用原生Markdown表格插入内容,对齐和跨格式渲染的兼容性会差很多

内容的提问来源于stack exchange,提问作者jochen
相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:09:00