带有长键的 Ctable:问题(与 xkeyval 有关?)

带有长键的 Ctable:问题(与 xkeyval 有关?)

全部。
问题: 使用 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 创建相应类型的非浮点数。我会考虑的。tabulartabularx

第三:目前,你有两个选择:

  1. 使用 ctable 的选项将您的 ctable 分解为多个 ctable 调用continued=...
  2. 创建一个常规的长表,但使用\FL\ML\LL作为\NN行尾。

相关内容