我latexmk -pdfxe
在这个 MWE 上运行
\documentclass[landscape]{article}
\pagestyle{plain}
\usepackage[hmargin=1cm, vmargin=2cm]{geometry}
\usepackage{longtable}
\usepackage{booktabs}
\usepackage{array}
\usepackage{threeparttable}
\usepackage[referable]{threeparttablex}
\usepackage{arydshln}
\LTpre0pt\LTpost0pt
\LTleft1em\LTright1em
\newlength\tabcolwidth
\newlength\firstcoltext
\newlength\rowheight
\setlength{\footskip}{0pt}
\setlength{\rowheight}{13ex}
\newcolumntype{y}[1]{>{\raggedright\arraybackslash}p{#1}}
\begin{document}
\centering\large
\LTcapwidth=\textwidth
\settowidth\firstcoltext{longest~}
\setlength\tabcolwidth{\dimexpr.5\textwidth-\firstcoltext-\tabcolsep-10pt}
\begin{ThreePartTable}
% \renewcommand\TPTminimum{\textwidth}
\begin{TableNotes}
\item[a] \label{tn:a} foo
\item[b] \label{tn:b} bar
% \unskip\strut\par
\end{TableNotes}
\begin{longtable}{%
@{\extracolsep{\fill}}ry{\tabcolwidth}:y{\tabcolwidth}@{}}
\caption{Please fill in this table.}\\
\toprule
\multicolumn{1}{r}{~}
& \multicolumn{1}{y{\tabcolwidth}}{A}
& \multicolumn{1}{y{\tabcolwidth}}{B} \\
\midrule
\endhead
\cmidrule{3-3}
\multicolumn{3}{r}{\raggedleft\textit{continued \ldots}}
\endfoot
\bottomrule
\insertTableNotes\\
\endlastfoot
\multicolumn{1}{r:}{foo} & & \\[\rowheight]\cdashline{2-3}
longest\tnotex{tn:a} & & \\[\rowheight]\cline{1-3}
foo & & \\[\rowheight]\cdashline{2-3}
bar\tnotex{tn:b} & & \\[\rowheight]\cdashline{2-3}
baz & & \\[\rowheight]
\end{longtable}
\end{ThreePartTable}
\end{document}
结果是
如何正确对齐线条?我知道这似乎类似于这个问题
编辑:
采用 Herbert 的解决方案回答,我现在完全排除了 booktabs。我尝试使用\Xhline
和\Xcline
来自makecell
包,其中第一个定义如下:
\newcommand\Xhline[1]{\noalign{\ifnum0=‘}\fi\arrayrulewidth#1%
\ifx\hline\LT@hline\let\@xhline\LT@@hline\fi
\hrule\@height\arrayrulewidth\futurelet\reserved@a\@xhline}
但是规则看起来比预期的要粗,因为显然还包含另一行\hline
。请尝试取消注释 arrayrulewidth 行。(或者更改为\multicolumn{1}{X@{}}{A}
导致表格溢出的行。)相交垂直虚线的问题也\Xhline
与 booktabs 的问题类似\midrule
(我已将其从大约 2pt 处改正到头部)。最后,我还希望页脚显示在页面最后一行“之后”。
\documentclass[landscape,a5paper]{article}
\pagenumbering{gobble}
\pagestyle{plain}
\usepackage[hmargin=1cm, top=2cm, bottom=4cm]{geometry}
\usepackage{array} % \firsthline \lasthline
\usepackage{makecell} % \Xhline \Xcline
\usepackage{xltabular}
\usepackage{ragged2e}
\usepackage{arydshln} % \firsthdashline \lasthdashline
\renewcommand{\arraystretch}{1.5}
\newlength\heavyrulewidth
\newlength\lightrulewidth
\newlength\rowheight
\renewcommand\tabularxcolumn[1]{>{\RaggedRight}p{#1}}
\usepackage{etoolbox}
\AtBeginEnvironment{xltabular}{\hfuzz1pt}
\begin{document}
\centering\small
% lengths from booktabs.sty
\setlength\heavyrulewidth{0.08em}
\setlength\lightrulewidth{0.05em}
% \setlength\arrayrulewidth{0pt} % <-- uncomment
\setlength\tabcolsep{1em}
\setlength\rowheight{6ex}
\LTcapwidth=\textwidth
\noindent
\begin{xltabular}{\linewidth}{@{} r X : X @{}}
\caption{Please fill in this table.}\\\Xhline{\heavyrulewidth}
% \rule[-1.25ex]{0pt}{4ex}
& \multicolumn{1}{X}{A}
& \multicolumn{1}{X}{B}\\[-2pt]\Xhline{\lightrulewidth}
\endhead
\Xcline{3-3}{\lightrulewidth}
\multicolumn{3}{r}{\raggedleft\textit{continued \ldots}}
\endfoot
\Xhline{\heavyrulewidth}
\endlastfoot
foo & & \\[\rowheight]\cdashline{2-3}
bar\footnote{bar} & & \\[\rowheight]\cdashline{2-3}
foo & & \\[\rowheight]\cdashline{2-3}
test a footnote\footnote{foo} & & \\[\rowheight]\cline{1-3}
foo & & \\[\rowheight]\cdashline{2-3}
foo & & \\[\rowheight]\cdashline{2-3}
foo & & \\[\rowheight]
\end{xltabular}
\end{document}
这是第一页:
编辑:(2018年5月27日)
我已经创建要点附有一张表格,说明应用和垂直线的原因。\hlines
但我希望顶部和底部有不同的厚度。
答案1
使用 会存在一个问题,booktabs
即在水平线前后插入一些垂直空间。使用 simple\hlines
并拉伸第一行。我使用的xltabular
几乎与 相同threeparttable
。重要的是:
\caption{Please fill in this table.}\\\hline
\rule[-1.25ex]{0pt}{4ex} & A & B \\\hline
这是我的完整示例:
\documentclass[landscape]{article}
\pagestyle{plain}
\usepackage[hmargin=1cm, vmargin=2cm]{geometry}
\usepackage{booktabs}
\usepackage{xltabular,ragged2e}
\usepackage{arydshln}
\newlength\rowheight
\setlength{\rowheight}{13ex}
\renewcommand\tabularxcolumn[1]{>{\RaggedRight}p{#1}}
\begin{document}
\centering\large
\LTcapwidth=\textwidth
\noindent
\begin{xltabular}{\linewidth}{@{} r X : X @{}}
\caption{Please fill in this table.}\\\hline
\rule[-1.25ex]{0pt}{4ex} & A & B \\\hline
\endhead
\cmidrule{3-3}
\multicolumn{3}{r}{\raggedleft\textit{continued \ldots}}
\endfoot
\bottomrule
\endlastfoot
\multicolumn{1}{@{}r:}{foo} & & \\[\rowheight]\cdashline{2-3}
longest\footnote{foo} & & \\[\rowheight]\cline{1-3}
foo & & \\[\rowheight]\cdashline{2-3}
bar\footnote{bar} & & \\[\rowheight]\cdashline{2-3}
baz & & \\[\rowheight]
\end{xltabular}
\end{document}