有没有办法在生成带有longtable选项的xtable时重复顶行/设置标题?
例如,如果我有
tableSb <- xtable(df, caption="A Very Long Table", label="ALongTable")
print(tableSb, include.rownames=TRUE, tabular.environment="longtable", floating=FALSE)
Run Code Online (Sandbox Code Playgroud)
这样可以正常工作,但是当表格滚动到新页面时,标题不会重复.有什么建议 ?
我在LaTeX中有一个非常长的表,它跨越了几页并且(现在)对于页面来说也太宽了.
我正在使用longtable包,其中包含使用该p{width}命令指定的每个列宽.
问题是,大多数行包含多列调用,因此不遵守前导p{width}命令,这导致表的总宽度太大.
最小的例子:
\begin{longtable}{|p{1in}|p{0.75in}|p{0.5in}|p{0.5in}|>{p{1in}|p{1in}|}
\caption{some cap} \label{somelable}\\
\hline
\multicolumn{2}{|c|}{\textbf{Text Header One}} & \multicolumn{2}{|c|}{\textbf{Text Header Two}} & \multirow{2}{*}{\textbf{Three}} & \multirow{2}{*}{\textbf{Four}} \tabularnewline \cline{1-4}
\textbf{Five} & \textbf{Six} & \textbf{Seven} & \textbf{Eight} & & \tabularnewline \hline
Some Text String & Longer Text String Here & More Text Here & Text Example & Text & Text \tabularnewline \hline
Example Text String Two & Longer Text String Example Two & \multicolumn{2}{|l|}{Multi-column Text String that doesn't fit column width} & Text & …Run Code Online (Sandbox Code Playgroud) 请考虑以下MWE
library(xtable)
DF <- as.data.frame(UCBAdmissions)
print(xtable(DF, align="p{0.4\textwidth}|p{0.15\textwidth} p{0.15\textwidth} p{0.15\textwidth}"), sanitize.text.function = function(x){x},
table.placement="!htp", include.rownames=FALSE,
tabular.environment='longtable',floating=FALSE)
Run Code Online (Sandbox Code Playgroud)
我想设置我longtable喜欢的对齐方式
\begin{longtable}{p{0.4\textwidth}|p{0.15\textwidth} p{0.15\textwidth} p{0.15\textwidth}}
Run Code Online (Sandbox Code Playgroud)
当我试图将参数传递给xtable我得到的对象时
Warning message:
In .alignStringToVector(value) : Nonstandard alignments in align string
Error in print(xtable(DF, align = "p{0.4\textwidth}|p{0.15\textwidth} p{0.15\textwidth} p{0.15\textwidth}"), :
error in evaluating the argument 'x' in selecting a method for function 'print': Error in `align<-.xtable`(`*tmp*`, value = "p{0.4\textwidth}|p{0.15\textwidth} p{0.15\textwidth} p{0.15\textwidth}") :
"align" must have length equal to 5 ( ncol(x) + 1 )
Run Code Online (Sandbox Code Playgroud)
我明白我应该为第5列添加对齐(如何?)但我也不理解错误消息.我应该清理字符串吗?
我是knitr的新手,过去我有一些非常基本的乳胶知识,所以我搜索已经希望找到一个已经发布到某处的解决方案.但是,我无法解决我的问题.我希望有人能够提供帮助.
我有一个14列和多行的数据框,比方说60.使用数据我需要以横向布局生成PDF报告,并将此数据框作为表格呈现在那里.
我找到的最接近的解决方案是 tex.stackexchange.com:LaTex Longtable跨越多个页面
我在那里使用了一些提示.但是,表格放置不正确.最右边的列在页面的右边缘被截断.该表在页面末尾没有"续"字.我在这里发布我的代码和图片.
我正在寻找一个解决方案,将长桌正确放在页面上,如果我遗漏任何明显的请不要拍:)我真的很新.
\documentclass[a4paper, landscape]{article}
\usepackage[a4paper, margin=1in, hmarginratio=1:1, landscape]{geometry}
\usepackage{longtable}
\usepackage{graphicx}
\usepackage{xcolor}
\definecolor{myblue}{RGB}{24,57,121}
\usepackage{lipsum}
\usepackage{booktabs}
\usepackage{colortbl}
\usepackage{array}
\usepackage{rotating}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhead{}
\fancyfoot{}
\renewcommand{\headrulewidth}{0.5pt}
\setlength\headheight{40mm}
\begin{document}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\newcolumntype{R}[1]{>{\raggedleft\arraybackslash}p{#1}}
\renewcommand*{\arraystretch}{1.0}
%
\section{My Long Table}
%\begin{center}
%\begin{small}
%\setlongtables
%\begin{longtable}
<<echo=FALSE, eval=TRUE, results='asis'>>=
library(knitr)
library(xtable)
df <- data.frame(replicate(13, sample(1000000:9000000, 60,replace=TRUE)))
df$Sum <- rowSums(df)
totals <- colSums(df)
df <- rbind(df, totals)
names(df) <- c("Jan 2014", "Feb 2014", "Mar 2014", "Apr 2014", "May 2014", "Jun 2014", "Jul 2014",
"Aug 2014", "Sep …Run Code Online (Sandbox Code Playgroud) 我有一些延伸几页的长表,我想使用pageref和hyperref链接到这些行.
但无论我尝试什么,链接总是指代表的开头.当我查看aux文件时,标签似乎都被重新定义到表中.[表格的数量].
我尝试将隐形虚拟数字放入表中,但这只是给了我太多浮点数的错误.
我也尝试将标签放入小型设备,但无济于事.
即使将标签放入脚注也不起作用,不知何故长期似乎总能找到它们.
我想设置我的宽度longtable,使其适合页面而不是裁剪掉。我有 206 列和 17 行。
我使用tablesgenerator.com 来获取我的longtable,但选项“将表格缩放到文本宽度”不适用于longtable,需要一些帮助。(这里是乳胶初学者)。
\documentclass{article}
\usepackage{longtable}
\usepackage{booktabs}
\begin{document}
\begin{longtable}{@{}lllllllllllllllll@{}}
\toprule
\textbf{SN} & \textbf{zhelio} & \textbf{zhelio\_un} & \textbf{zCMB} &
\textbf{zCMB\_un} & \textbf{Peak\_MJD} & \textbf{Peak\_MJD\_un} & \textbf{x1}
& \textbf{x1\_un} & \textbf{c} & \textbf{c\_un} & \textbf{mB} &
\textbf{mB\_un} & \textbf{t} & \textbf{t\_un} & \textbf{Host\_logmass} &
\textbf{Host\_logmass\_un} \\* \midrule
\endhead
%table stuff here...
\caption{}
\label{tab:my-table}\\
\end{longtable}
\end{document}
Run Code Online (Sandbox Code Playgroud)
这就是它的样子
我正在尝试apa_table()在 RStudio中使用、Papaja 和 RMarkdown创建一个表。每当我包含longtable在apa_table函数中时,我都会收到错误消息:
! LaTeX Error: Environment ThreePartTable undefined.
奇怪的是,产生的错误日志包括:
(/home/tim/.TinyTeX/texmf-dist/tex/latex/threeparttable/threeparttable.sty
Package: threeparttable 2003/06/13 v 3.0
Run Code Online (Sandbox Code Playgroud)
和
Package caption Info: threeparttable package is loaded.
请注意错误和加载的包之间的不同大小写,这让我想知道这是否是问题所在。
请注意,这与之前的问题中报告的错误相同:!LaTeX 错误:环境三部分未定义。但是,那里提供的解决方案对我不起作用。
我不确定这是否可以在我的特定设置之外重现,但这里有一些代码会给我带来问题。
请注意,如果我只是使用kable()(也包括在下面),我不会遇到同样的问题。
---
title : "The title"
shorttitle : "Title"
author:
- name : "First Author"
affiliation : "1"
corresponding : yes # Define only one corresponding author
address : "Postal address"
email : "my@email.com"
- name : "Ernst-August Doelle"
affiliation : …Run Code Online (Sandbox Code Playgroud) 使用 R Markdown 输出 pdf。kable() 效果很好,但是当我添加longtable=T标题时,不再扩展表格的整个宽度。我似乎找不到一个可以控制此处标题详细信息的参数。我可以将标题移动到每个代码块的输出,但如果可能的话,我宁愿使用 kable 中的内置功能。
谢谢!
---
title: "test"
author: ""
date: "September 6, 2017"
output:
pdf_document:
latex_engine: xelatex
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
library(kableExtra)
library(knitr)
library(dplyr)
```
```{r table1}
test <- data.frame(col1=rep("MyLongWordsareLong",5),
col2=rep("MyLongWordsareLong",5),
col3=rep("MyLongWordsareLong",5),
col4=rep("MyLongWordsareLong",5),
col5=rep("MyLongWordsareLong",5),
col6=rep("MyLongWordsareLong",5))
kable(test,format='latex',booktabs=TRUE,
caption="This is my example caption. See how, when I don't use
longtable, it extends the full width of the table, but when I use the
longtable option, it compresses down to only a portion …Run Code Online (Sandbox Code Playgroud) 这个现有的问题涵盖了通过对输出进行后处理来替换乳胶表中行颜色的方法print.xtable(),但我认为通过使用stats.stackexchange中描述的add.to.row参数可以实现相同的功能,从而避免了后处理,这对Sweave很好.该答案涉及着色一个特定行的背景,但我认为它可以扩展到着色所有奇数行.print.xtable()
我遇到的问题与add.to.row参数有关,使列表pos的长度等于字符向量的长度command.帮助文件print.xtable()描述:
add.to.row:两个组件的列表.第一个组件(应该称为'pos')是一个列表,其中包含最后应在其上添加额外命令的行的位置,第二个组件(应该称为'command')是一个相同的字符向量包含应在指定行末尾添加的命令的第一个组件的长度.默认值为"NULL",即不添加命令.
在使用longtable环境时,您可以使用此add.to.row参数来定义应在每个页面上打印的表的"标题"行,如下所示:
library(xtable)
my.df=data.frame(a=c(1:10),b=letters[1:10])
print(xtable(my.data.frame,caption="My Table"),
tabular.environment="longtable",
floating=FALSE,
hline.after=c(-1,nrow(my.data.frame)),
add.to.row=list(pos=list(0),command="\\hline \\endhead ")
Run Code Online (Sandbox Code Playgroud)
我需要保留此功能,并添加每隔一行应获取命令的其他功能 \\rowcolor[gray]{0.8}
听起来很简单.pos应该是类似的东西list=(0,1,3,5,7,9),command应该是类似的东西c("\\hline \\endhead ","\\rowcolor[gray]{0.8}","\\rowcolor[gray]{0.8}","\\rowcolor[gray]{0.8}","\\rowcolor[gray]{0.8}","\\rowcolor[gray]{0.8}")
当然,我想利用一些内置函数来构建奇数行序列和重复序列"\\rowcolor[gray]{0.8}",所以我想到了:
pos=list(0,seq(from=1,to=nrow(my.df),by=2))
Run Code Online (Sandbox Code Playgroud)
和
command=c("\\hline \\endhead ",
rep("\\rowcolor[gray]{0.8}",length(seq(from=1,to=nrow(my.df),by=2))))
Run Code Online (Sandbox Code Playgroud)
我的问题是pos上面的列表评估为:
> pos
[[1]]
[1] 0
[[2]]
[1] 1 3 5 7 9
Run Code Online (Sandbox Code Playgroud)
长度为2 ......在这种情况下需要长度为6.
我正在使用Hmisc包中的Sweave和latex()在我的PDF中插入一个longtable.
当我第一次这样做时,表格很好地传播,用桌子填满页面.
如果我再次这样做,一些页面只有一半(如PDF的第4页),这看起来很奇怪,而且不知何故,因为它似乎是不必要的空间.
有没有办法控制这个?或者我该怎么做才能改善外观?特别是,如果我添加一些文本和图形,第4页的空白区域看起来不太好.
\documentclass{article}
\usepackage{Sweave}
\usepackage{longtable}
\usepackage{booktabs}
\begin{document}
\SweaveOpts{concordance=TRUE}
I want to insert this longtable
<<tab.R,echo=FALSE,results=tex>>=
library(Hmisc)
#library(xtable)
x <- matrix(rnorm(1000), ncol = 10)
x.big <- data.frame(x)
latex(x.big,"",file="",longtable=TRUE, dec=2,caption='First longtable spanning several pages')
@
then write some text. Maybe add a graph...
And then another table
<<tab.R,echo=FALSE,results=tex>>=
latex(x.big,"",file="",longtable=TRUE, dec=2,caption='Second longtable spanning wrongly')
@
\end{document}
Run Code Online (Sandbox Code Playgroud) 在我的长表中,当我使用横向模式时,标题与表格宽度不对齐。虽然当我删除横向模式时,它很好。然而,我的桌子又宽又长,我需要将其与横向模式对齐。这是一个 MWE,请帮帮我。
谢谢
\documentclass{article}
\usepackage{lipsum} % Just to fill some paragraph with random texts.
\usepackage[margin=1in,left=1.5in,includefoot]{geometry} % Setup the margin of the document \usepackage{float}
\usepackage{longtable}
\usepackage{booktabs}
\usepackage{tabu, colortbl}
\usepackage{array}
\usepackage{graphicx}
\usepackage{rotating}
\usepackage{lscape}
\usepackage[referable]{threeparttablex}
\usepackage{amsmath}
\usepackage{parskip}
\usepackage{xcolor}
\usepackage{setspace}
\renewcommand{\arraystretch}{1.5}
\setlength{\tabcolsep}{2pt}
\tabulinesep=1mm
\usepackage{ltcaption}
% The ltcaption package supports \CaptionLabelFont & \CaptionTextFont introduced by the NTG document classes
%\renewcommand\LTcaptype{table}
\renewcommand\CaptionLabelFont{\normalsize}
\renewcommand\CaptionTextFont{\normalsize}
\setlength{\LTcapwidth}{\textwidth} % caption width is same as table width
\setlength\LTcapskip{0.25em} % otherwise caption will skip baseline between caption and content
\renewcommand{\arraystretch}{1.5} % Insert …Run Code Online (Sandbox Code Playgroud) 我使用kableExtra了longtable下面的代码。
library(knitr)
library(kableExtra)
long_dt <- rbind(mtcars, mtcars)
kable(
long_dt,
format = "latex",
longtable = T,
booktabs = T,
caption = "Longtable"
) %>%
add_header_above(c(" ", "Group 1" = 5, "Group 2" = 6)) %>%
kable_styling(latex_options = c("repeat_header"))
Run Code Online (Sandbox Code Playgroud)
输出是
我想知道如何在表格底部添加文本(下一页继续...),如果它跨越到下一页。