新的列类型 tabularx

新的列类型 tabularx

我尝试使用 \newcolumntype 制作表格。我知道代码本身不起作用,并且不能正确用于我的目的。

我的目标是制作一个有两列(每列大小相同)的表格。=> 该表应看起来与代码下的图片类似,但列的宽度相同

你可以帮帮我吗?

% page setup 
\documentclass[a4paper, 11pt]{article}
\usepackage[left=3cm,top=3cm,right=3cm]{geometry}
\usepackage{fancyvrb} 

% tables
\usepackage{ragged2e} 
\usepackage{booktabs, tabularx} 
\newcolumntype{P}[2]{>{\RaggedRight\hspace{0pt}}m{#1}}




\begin{document}
\begin{table}[ht]
\settowidth\colwidth{Ion-exchange chroma} % both boxes should have same with 
\begin{tabularx}{\textwidth}{@{} P{\colwidth} }
   \toprule
   Native Gel & Denatured Gel  \\
   \midrule
\begin{itemize}
   \item   separation upon ---
       \end{itemize} & 
       \begin{itemize}
   \item   separation upon ---
       \end{itemize}        \\

\bottomrule
\end{tabularx}
   \end{table}


\end{document}



我想让它看起来像这样,但每列的宽度相同

答案1

您的代码需要进行三处调整才能通过编译。

  • 代码需要\newlength\colwidth在序言中声明。

  • \newcolumntype{P}[2]{>{\RaggedRight\hspace{0pt}}m{#1}}必须改为

    \newcolumntype{P}[1]{>{\RaggedRight\hspace{0pt}}m{#1}}
    
  • 由于环境中有两列tabularx

    \begin{tabularx}{\textwidth}{@{} P{\colwidth} } 
    

    必须改为

    \begin{tabularx}{\textwidth}{@{} *{2}{P{\colwidth}}}
    

当然,“让代码编译”并不意味着您的代码可以按照您的意图运行。例如,由于代码不包含任何X-type 列,因此使用环境没有任何用处tabularx。我建议您改用基本环境tabular。另一方面,如果您确实希望使用tabularx环境,则无需设置P列类型;而是使用X列类型。


以下屏幕截图是应用上述建议的结果。上表使用环境tabular,下表使用tabularx环境。

在此处输入图片描述

\documentclass[a4paper, 11pt]{article}
\usepackage[hmargin=3cm,top=3cm]{geometry}
\usepackage{fancyvrb} 

% tables
\usepackage{ragged2e} 
\usepackage{booktabs, tabularx} 

\newcolumntype{P}[1]{>{\RaggedRight\hspace{0pt}}m{#1}}
\newcolumntype{L}{>{\RaggedRight\hspace{0pt}}X} 
\renewcommand{\tabularxcolumn}[1]{m{#1}}

\newlength\colwidth
\settowidth\colwidth{Ion-exchange chroma}  % measure intended width of 'P' columns

\begin{document}
\begin{table}[ht]
\centering

\caption{Using a \texttt{tabular} env.\ and the \texttt{P} col.\ type\strut}
\begin{tabular}{@{} *{2}{P{\colwidth}} @{} }
\toprule
   Native Gel & Denatured Gel  \\
   \midrule
   \begin{itemize}
     \item   separation upon ---
   \end{itemize} & 
   \begin{itemize}
     \item   separation upon ---
   \end{itemize}        \\
\bottomrule
\end{tabular}

\hspace{1cm}

\caption{Using a \texttt{tabularx} env.\ and the \texttt{L} col. type\strut}
\begin{tabularx}{\textwidth}{@{} LL @{} }
\toprule
   Native Gel & Denatured Gel  \\
   \midrule
   \begin{itemize}
     \item   separation upon ---
   \end{itemize} & 
   \begin{itemize}
     \item   separation upon ---
   \end{itemize}        \\
\bottomrule
\end{tabularx}
\end{table}

\end{document}

答案2

  1. 确保\colwidth已定义

  2. 正确定义 P

     \newcolumntype{P}[1]{%
       >{\RaggedRight\arraybackslash\hspace{0pt}}m{#1} 
       >{\RaggedRight\arraybackslash\hspace{0pt}}m{#1}
      }
    

然后它似乎可以编译。虽然您的示例没有多大意义,因为您没有使用任何X列,那么在这里使用有什么意义呢tabularx

相关内容