我有一张长表格,高度为页面高度的 0.75 倍。我希望所有列都左对齐。我尝试了以下方法:
\documentclass{cta-author}
\usepackage{booktabs}
\usepackage{subcaption}
\usepackage{threeparttable}
\usepackage{pifont}
\usepackage{hyperref}
\begin{document}
\begin{table}[htp]
\begin{threeparttable}
\caption{My table}\label{tab:1}
\begin{tiny}
\begin{tabular}[width=\linewidth]{p{0.12\linewidth}p{0.3\linewidth}p{0.06\linewidth}p{0.07\linewidth}p{0.09\linewidth}p{0.09\linewidth}}
\toprule
Paper&method&p1&p2&p3&p4\\
\midrule
\cite{c1} &method1 method1 method 1&\checkmark & \checkmark&\checkmark &\ding{55}\\
\rule{0pt}{4ex}
\cite{c2} &method2&\checkmark &\checkmark &\ding{55}&\ding{55}\\
\rule{0pt}{4ex}
\cite{c3}&method3 method3 method3 method3 &\ding{55} & \checkmark &\checkmark &\ding{55}\\
\rule{0pt}{4ex}
\midrule
my experiment test 123&method 4 method4&\checkmark &\ding{55} & \checkmark &\checkmark\\
\bottomrule
\end{tabular}
\begin{tablenotes}
\item *note
\end{tablenotes}
\end{tiny}
\end{threeparttable}
\end{table}
\end{document}
但是使用这个,除了包含论文引文的第一列之外,所有列都左对齐。当我尝试使用lp
而不是p
(\begin{tabular}[width=\linewidth]{lp{0.12\linewidth}lp{0.3\linewidth}lp{0.06\linewidth}lp{0.07\linewidth}lp{0.09\linewidth}lp{0.09\linewidth}}
)时,虽然所有单元格都正确地左对齐,但我的表格宽度超过一列,并且违反了第二列的上下文。如何在两列页面中拥有一列宽度左对齐的三部分表格?
我正在使用 IET 论文模板IET-Submission-DoubleColumn-Template
。
我在这里使用了 Foxit 网格线,但在 TexWorks pdf 输出中是相同的。
答案1
第一列中部分单元格(但不是全部)略微缩进的原因在于您没有\rule{0pt}{4ex}
用字符终止前几行的指令%
。TeX 会将指令后面的换行符转换\rule{0pt}{4ex}
为空格,这就是表格中显示的内容。
我还会将 替换\begin{tabular}[width=\linewidth]{...}
为\begin{tabular*}{\linewidth}{@{\extracolsep{\fill}} ...}
,并且与之相关的\end{tabular}
是\end{tabular*}
。
一个单独的问题:由于您不使用\tnote
说明,所以我不清楚您为什么使用tablenotes
环境。
\documentclass{article}% %% I don't have the "cta-author" document class file(s)
\usepackage{booktabs}
\usepackage[skip=0.333\baselineskip]{caption}
\usepackage{threeparttable}
\usepackage{pifont}
\usepackage{array} % for "\newcolumntype" macro
\newcolumntype{P}[1]{>{\raggedright\arraybackslash}p{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\usepackage{hyperref}
\begin{document}
\begin{table}[htp]
\begin{threeparttable}
\caption{My table}\label{tab:1}
%\tiny %% why "\tiny"?
\begin{tabular*}{\linewidth}{@{\extracolsep{\fill}}
P{0.20\linewidth} P{0.30\linewidth} *{4}{C{0.06\linewidth}} }
\toprule
Paper&method&p1&p2&p3&p4\\
\midrule
\cite{c1} &method1 method1 method1\tnote{*}&\ding{51} & \ding{51}&\ding{51}&\ding{55}\\
\rule{0pt}{4ex}% % <-- note the comment symbol at end of line
\cite{c2} &method2&\ding{51}&\ding{51}&\ding{55}&\ding{55}\\
\rule{0pt}{4ex}% % <-- note the comment symbol at end of line
\cite{c3}&method3 method3 method3 method3 &\ding{55} & \ding{51} &\ding{51} &\ding{55}\\
\midrule % <-- "\midrule" must come before "\rule{0pt}{4ex}"
\rule{0pt}{4ex}% % <-- note the comment symbol at end of line
my experiment test 123&method 4 method4&\ding{51} &\ding{55} & \ding{51} &\ding{51}\\
\bottomrule
\end{tabular*}
\smallskip
\begin{tablenotes}[flushleft]
\item[*] Note
\end{tablenotes}
\end{threeparttable}
\end{table}
\end{document}
答案2
- 抱歉,我没有记录您使用的类。我将其替换为
article
。 - 对我来说不是很清楚,除了错误使用表格宽度和
rule
表格行之间的距离之外,你的问题是什么 - 如果您希望拥有更多垂直空间,可以使用
\addlinespace
。booktabs
它可以有更多垂直空间的选项,例如在行\addlinespace[4ex]
之间插入垂直空间4x
(为什么您喜欢有这么多空间?)
\documentclass{article}%{cta-author}
\usepackage{pifont}
\usepackage{amssymb}
\usepackage{array, booktabs, threeparttable}
\usepackage[skip=1ex]{caption}
\usepackage{hyperref}
\begin{document}
\begin{table}[htp]
\setlength\tabcolsep{0pt}
\begin{threeparttable}
\caption{My table}
\label{tab:1}
\begin{tabular*}{\linewidth}{@{\extracolsep{\fill}}
l >{\raggedright}p{0.5\linewidth} c c c c}
\toprule
Paper & method
& p1 & p2 & p3 & p4 \\
\midrule
\cite{c1} & method1 method1 method 1
& \checkmark & \checkmark & \checkmark & \ding{55} \\
\addlinespace
\cite{c2} & method2
& \checkmark & \checkmark & \ding{55} & \ding{55} \\
\addlinespace
\cite{c3} & method3 method3 method3 method3 method3 method3 method3 method3
& \ding{55} & \checkmark & \checkmark & \ding{55} \\
\midrule
my experiment test 123
& method4 method4
& \checkmark & \ding{55} & \checkmark & \checkmark\\
\bottomrule
\end{tabular*}
\begin{tablenotes}[flushleft]\footnotesize
\item *note
\end{tablenotes}
\end{threeparttable}
\end{table}
\end{document}