为了能够使用标签tab:my_title
,我想将一个由xtable生成的表放在一个Lyx表float中,但是我无法在float中生成一个表。这个块在Lyx中产生正确的输出:
<<cars, echo=FALSE, warning=FALSE, results='asis', message=FALSE>>=
library(xtable)
print.xtable(xtable(head(cars), digits = 0), include.rownames=FALSE,
type = "latex", floating=FALSE)
@
但是当我将上面的块放在表浮动中时,Lyx不会产生输出。我指定了float = FALSE,这样xtable就不会为表生成浮动环境。
similar question的答案看起来像是黑客。我宁愿在浮点数中正确插入xtable输出。
@scottkosty
要求的最小lyx文件 #LyX 2.1 created this file. For more info see http://www.lyx.org/
\lyxformat 474
\begin_document
\begin_header
\textclass article
\use_default_options true
\begin_modules
knitr
\end_modules
\maintain_unincluded_children false
\language english
\language_package default
\inputencoding auto
\fontencoding global
\font_roman default
\font_sans default
\font_typewriter default
\font_math auto
\font_default_family default
\use_non_tex_fonts false
\font_sc false
\font_osf false
\font_sf_scale 100
\font_tt_scale 100
\graphics default
\default_output_format default
\output_sync 0
\bibtex_command default
\index_command default
\paperfontsize default
\spacing single
\use_hyperref false
\papersize default
\use_geometry false
\use_package amsmath 1
\use_package amssymb 1
\use_package cancel 1
\use_package esint 1
\use_package mathdots 1
\use_package mathtools 1
\use_package mhchem 1
\use_package stackrel 1
\use_package stmaryrd 1
\use_package undertilde 1
\cite_engine basic
\cite_engine_type default
\biblio_style plain
\use_bibtopic false
\use_indices false
\paperorientation portrait
\suppress_date false
\justification true
\use_refstyle 1
\index Index
\shortcut idx
\color #008000
\end_index
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\paragraph_indentation default
\quotes_language english
\papercolumns 1
\papersides 1
\paperpagestyle default
\tracking_changes false
\output_changes false
\html_math_output 0
\html_css_as_file 0
\html_be_strict false
\end_header
\begin_body
\begin_layout Standard
\begin_inset ERT
status open
\begin_layout Plain Layout
<<cars, echo=FALSE, warning=FALSE, results='asis', message=FALSE>>=
\end_layout
\begin_layout Plain Layout
library(xtable)
\end_layout
\begin_layout Plain Layout
print.xtable(xtable(head(cars), digits = 0), include.rownames=FALSE,
\end_layout
\begin_layout Plain Layout
type = "latex", floating=FALSE)
\end_layout
\begin_layout Plain Layout
@
\end_layout
\end_inset
\end_layout
\end_body
\end_document
答案 0 :(得分:0)
如果你把一个xtable对象放到一个LyX表中,你的表被声明两次,一个在表float中,一个在xtable中,你得到一个LaTeX错误。诀窍是使用参数的xtable only.contents = TRUE 然后xtable只返回没有任何表声明的内容,但表格的声明也是laking。然后我们可以构建一个小函数来添加必要的代码,以便一切正常。 新功能:
<<include=FALSE>>=
lyxTab<-function(tab){
ncol<-dim(tab)[1]
nligne<-dim(tab)[2]
col<-paste(rep("r",ncol), collapse='')
col<-paste('{', col ,'}', sep='')
cat('\\begin{tabular}', col, sep='')
cat('\\hline')
print(tab, only.contents=TRUE, include.rownames=FALSE)
cat('\\end{tabular}')
}
新函数lyxTab()接收像参数这样的xtable对象,我们可以在float表环境中使用它。
<<echo=FALSE, results='asis'>>=
#code in float table environment
library(xtable)
data(iris)
lyxTab(xtable(head(iris)))