我使用 在 LaTeX 中创建了一个表格longtable
。我需要在单元格内列出列表。我曾使用过,\tabitem
但我得到的项目对齐不佳。这是我的代码:
\newcommand{\tabitem}{~~\llap{\textbullet}~~}
\begin{longtable}[H]{| m{5cm} | m{5cm}| m{5cm} | }\hline
%\begin{center}
%\begin{tabular}{ | m{5cm} | m{5cm}| m{5cm} | }
%\hline
Méthode de validation & Avantages & Inconvénients \\
\hline
Resubstitution Validation & \tabitem Simple & \smallskip \tabitem Surapprentissage \\
\hline
Hold-out Validation & \tabitem Apprentissage et tests indépendants & \tabitem Réduction des données utilisées pour l'apprentissage et les tests \newline \smallskip \tabitem Grande variance \\
\hline
k-fold cross Validation & \tabitem Estimation précise des performances & \tabitem Petits échantillons d'estimation des performances \newline \smallskip \tabitem Données d'apprentissage chevauchées \newline \smallskip \tabitem Variance de la performance sous-estimée ou degré de liberté de comparaison surestimé
\\
\hline
Leave-One-Out Validation cross-validation & \smallskip \tabitem Estimation non biaisée de performance \newline \smallskip \tabitem Haute exploitation de données pour l’apprentissage & \smallskip \tabitem Variance très large
\\
\hline
Repeated k-fold cross-validation & \smallskip \tabitem Grand nombre d’estimation de performance & \smallskip \tabitem Chevauchement des données d'entraînement et d'essai entre chaque itération. \newline \smallskip \tabitem Variance de la performance sous-estimée ou degré de liberté de comparaison surestimé
\\
\hline
%\end{tabular}
%\end{center}
\caption{Caractéristiques des méthodes de validation}
%\end{table}
\end{longtable}
以下是我得到的结果:
如您所见,项目并非全部以相同方式对齐(在第三列中)。如何对齐所有列表项?
答案1
我更喜欢以下形式的表格:
上表的代码有稍微更复杂的前言,但表格类型与问题中显示的代码几乎相同:
\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{array,booktabs}
% added packages and column definitions
\usepackage{ragged2e} % for smart align of cells' content
\usepackage{enumitem} % for nice list
\newlist{tabitemize}{itemize}{1}% <-- defined new list
\setlist[tabitemize]{nosep, % <-- new list setup
topsep = 0pt ,
partopsep = 0pt ,
leftmargin = * ,
label = $\bullet$ ,
before = \vspace{-0.6\baselineskip},
after = \vspace{-\baselineskip}
}
\newcolumntype{I}[1]{>{\RaggedRight\arraybackslash % <-- for lists in columns
\tabitemize} p{#1}<{\endtabitemize}}
\newcommand\mch[1]{\multicolumn{1}{c}{\small\itshape{#1}}} % <-- for columns headers
\begin{document}
\begin{tabular}{@{} >{\RaggedRight}p{4cm} *{2}{I{4cm}} @{}}
\toprule
\mch{Méthode de validation}
& \mch{Avantages} & \mch{Inconvénients} \\
\midrule
Resubstitution Validation
& \item simple
\item effortles
& \item Surapprentissage \\
\addlinespace
Hold-out Validation
& \item Apprentissage et tests indépendants
& \item Réduction des données utilisées pour l'apprentissage et les tests
\item Grande variance \\
\addlinespace
k-fold cross Validation
& \item Estimation précise des performances
& \item Petits échantillons d'estimation des performances
\item Données d'apprentissage chevauchées
\item Variance de la performance sous-estimée ou degré de liberté de comparaison surestimé \\
\addlinespace
Leave-One-Out Validation cross-validation
& \item Estimation non biaisée de performance
\item Haute exploitation de données pour l’apprentissage
& \item Variance de la performance sous-estimée ou degré de liberté de comparaison surestimé \\
\addlinespace
Repeated k-fold cross-validation
& \item Grand nombre d’estimation de performance
& \item Chevauchement des données d'entraînement et d'essai entre chaque itération.
\item Variance de la performance sous-estimée ou degré de liberté de comparaison surestimé \\
\bottomrule
\end{tabular}
\end{document}
上述代码及其注释应该是不言自明的 :)。如果是longtable
必需的,那么
\begin{tabular}{@{} >{\RaggedRight}p{4cm} *{2}{I} @{}}
用。。。来代替
\begin{longtable}{@{} >{\RaggedRight}p{4cm} *{2}{I} @{}}
与。\end{tabular}
\end{longtable}
答案2
为什么你不在表中使用标准的 itemize 环境?
我尝试了一个较小的示例来说明这一点。它没有像您的那样包含那么多文本,但我认为这不会有什么坏处。
我还添加了包array
和包booktabs
。 booktabs
绘制了这些漂亮的线条。您不需要超过这几行。阅读该包的手册。
以下是我的示例:
\documentclass[a4paper]{article}
\usepackage{array}
\usepackage{booktabs}
\newcolumntype{T}{%
>{\scriptsize}c}
\begin{document}
\begin{tabular}{@{} *{3}{m{4cm}} @{}}
\toprule
\multicolumn{1}{@{}T}{Méthode de validation}
& \multicolumn{1}{T}{Avantages}
& \multicolumn{1}{T@{}}{ Inconvénients} \\
\midrule
Resubstitution Validation
& \begin{itemize}
\item simple
\item effortles
\end{itemize}
& \begin{itemize}
\item Surapprentissage
\end{itemize}\\
\bottomrule
\end{tabular}
\end{document}
这就是结果
当然,无论您使用哪种解决方案:每个列表中至少应该有两个 \items,否则它就不是列表!
也许你会加载这个enumitem
包。它非常强大,可以改变任何列表的各个维度。