在下表中,我将前两列合并为一列,使其仅作为第一行的标题,而下方的其余行的寄存器状态(0 和 1)仍为两列。我怎样才能使从第二行到最后一行的前两列宽度相等?现在的显示方式是第一列非常窄,第二列占据了标题的剩余宽度。
我目前正在使用的代码:
\begin{table}[h]
\centering
\caption{Registers GPIO\_PORT\_MODE\_L/H\_x control.}
\label{tab:GPIOX_AF}
\begin{tabular}{|cc|l|}
\hline
\multicolumn{2}{|l|}{GPIO\_PORT\_MODE\_L/H\_x} & Function \\ \hline
\multicolumn{1}{|c|}{0} & 0 & GPIOX function \\ \hline
\multicolumn{1}{|c|}{0} & 1 & Alternate function A \\ \hline
\multicolumn{1}{|c|}{1} & 0 & Alternate function B \\ \hline
\multicolumn{1}{|c|}{1} & 1 & Alternate function C \\ \hline
\end{tabular}
\end{table}
答案1
我建议您将可变宽度的c
列类型替换为固定宽度的w
列类型。接下来,按照下面给出的代码中的详细操作,开始计算可用的\mylen
通过测量字符串的宽度来确定第 1 列和第 2 列(称为)的宽度GPIO\_PORT\_MODE\_L/H\_x
。
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{array} % for 'w' column type
\newlength\mylen
\begin{document}
\begin{table}[h]
% Calculate *usable* width of columns 1 and 2
\settowidth\mylen{GPIO\_PORT\_MODE\_L/H\_x}
\mylen=\dimexpr\mylen-2\tabcolsep-1\arrayrulewidth\relax
\mylen=\dimexpr\mylen/2\relax
\setlength\extrarowheight{2pt} % for a less-cramped "look"
\centering
\caption{Registers GPIO\_PORT\_MODE\_L/H\_x control.}
\label{tab:GPIOX_AF}
\smallskip
\begin{tabular}{ | wc{\mylen} | wc{\mylen} | l | }
\hline
\multicolumn{2}{|c|}{GPIO\_PORT\_MODE\_L/H\_x} & Function \\ \hline
0 & 0 & GPIOX function \\ \hline
0 & 1 & Alternate function A \\ \hline
1 & 0 & Alternate function B \\ \hline
1 & 1 & Alternate function C \\ \hline
\end{tabular}
\end{table}
\end{document}