当我想使用 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 中的其他代码)的内容的信息,以确定这是否也能解决您的原始问题。