我尝试使用 \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
确保
\colwidth
已定义正确定义 P
\newcolumntype{P}[1]{% >{\RaggedRight\arraybackslash\hspace{0pt}}m{#1} >{\RaggedRight\arraybackslash\hspace{0pt}}m{#1} }
然后它似乎可以编译。虽然您的示例没有多大意义,因为您没有使用任何X
列,那么在这里使用有什么意义呢tabularx
?