![使一行中的多列大小相同吗?](https://linux22.com/image/262721/%E4%BD%BF%E4%B8%80%E8%A1%8C%E4%B8%AD%E7%9A%84%E5%A4%9A%E5%88%97%E5%A4%A7%E5%B0%8F%E7%9B%B8%E5%90%8C%E5%90%97%EF%BC%9F.png)
我有一些大表格,我想知道如何才能使一行中的列都大小相同。您可以在“Intra Prediciton”行中看到,内容为“I_PCM”的列比其行中的其他列大。下一行中的“16x8”和“8x8”也是如此。可以解决这个问题吗?
这里是图片:
我也很欣赏有关如何改进表格的其他建议。
这里一片混乱……
\newcolumntype{Y}{>{\columncolor[gray]{.8} } c|}
\newcolumntype{N}{>{\columncolor[gray]{.8} \color{gray}} c|}
%Spaltenzahl 8
% \color{gray} \color{lightgray} %\rowcolor{hellgrau} \cellcolor{dunkelgrau}
\begin{tabular}{| >{\color{white} \columncolor[gray]{.2}[.5\tabcolsep]} c | >{\columncolor[gray]{.8}[.5\tabcolsep]} c | >{\columncolor[gray]{.8}[.5\tabcolsep]} c | >{ \columncolor[gray]{.8}[.5\tabcolsep]} c | >{ \columncolor[gray]{.8}[.5\tabcolsep]} c | >{ \columncolor[gray]{.8}[.5\tabcolsep]} c | >{ \columncolor[gray]{.8}[.5\tabcolsep]} c | >{ \columncolor[gray]{.8}[.5\tabcolsep]} c }
\hline
Bildverfahren & \multicolumn{3}{Y}{progressive} & \multicolumn{3}{Y} {interlaced } \\
\hline
Frames/Slices & \multicolumn{2}{Y}{I} & \multicolumn{2}{Y}{P} & \multicolumn{2}{Y}{B} \\
\hline
Slices & \multicolumn{3}{N}{nein} & \multicolumn{3}{Y}{ja} \\
\hline
Transformation & \multicolumn{2}{N}{8x8 DCT} & \multicolumn{2}{Y}{8x8 IDCT} & \multicolumn{2}{Y}{4x4 IDCT} \\
\hline
Adaptive Quantization & \multicolumn{2}{N}{nein} & \multicolumn{2}{N}{Lumi} & \multicolumn{2}{Y}{Variance} \\
\hline
Max. Ref Frames & \multicolumn{3}{N} {keine} & \multicolumn{3}{Y}{16} \\
\hline
B-Pyramid &\multicolumn{3}{N} {nein} & \multicolumn{3}{Y} {ja} \\
\hline
Loop-Filter & \multicolumn{3}{N} {nein} & \multicolumn{3}{Y} {ja} \\
\hline
Entropiekodierung & \multicolumn{3}{Y} {CAVLC} & \multicolumn{3}{Y}{CABAC} \\
\hline
SubPixel ME & \multicolumn{2}{N} {nein} & \multicolumn{2}{N} {halb} & \multicolumn{2}{Y}{viertel} \\
\hline
Intra Prediction & \multicolumn{1}{N} {nein} & \multicolumn{1}{Y}{16x16} & \multicolumn{1}{Y}{8x8} & \multicolumn{1}{Y}{4x4} &\multicolumn{2}{Y}{ I\_PCM}\\
\hline
MB-Partitionierung & \multicolumn{1}{Y}{16 x 16} & \multicolumn{1}{Y}{8x16} & \multicolumn{2}{Y}{16x8} & \multicolumn{2}{Y}{8x8} \\
\hline
SubMB-Partitionierung & \multicolumn{1}{N}{nein} & \multicolumn{1}{Y}{8x8} & \multicolumn{1}{Y}{4x8} & \multicolumn{1}{Y}{8x4} & \multicolumn{2}{Y}{4x4} \\
\hline
%Intra Prediction & \color{gray} nein & 16×16 & 8×8 & 4×4 \\
Farb-Sampling & \multicolumn{2}{Y}{4:0:0} & \multicolumn{2}{Y}{4:2:0} & \multicolumn{1}{Y}{4:2:2} & \multicolumn{1}{Y}{4:4:4} \\
\hline
Bit-Tiefe & \multicolumn{1}{Y}{8} & \multicolumn{2}{Y}{8 bis 10} & \multicolumn{2}{Y}{8 bis 12} & \multicolumn{1}{Y}{8 bis 14} \\
\hline
Error Prevention /Handling & \multicolumn{3}{N} {nein} &\multicolumn{3}{Y}{ja} \\
\hline
Level/Profile & \multicolumn{3}{N} {nein} &\multicolumn{3}{Y}{ja} \\
\hline
\end{tabular}
编辑:
是不是很酷?现在用的是平板电脑……
不幸的是,vrules 有时并不那么漂亮。比较最后两行时你会看到这一点。我应该给表格上色吗?
答案1
尽管我不喜欢您尝试制作的布局,因为我认为这会让读者感到困惑,但这里有一些编码可以在特定的列中产生等距的单元格。
\documentclass{article}
\usepackage{array}
\newcommand{\tabelt}[1]{\hfil\hbox to 0pt{\hss #1 \hss}\hfil}
\begin{document}
\begin{tabular}{|c|@{}>{\hbox to 9cm\bgroup}{c}<{\egroup}@{}|}
\hline
x and z&\tabelt{A}\vrule\tabelt{XX}\vrule\tabelt{ZZZ}\strut\\
\hline
yy or pp&\tabelt{BBB}\vrule\tabelt{C}\vrule\tabelt{DD}\vrule\tabelt{P}\strut\\
\hline
\end{tabular}
\end{document}
如果行具有非标准高度,则最终\strut
必须用适当版本的来替换\vrule width 0pt height 14pt depth 4pt
。
代码的基本思想是\tabelt
生成一个宽度可变的框,其内容居中,但宽度为零。为了使第一个和最后一个框正确,表格规范包括@{}
消除列之间添加的间距。为了防止所有内容折叠,指定了列的宽度。
类似的想法可以在以下情况下实现\multicolumn
:
\documentclass{article}
\usepackage{array}
\newcommand{\tabelt}[1]{\hfil\hbox to 0pt{\hss #1 \hss}\hfil}
\begin{document}
\begin{tabular}{|c|c|c|c|}
\hline
First line & Some interesting random column text & and more & and more\\
\hline
Second line&\multicolumn{3}{>{\unskip}{c}<{}@{}|}{\tabelt{BBB}\vrule\tabelt{C}\vrule\tabelt{DD}\vrule\tabelt{P}}\\
\hline
\end{tabular}
\end{document}
这里将消除开头的额外空格,\unksip
并且\strut
不再需要。
更新:使用colortbl
第一个解决方案colortbl
只需很少的修改即可:
\documentclass{article}
\usepackage{array,colortbl,xcolor}
\newcommand{\tabelt}[1]{\hfil\hbox to 0pt{\hss #1 \hss}\hfil}
\begin{document}
\begin{tabular}{|>{\columncolor{red}\color{white}}c|%
@{}>{\columncolor{green}[0pt][0pt]%
\hbox to 9cm\bgroup\color[gray]{0.7}}{c}<{\egroup}@{}|}
\hline
x and z&\tabelt{A}\vrule\tabelt{\color{black}XX}\vrule\tabelt{ZZZ}\strut\\
\hline
yy or pp&\tabelt{\color{black}BBB}\vrule\tabelt{C}%
\vrule\tabelt{DD}\vrule\tabelt{P}\strut\\
\hline
\end{tabular}
\end{document}
对于第二个版本,使用\multicolumn
,必须对代码进行一些调整,因为colortbl
产生其对齐的方式使用fill
s 而不是fil
s (试图阻止用户做我们正在尝试做的事情:-):
\documentclass{article}
\usepackage{array,colortbl,xcolor}
\newcommand{\tabelt}[1]{\hfill\hbox to 0pt{\hss #1 \hss}\hfill}
\begin{document}
\showoutput
\begin{tabular}{|>{\columncolor{red} \color{white}}c|%
>{\columncolor{green}}c|%
>{\columncolor{green}}c|%
>{\columncolor{green}}c|%
}
\hline
First line & Some interesting random column text & and more & and more\\
\hline
Second line&\multicolumn{3}{>{\unkern\unskip%
\columncolor{green}[0.5em][24em]\color[gray]{0.7}}{c}<{}|}%
{\tabelt{BBB}\vrule\tabelt{C}\vrule\tabelt{\color{black}DD}\vrule\tabelt{P}}\\
\hline
\end{tabular}
\end{document}