生成PDF时的宽表问题

生成PDF时的宽表问题

我有一个使用 R 中的数据框生成的 LaTeX 宽表xtable,但创建 PDF 时并未显示所有数据,只显示其中的一部分,而其他部分隐藏在 PDF 的右侧。如何解决这个问题?

cat("\\documentclass{article}\n\begin{document}\n", file=txt)
 print(xtable(table), include.rownames=TRUE, floating=FALSE, file=txt, append=TRUE)   
  cat("\\end{document}\n", file=txt, append=TRUE)

我应该把比例盒放在哪里?

答案1

我建议要么旋转表格,要么使用景观包,或者调整表格大小(在我看来,更容易),\scalebox使用图形包。我经常使用后者来处理“不太大”的表格(例如,10 行乘以 5 到 7 列,带有自定义标题),这些表格不适合旋转的页面。这必须在您的tex文件中完成。

这是一个玩具示例:

  • 在 R 中:

    x <- replicate(2, sample(LETTERS[1:10], 100, rep=T))
    tab <- table(x[,1], x[,2])
    library(xtable)
    print(xtable(tab, digits=0), file="tab.tex", floating=FALSE)
    

这里我们要求将结果表写入文件中(您可能需要更改完整路径以反映您的工作 tex 目录)。tab.tex这样,您就不必过多地编辑 Latex 文件。

  • 在 Latex 中:

    \documentclass{article}
    \usepackage{graphics}
    
    \begin{document}
    \scalebox{0.9}{\input{tab}}
    \end{document}
    

这里使用的缩放因子 0.9 表示文本宽度的 90%。有关详细信息,请参阅在线帮助。然后,您可以使用 编译生成的文件pdflatex

这里有一个微妙之处:我没有要求获取浮动表格(参见floating=FALSE调用时xtable()),因为我们不能\scalebox在浮动周围使用。如果您想添加标题、标签等,只需将上述命令替换为

\begin{table}[ht]
\begin{center}
\input{tab}
\end{center}
\end{table}

最后,景观解决方案很容易获得

\documentclass{article}
\usepackage{lscape}

\begin{document}
\begin{landscape}
\input{tab}
\end{landscape}
\end{document}

xtable()在这里,在 R 中调用时,无论是否要求浮动对象,它都可以工作。


编辑:

根据您在更新的问题中提供的语法,其内容应如下:

cat("\\documentclass{article}\n\\usepackage{graphics}\n\\begin{document}\n", file="1.tex")
cat("\\scalebox{0.7}{", file="1.tex", append=TRUE)
print(xtable(tab), include.rownames=TRUE, floating=FALSE, file="1.tex", append=TRUE) 
cat("}", file="1.tex", append=TRUE)  
cat("\\end{document}\n", file="1.tex", append=TRUE)

这里,tab指的是我示例中的 2x2 表格,table如果您将其命名为这样(这不是一个好主意,因为这是 R 函数的名称),则将其替换为。表格已经在左边距对齐。因此,如果您想更改它,一个快速而粗略的解决方法是要求从右向左移动(我很确定 TeXnicians 知道更好的方法来做到这一点):

cat("\\scalebox{0.7}{\\hskip-50pt", file="1.tex", append=TRUE)

答案2

cat("\\documentclass{article}\n\\usepackage{graphics}\n\\begin{document}\n", file="1.tex")
cat("\\scalebox{0.7}{", file="1.tex", append=TRUE)
print(xtable(tab), include.rownames=TRUE, floating=FALSE, file="1.tex", append=TRUE) 
cat("}", file="1.tex", append=TRUE)  
cat("\\end{document}\n", file="1.tex", append=TRUE)

相关内容