如何以全文宽度居中LaTeX xtable(和图)输出

时间:2015-07-29 19:57:33

标签: latex figure caption xtable tufte

这是我之前发布的问题(How to center LaTeX xtable output in full text width)的后续行动。

我意识到上一篇文章中的MWE不完整。为了尽可能地使它成为一个例子,我确实遗漏了一些最终相互冲突的东西。因此,在这里,我更充分地发布了这个问题。

我正在使用tufte-handout(http://mirrors.ibiblio.org/CTAN/macros/latex/contrib/tufte-latex/sample-handout.pdf)在latex中创建一个小报告。我有一个文件代码。我编译成code.tex。下面是我的代码.Rnw:

\documentclass[12pt,english,nohyper]{tufte-handout}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{longtable}
\usepackage{wrapfig}
\usepackage{hyperref}
\usepackage{graphicx}
\usepackage[space]{grffile}
\usepackage{geometry}
\usepackage{pgffor}
\usepackage{calc}
\usepackage{enumitem}
\usepackage{microtype}
\usepackage{tabularx}
%\usepackage{floatrow}

\begin{document}

<<include=FALSE>>=
library(ggplot2)
library(xtable)
@

\begin{fullwidth}
\makeatletter\setlength\hsize{\@tufte@fullwidth}\makeatother
<<echo=FALSE,results='asis'>>=
x.big <- xtable(mtcars[1:10,1:4], label ='tab:mtcars',caption ='This is the mtcar dataset head.',align = c("rr|lr|r"))

print(x.big, tabular.environment ='longtable', floating = FALSE, include.rownames=FALSE)
@
\end{fullwidth}

<<echo=FALSE,results='asis'>>=
fnameO <<- "plot.pdf"
pdf(paste0("./",fnameO),width=6,height=7)
print(qplot(hp, mpg, data=mtcars, main="Scatterplots of MPG vs. Horsepower", xlab="Horsepower", ylab="Miles per Gallon"))
{dev.off();invisible()}
@

\begin{fullwidth}
\makeatletter\setlength\hsize{\@tufte@fullwidth}\makeatother
\begin{figure}[!ht]
\includegraphics[width=\linewidth]{\Sexpr{fnameO}}
\caption{This is a plot of the mtcars dataset from R. It compares the horsepower with the miles per gallon. It uses the qplot function from ggplot2.}
\label{fig:LearningObj_summary}
\end{figure}
\end{fullwidth}

\end{document}

这是输出:

Current output

我希望桌子和图形都居中(在整个页面上)。如上所示,我成功地将表格置于中心位置(感谢上一篇文章中用户的建议)。

但是,我无法让整个页面的图形居中,并且下面有标题。相反,可能是由于我使用的文档类(tufte-handout),数字本身位于非边距区域,其标题位于边距区域。

对于初学者,我在代码中取消注释了\ usepackage {floatrow},试图强制数字标题低于数字而不是右边的数字。这会产生一个输出(表格和图形都不合意地在左侧而不是居中,但是图形标题确实低于图形):

Next update

我的问题是:如何将表格和图形(以及下面的标题)居中,以便输出看起来更像这样?:

enter image description here

谢谢。

1 个答案:

答案 0 :(得分:0)

作为粗暴的黑客,您可以简单地修改MWE的图形环境以使用原始的\caption命令:

\begin{fullwidth}
\begin{figure}[!ht]
\makeatletter\setlength\hsize{\@tufte@fullwidth}\setlength\linewidth{\@tufte@fullwidth}\let\caption\@tufte@orig@caption\makeatother
\includegraphics[width=\linewidth]{\Sexpr{fnameO}}
\caption{This is a plot of the mtcars dataset from R. It compares the horsepower with the miles per gallon. It uses the qplot function from ggplot2.}
\label{fig:LearningObj_summary}
\end{figure}
\end{fullwidth}

...或者,对于以页面为中心的小一点的数字:

\begin{fullwidth}
\begin{figure}[!ht]
\makeatletter\setlength\hsize{\@tufte@fullwidth}\setlength\linewidth{\@tufte@fullwidth}\let\caption\@tufte@orig@caption\makeatother
\centering
\includegraphics[width=.4\linewidth]{\Sexpr{fnameO}}
\caption{This is a plot of the mtcars dataset from R.}
\label{fig:LearningObj_summary}
\end{figure}
\end{fullwidth}

如果您发现缺少原始\caption命令,并且文档中没有(!)浮点数需要使用tufte标题,则可以使用\caption之类的内容覆盖\usepackage[labelfont=bf,compatibility=false]{caption}命令