knit/rmarkdown/Latex:如何交叉引用图形和表格?

2023-12-08

我正在尝试交叉引用使用knitr/rmarkdown 生成的PDF 中的图形和表格。关于 SO 和 tex.stackexchange 有一些问题(here and here,例如),建议内联执行此操作的方法是添加\ref{fig:my_fig}, where my_fig是块标签。然而,当我在我的rmarkdown文档,我得到??图号应该在哪里。我想了解如何使交叉引用正常工作。

下面是一个可重现的示例。有两个文件:rmarkdown文件加一个header.tex我包含的文件以防万一它影响答案(尽管我是否包含相同的问题header.tex文件或不)。

In the rmarkdown文件中有三个交叉引用示例。示例 1 是交叉引用失败的图(??显示而不是图号)。还有第二个已注释掉的尝试(基于这个答案),我尝试设置图形环境、标签和标题latex块之前和之后的标记,但这会导致pandoc当我尝试编织文档时出错。错误是:

! Missing $ inserted.
<inserted text> 
                $
l.108 ![](testCrossRef_

实施例2使用xtable和交叉引用作品。实施例3用途kable并且交叉引用失败。

本文底部包含 PDF 输出的屏幕截图。

rmarkdown file

---
title: | 
  | My Title  
author: | 
  | eipi10  
  | Department of Redundancy Department  
date: "`r format(Sys.time(), '%B %e, %Y')`"
output: 
  pdf_document:
    fig_caption: yes
    includes:
      in_header: header.tex
    keep_tex: yes
fontsize: 11pt
geometry: margin=1in
graphics: yes
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE, message=FALSE, warning=FALSE, fig.height=2, fig.width=4)
```

# Example 1. Figure

This is a report. Take a look at Figure \ref{fig:fig1}.  

```{r fig1, echo=FALSE, fig.cap="This is a caption"}
plot(mtcars$wt, mtcars$mpg)
```

<!-- Now, let's take a look at this other plot in Figure \ref{fig:fig2}. -->

<!-- \begin{figure} -->
<!-- ```{r fig2, echo=FALSE} -->
<!-- plot(mtcars$cyl, mtcars$mpg) -->
<!-- ``` -->
<!-- \caption{This is another caption} -->
<!-- \label{fig:fig2} -->
<!-- \end{figure} -->

# Example 2: `xtable`

Some more text. See Table \ref{tab:tab1} below. 

```{r echo=FALSE, results="asis"}
library(xtable)
print.xtable(
  xtable(mtcars[1:3,1:4], label="tab:tab1", caption="An xtable table"), 
  comment=FALSE)
```

# Example 3: `kable`

Some more text. See Table \ref{tab:tab2} below. 

```{r tab2, echo=FALSE}
library(knitr)
kable(mtcars[1:3,1:4], caption="A `kable` table")
```

header.tex file

% Caption on top
% https://tex.stackexchange.com/a/14862/4762
\usepackage{floatrow}
\floatsetup[figure]{capposition=top}
\floatsetup[table]{capposition=top}

PDF输出

enter image description here


您可以使用输出格式bookdown::pdf_document2代替pdf_document,引用图形的语法是\@ref(fig:chunk-label);详细信息请参阅文档:https://bookdown.org/yihui/bookdown/figures.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

knit/rmarkdown/Latex:如何交叉引用图形和表格? 的相关文章

随机推荐

  • 动态创建 lambda 表达式 + linq + OrderByDescending

    如何创建动态 lambda 表达式以传递到 linq 内的 orderby 函数中使用 我基本上想要转变queryResults OrderByDescending in queryResults OrderByDescending myC
  • 合并两个文件中的文本,输出到另一个文件[重复]

    这个问题在这里已经有答案了 我遇到了一些问题 我一整天都在寻找 这是我的第一堂 Unix 课 不要太严厉 所以这听起来可能相当简单 但我无法理解 我有两个文本文件 file1 David 734 838 9801 Roberto 313 1
  • Firebug 杀死 CSS 文件中的 -webkit 设置 - 为什么?

    样式 css 原始文件 box webkit border radius 8px moz border radius 8px padding 10px 样式 css 在 Firebug CSS 控制台中 box moz border rad
  • Component-preload.js 生成

    我们即将关闭 SAPUI5 应用程序 最后一步之一是创建一个Component Preload js文件以提高性能 我在网上阅读了不同的指南 它们都需要我安装的 Node js 我不是该软件包的专家 我不知道如何使该指南之一发挥作用 我正在
  • 使用 PL/SQL 解析大型 XML 文件

    我正在尝试解析相当大的 XML 文件 FILE 足够大 无法使用 VARCHAR2 因此我决定使用 CLOB 代码看起来不错 但我仍然收到错误 这是我正在解析的 xml 文件的示例
  • ValueError Scikit 学习。模型的特征数量与输入不匹配

    总的来说 我对机器学习和 scikit learn 都很陌生 我正在尝试使用网站上给出的示例http scikit learn org stable tutorial basic tutorial html 为了自己练习 我使用自己的数据集
  • 将 XMPP 集成到 Rails 需要什么?

    这是我到目前为止所拥有的 XMPP 服务器 Ejabberd 或Vine Rails 中的 XMPP 库 Blather 客户端上的 XMPP 库 Strope js 这是我将聊天集成到我的 Rails 应用程序中所需要的吗 编辑 来自 V
  • 匿名方法/Lambda(编码标准)

    在 Jeffrey Richter 的 CLR via C net 2 0 版第 353 页 中 他表示 作为一种自律 他从不使匿名函数的代码长度超过 3 行 他主要引用可读性 可理解性作为他的理由 这很适合我 因为我已经养成了使用匿名方法
  • Laravel - 更改特定 URL 的数据库连接?

    我对使用 Laravel 框架相当陌生 我有以下要求 我有一个域 example com 它的整个代码堆栈都在 laravel 中运行 假设在配置中默认数据库连接是 db1 现在 如果网址变为 example com country 我希望
  • JDBC 4 的 java.sql.Clob.free() 方法和向后兼容性

    我正在调查一个有趣的性能问题 其中没有调用java sql Clob free 在经常使用的资源上 这个方法在Clob是在 Java 6 JDBC 4 中引入的 因此这很可能实际上是从 JDBC 3 升级到 JDBC 4 时引入的回归 这是
  • Python OpenCV 实时人脸检测裁剪保存

    我对此进行了大量的研究 我认为我的逻辑已经磨损了 几乎在那里 但似乎无法理解为什么 cv2 imshow 窗口中没有显示任何内容 只是一个灰色的框 但好消息是我是能够检测脸部并裁剪该脸部 然后将其保存在文件夹中 你能告诉我我哪里出了问题吗
  • 旋转和移动画布元素中的图像?

    我想在元素中移动和旋转球的图像 球的尺寸为 68x68 画布的尺寸为 300x200 球沿着 x 和 y 轴移动 当它撞到墙壁时翻转它的 x 和 y 速度 所有这些都有效 我只是不知道如何在运动的基础上进行旋转 我的draw 函数每30毫秒
  • 来自 glmer 的反向变换系数以及用于预测的缩放自变量

    我使用以下方法安装了混合模型lme4包裹 我用以下方法转换了自变量scale 拟合模型之前的函数 我现在想使用以下方式在图表上显示我的结果predict 所以我需要将预测数据恢复到原始规模 我该怎么做呢 简化示例 database lt m
  • 无法从 Linux 容器切换到 Windows 容器

    我最近从头开始重建我的电脑 我已经安装了 Windows 版 Docker 我无法从 Linux 容器切换到 Windows 容器 这是我得到的错误 Error response from daemon open pipe docker e
  • 如何打印完整的 NumPy 数组而不截断?

    当我打印 numpy 数组时 我得到一个截断的表示 但我想要完整的数组 gt gt gt numpy arange 10000 array 0 1 2 9997 9998 9999 gt gt gt numpy arange 10000 r
  • 如何计算具有指数的字符串

    Javax ScriptEngine 和 JEval 的工作原理类似 您输入一个字符串并将其发送给它进行评估 它会返回您的结果 在 ScriptEngine 中 在 JEval 中几乎相同 System out println engine
  • VSCode:快速切换flutter版本

    所以 我使用的是 flutter 2 2 3 版本 现在无法升级 但是 我的另一个项目需要更高的SDK 我知道 有FVM 但我发现了这个 如何在同一设备上针对不同项目使用两个版本的flutter 并引用文章 https dartcode o
  • c#: SetScrollPos (user32.dll)

    我想要 2 个 丰富的 文本框 bc 2k8 具有相同的滚动 所以当我滚动 tb1 时 tb2 滚动到相同的位置 我使用这个功能 DllImport user32 dll static extern int SetScrollPos Int
  • Go 中空接口的最佳实践?

    我正在学习空接口 我发现虽然在 Stackoverflow 上有很多关于空接口的含义及其工作方式的解释 但关于何时 为何使用它们 何时避免 考虑因素是什么以及如何使用它们的最佳实践信息却很少 选择使用它们的优点和缺点 在 Go 聊天室中 我
  • knit/rmarkdown/Latex:如何交叉引用图形和表格?

    我正在尝试交叉引用使用knitr rmarkdown 生成的PDF 中的图形和表格 关于 SO 和 tex stackexchange 有一些问题 here and here 例如 建议内联执行此操作的方法是添加 ref fig my fi