全部。
问题:
使用 ctable 包的多页表
大卫·卡莱尔
写了答案,并给出了一些不错的破解方法表(添加长的作为钥匙)。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[english]{babel}
\usepackage[babel]{csquotes}
\usepackage[backend=bibtex8, style=authoryear]{biblatex}
\usepackage{geometry}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{mathtools}
\usepackage{enumitem}
\usepackage{array}
\usepackage{booktabs}
\usepackage{caption}
\usepackage{subfig}
\usepackage{graphicx}
\usepackage{rotating}
\usepackage{ctable}
\usepackage{multirow}
\usepackage{pbox}
\usepackage{longtable}
\makeatletter
\newif\if@ctbl@long
\define@key{ctbl}{long}[]{\@ctbl@longtrue}
\long\def\foo#1\sbox#2!!{%
\long\expandafter\def\csname\string\ctable\endcsname[##1]##2##3##4{%
#1\if@ctbl@long\ctbl@long\fi\sbox#2}}
\expandafter\expandafter\expandafter\foo
\csname\string\ctable\endcsname[#1]{#2}{#3}{#4}!!
\def\ctbl@long\fi\sbox#1#2#3\@ctblend{\fi
\ctbl@@long#2%
}
\long\def\ctbl@@long#1#2#3#4#5#6{%
\ctbl@@@long#6%
}
\def\ctbl@@@long#1\begin#2#3#4\end#5{%
\def\@tempa{#5}%
\def\@tempb{tabular}%
\ifx\@tempa\@tempb\else\show\@tempa\ERROR\fi
\begin{longtable}{#3}%
\caption{\@ctblcaption\ifx\@ctbllabel\empty\else\label{\@ctbllabel}\fi}%
\endfirsthead
\caption*{\@ctblcaption\space(continued)}%
\endhead
#4\end{longtable}}
\makeatother
\begin{document}
\ctable[
caption = Data Definitions and Sources,
label = data,
long
]
{>{\bfseries}l p{0.3\columnwidth} c c p{0.3\columnwidth}}
{
}
{ \FL
a&b&c\\a&b&c\\a&b&c\\a&b&c\\a&b&c\\a&b&c\\a&b&c\\a&b&c\\a&b&c\\
a&b&c\\a&b&c\\a&b&c\\a&b&c\\a&b&c\\a&b&c\\a&b&c\\a&b&c\\a&b&c\\
a&b&c\\a&b&c\\a&b&c\\a&b&c\\a&b&c\\a&b&c\\a&b&c\\a&b&c\\a&b&c\\
a&b&c\\a&b&c\\a&b&c\\a&b&c\\a&b&c\\a&b&c\\a&b&c\\a&b&c\\a&b&c\\
a&b&c\\a&b&c\\a&b&c\\a&b&c\\a&b&c\\a&b&c\\a&b&c\\a&b&c\\a&b&c\\
a&b&c\\a&b&c\\a&b&c\\a&b&c\\a&b&c\\a&b&c\\a&b&c\\a&b&c\\a&b&c\\
}
\end{document}
我试过这个代码(没有csquotes、biblatex包),但我收到以下错误:
! 软件包 xkeyval 错误:‘long’ 在家族‘CT’中未定义。
我正在使用:texlive 2015,win7x64
此代码还能用吗?
谢谢。
答案1
首先:David 使用旧版本的 ctable:
\define@key{ctbl}{long}[]{\@ctbl@longtrue}
应该
\define@key{CT}{long}[]{\@ctbl@longtrue}
但是您不能依赖这一点,因为由于可能与 colortbl 包发生名称冲突,键组的名称可能会在下一版本中发生变化。
第二:即使经过此修正,David 的示例仍然不起作用,因为 ctable 在此期间已经发生了变化。不过,我认为为 ctable 提供诸如、longtable
等选项是个好主意,这将使 ctable 创建相应类型的非浮点数。我会考虑的。tabular
tabularx
第三:目前,你有两个选择:
- 使用 ctable 的选项将您的 ctable 分解为多个 ctable 调用
continued=...
。 - 创建一个常规的长表,但使用
\FL
、\ML
和\LL
作为\NN
行尾。