我正在尝试将一个表格拆分成几页,为此我使用了xtab
包裹和xtabular
。然而,环境的行为xtabular*
(应该打破两列格式,只保留一列)相当奇怪,因为它不起作用(另一个问题也显示)。
它会环绕两列,而不是创建单个列。并且,正如您在下面的示例中看到的,如果文本比列宽宽,它将覆盖下一列的内容。
我希望在单列文档中拆分表格的行为xtabular
,在双列文档中使用xtabular*
。
您能给我指明正确的方向吗?或者有其他可以实现相同结果的软件包吗?
\documentclass[twocolumn]{article}
\usepackage{xtab}
\begin{document}
\begin{xtabular*}{\textwidth}{@{\extracolsep{\fill}}|*{5}{p{1.2cm}|}}
\hline
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
\end{xtabular*}
\end{document}
编辑(部分解决方案)
因此,我一直在尝试解决这个问题,并尝试使用figure
或其他浮点环境(如table*
)来使其工作。我最接近的方法是使用table*
。但是,您可能知道,通过将其放入一个大浮点中,表格不会被分成多个表格。
因此,我想尝试重新定义一个xtabular*
包裹着 的table*
。因此我做了以下尝试:
\documentclass[twocolumn]{article}
\usepackage{xtab}
\usepackage{lipsum}
\makeatletter
\newif\ifST@tb
\@namedef{tbxtabular*}#1{%
\@ifnextchar[{\@nameuse{@tbsupertabular*}{#1}}%
{\@nameuse{@tbsupertabular*}{#1}[]}%]
}
\@namedef{@tbsupertabular*}#1[#2]#3{%
\ST@trace\tw@{Starting a new tbxtabular*}%
\def\ST@tableformat{#3}%
\ST@wd=#1\relax
\global\ST@startrue
\global\ST@tbtrue
\ST@rightskip \rightskip
\ST@leftskip \leftskip
\ST@parfillskip \parfillskip
\x@supertabular
\csname table*\endcsname[t]
\noindent\expandafter\csname org@tabular*\expandafter\endcsname
\expandafter{\expandafter\ST@wd\expandafter}%
\expandafter{\ST@tableformat}%
\@@tablehead}
\def\endtbxtabular{%
\ifx\@table@last@tail\undefined
\@tabletail
\else
\@table@last@tail
\fi
\csname endtabular\ifST@star*\fi\endcsname
\csname endtable*\endcsname
\x@endsupertabular
\ST@trace\tw@{Ended an tbxtabular\ifST@star*\fi}}
\expandafter\let\csname endtbxtabular*\endcsname\endtbxtabular
\def\ST@newpage{%
\noalign{\ST@trace\tw@{Starting new page, writing tail}}%
\@tabletail
\ifST@star
\csname endtabular*\endcsname
\else
\endtabular
\fi
\ifST@mp
\endminipage
\fi
\ifST@tb
\csname endtable*\endcsname
\fi
\global\let\ST@skippage\ST@newpage
\newpage\PWSTcalnextpageht
\ST@trace\tw@{writing head}%
\PWSTsethead
\ifST@mp
\noindent\minipage{\columnwidth}%
\parfillskip\ST@parfillskip
\rightskip \ST@rightskip
\leftskip \ST@leftskip
\fi
\ifST@tb
\noindent\csname table*\endcsname[t]
\fi
\noindent
\ifST@star
\expandafter\csname org@tabular*\expandafter\endcsname
\expandafter{\expandafter\ST@wd\expandafter}%
\expandafter{\ST@tableformat}%
\else
\expandafter\org@tabular\expandafter{\ST@tableformat}%
\fi}
\makeatother
\begin{document}
\lipsum[1-5]
\tablefirsthead{\hline \textbf{A} & \textbf{B} & \textbf{C} & \textbf{D} & \textbf{E}\\}
\tablehead{\hline \textbf{A} & \textbf{B} & \textbf{C} & \textbf{D} & \textbf{E}\\}
\tabletail{\hline}
\begin{tbxtabular*}{\textwidth}{@{\extracolsep{\fill}}|*{5}{p{1.2cm}|}}
\hline
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
\end{tbxtabular*}
\lipsum[1-5]
\end{document}
我修改了mpxtabular*
,并创建了一个tbxtabular*
版本,主要是xtabular*
带有一个的table*
。我不知道这是不是最好的方法,还是我只是在浪费时间。但是,至少现在表格被转换成一列,并很好地放置在不同的页面中,而不是文本上。但是,表格没有正确分割(参见第 4 页和第 5 页)。
答案1
\textwidth
用。。。来代替\linewidth
。
\documentclass[twocolumn]{article}
\usepackage{xtab}
\begin{document}
\begin{xtabular*}{\linewidth}{@{\extracolsep{\fill}}|*{5}{p{1.2cm}|}}
\hline
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
a & b & c & d & e \\
(This is the last table row)
\end{xtabular*}
\end{document}
答案2
您没有将其定义为表。
它应该像这样:
\begin{table}
\begin{xtabular*}{\textwidth}{@{\extracolsep{\fill}}|*{5}{p{1.2cm}|}}
\hline
a & b & c & d & e \\
...
...
...
\end{xtabular*}
\end{table}