当 results='asis' 时出现“缺少 $ 插入”错误

当 results='asis' 时出现“缺少 $ 插入”错误

当我想使用 knitr 在 LyX 中导出 PDF 文件时遇到了问题。

我的块如下:

<<echo=FALSE>>=
read_chunk('resumen_3.R')

@

<<3_0,echo=FALSE,results='asis'>>=

@

我在 RStudio 中的 Rscript 看起来很简单:

## @knitr 3_0
library(knitr)
library(xtable)
library(data.table)
library(RMysSQL)

c<-subset(uno, grepl("^[^9]", uno$idcriadorviejo), select=c(origen,nomcriador))

tabla_4<-data.table(c)
tabla_5<-tabla_4[,.(count= .N), by=idcriadorviejo]

print(xtable(tabla_5[order(count,decreasing=TRUE),]),floating=FALSE)
  • 错误是Missing $ inserted.

我发现错误的部分 Latex 代码如下:

Package color Info: Redefining color shadecolor on input line 79.
LaTeX Font Info:    Try loading font information for T1+cmtt on input line 82.
(/usr/share/texlive/texmf-dist/tex/latex/base/t1cmtt.fd
File: t1cmtt.fd 1999/05/25 v2.5h Standard LaTeX font definitions
)
LaTeX Font Info:    External font `cmex10' loaded for size
(Font)              <7> on input line 88.
LaTeX Font Info:    External font `cmex10' loaded for size
(Font)              <5> on input line 88.
! **Missing $ inserted.**
<inserted text> 
                $
l.301 

**I've inserted a begin-math/end-math symbol since I think
you left one out. Proceed, with fingers crossed.**


Overfull \hbox (163.16438pt too wide) in paragraph at lines 141--301
\T1/cmr/m/n/10 "HOLA" "HOLA" "HOLA" "HOLA" ... $\OML/cmm/m/it/10 bu
[]ria \OT1/cmr/m/n/10 : \OML/cmm/m/it/10 chr\OT1/cmr/m/n/10 "0136064""0094401""
0175242""0178927"\OML/cmm/m/it/10 :::$
 []

但是,当我设置时results=**'hide'**,我可以导出为 pdf 并且错误消失。

你能帮助我吗?谢谢!

PD:为了避免下划线问题,我在 LaTeX 序言中设置:

\usepackage[T1]{fontenc}
\usepackage{underscore}

答案1

正如@MYaseen208所建议的那样,问题似乎出在xtable输出中的下划线。即使它会自动对其进行转义,但\_仍会导致pdfLatex中的语法错误。您使用data.table这一事实似乎也很重要。

当我尝试使用 xtable 格式化 tables() 的输出时,其中某一列名包含下划线,也遇到了同样的问题。

以下内容可以正常工作,无需\usepackage{underscore}在序言中:

<<echo=FALSE,results='asis'>>=
library(xtable)
my.df <- data.frame(first_col=c("a","b","c_d"))
print(xtable(my.df, caption="Data frame"))
@

这也很好用:

<<echo=FALSE,results='asis'>>=
library(data.table)
my.tbl <- data.table(my.df)
print(xtable(my.tbl[order(first_col,decreasing=TRUE),], caption="Data table"))
@

Missing $ inserted.但这会导致pdfLatex出现错误“ ”:

<<echo=FALSE,results='asis'>>=
print(xtable(tables()))
@

这解决了这个问题:

<<echo=FALSE,results='asis'>>=
print(xtable(tables(silent=TRUE)))
@

不幸的是,您没有提供足够的有关表 uno (或 resumen_3.R 中的其他代码)的内容的信息,以确定这是否也能解决您的原始问题。

相关内容