我有一个使用 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)