如何将LaTeX代码包含在Stargazer和xtable输出中?

时间:2019-07-15 15:07:20

标签: r latex xtable stargazer

我想使用stargazer或xtable在R中生成LaTeX表。表格中的一列将包含LaTeX代码,用于引用我文档中其他地方的图形。这些数字使用惯例\ label {Figure:i}(其中i是整数)标记。

我正在尝试以下方法:

df <- data.frame(
          Name = c("My First Graph", "My Second Graph"),
          Figure = paste0("\\ref{Fig: ",1:2))
          )
stargazer(df,summary=FALSE)

但是,输出会自动在最终的LaTeX输出中转义反斜杠和花括号。有谁知道我该如何解决这个问题?

谢谢

1 个答案:

答案 0 :(得分:1)

我对stargazer()一无所知,但是print.xtable()有一个sanitize.text.function选项,将有助于完成此任务。来自help("print.xtable")

  

sanitize.text.function

     

所有非数字条目(行和列除外)   名称)进行清理,以尝试删除具有   输出格式的特殊含义。如果sanitize.text.function是   不为NULL,它应该是一个采用字符向量的函数,并且   返回一个,并将用于消毒,而不是   默认内部功能。默认值为NULL。

因此,我们可以执行以下操作:

df <- data.frame(
    Name = c("My First Graph", "My Second Graph"),
    Figure = paste0("\\ref{Fig: ", 1:2, "}")
)
tbl <- xtable(df)
print(tbl, include.rownames = FALSE, sanitize.text.function = function(x) x)

它提供了我认为您想要的输出:

% latex table generated in R 3.4.4 by xtable 1.8-2 package
% Mon Jul 15 10:30:31 2019
\begin{table}[ht]
\centering
\begin{tabular}{ll}
  \hline
Name & Figure \\ 
  \hline
My First Graph & \ref{Fig: 1} \\ 
  My Second Graph & \ref{Fig: 2} \\ 
   \hline
\end{tabular}
\end{table}

警告

这将覆盖print.xtable()的默认文本卫生,因此仅在不需要清除任何内容时才这样做。如果您处在更复杂的情况下,例如希望清理某些东西而不清理其他东西,则需要调整此解决方案(可能要花很多时间)。