我怎样才能画出很细的一行?

我怎样才能画出很细的一行?

我想用 LaTeX 绘制一个像附件中的表格。我使用的是tabletabular环境。我的问题是如何在图的底部表示从表格的开头到结尾的线。我的想法是用 画一条线,\multicolumn{6}{|c|}{...}但我无法得到它,因为高度太长了。

有什么想法吗?我希望我已经清楚地解释了我的问题。

在此处输入图片描述

如果我使用@egreg 所说的解决方案,我会遇到另一个问题。我需要为其他表格的某些单元格着色,因此我使用代码,\usepackage[table]{xcolor}但它会使行更短。代码如下:

\documentclass{article}
\usepackage{amsmath,array}
\usepackage[table][hiperref]{xcolor} % Need for colour cells
\providecommand{\textsubscript}[1]{$_\textnormal{#1}$}

\begin{document}
\setlength{\extrarowheight}{2pt}
\begin{tabular}{|*6{c|}}
\multicolumn{1}{c}{1 bit}  &
\multicolumn{1}{c}{2 bits} &
\multicolumn{1}{c}{1 bit}  &
\multicolumn{1}{c}{4 bits} &
\multicolumn{1}{c}{4 bits} &
\multicolumn{1}{c}{4 bits} \\
\hline
VALIDEZ & DIVERSIFICACI\'ON &
TAMA\~NO & KDC\textsubscript{AUTH/ENC} &
KDC\textsubscript{KEK} & KDC\textsubscript{MAC} \\
\hline
\multicolumn{6}{@{}c@{}}{\vrule height 2pt depth 2pt \hrulefill \vrule     height 2pt depth 2pt} \\
\multicolumn{6}{c}{2 bytes}
\end{tabular}
\end{document}

答案1

\documentclass{article}
\usepackage{amsmath,array}
\providecommand{\textsubscript}[1]{$_\textnormal{#1}$}

\begin{document}
\setlength{\extrarowheight}{2pt}
\begin{tabular}{|*6{c|}}
\multicolumn{1}{c}{1 bit}  &
\multicolumn{1}{c}{2 bits} &
\multicolumn{1}{c}{1 bit}  &
\multicolumn{1}{c}{4 bits} &
\multicolumn{1}{c}{4 bits} &
\multicolumn{1}{c}{4 bits} \\
\hline
VALIDEZ & DIVERSIFICACI\'ON &
TAMA\~NO & KDC\textsubscript{AUTH/ENC} &
KDC\textsubscript{KEK} & KDC\textsubscript{MAC} \\
\hline
\multicolumn{6}{@{}c@{}}{\vrule height 2pt depth 2pt \hrulefill \vrule height 2pt depth 2pt} \\
\multicolumn{6}{c}{2 bytes}
\end{tabular}
\end{document}

在此处输入图片描述

更通用的解决方案,在colortbl加载时也可以使用(\usepackage[table]{xcolor}在您的情况下,通过)

\documentclass{article}
\usepackage{amsmath,array}
\usepackage[table]{xcolor} % Need for colour cells

\providecommand{\textsubscript}[1]{$_\textnormal{#1}$}

\newcommand{\range}[1]{%
  \multicolumn{#1}{@{}c@{}}{%
    \vrule height 2.2pt depth 1.8pt
    \leaders\hrule\hskip 0pt plus 1filll % note the three l's
    \vrule height 2.2pt depth 1.8pt
  }%
}

\begin{document}
\setlength{\extrarowheight}{2pt}
\begin{tabular}{|*6{c|}}
\multicolumn{1}{c}{1 bit}  &
\multicolumn{1}{c}{2 bits} &
\multicolumn{1}{c}{1 bit}  &
\multicolumn{1}{c}{4 bits} &
\multicolumn{1}{c}{4 bits} &
\multicolumn{1}{c}{4 bits} \\
\hline
VALIDEZ & DIVERSIFICACI\'ON &
TAMA\~NO & KDC\textsubscript{AUTH/ENC} &
KDC\textsubscript{KEK} & KDC\textsubscript{MAC} \\
\hline
\range{6}\\
\multicolumn{6}{c}{2 bytes}
\end{tabular}
\end{document}

您可以使用\range{<number>}跨越任意数量的列;在本例中为六列。

答案2

以下为第二个问题提供了一个简单的解决方案,如果@egreg 发布了更好的解决方案,我将删除这个答案:

\documentclass{article}
\usepackage{amsmath,array}
\usepackage[table,hyperref]{xcolor}% % Need for colour cells

\providecommand{\textsubscript}[1]{$_\textnormal{#1}$}

\def\mytable{%
\setlength{\extrarowheight}{2pt}
\begin{tabular}{|*6{c|}}
\multicolumn{1}{c}{1 bit}  &
\multicolumn{1}{c}{2 bits} &
\multicolumn{1}{c}{1 bit}  &
\multicolumn{1}{c}{4 bits} &
\multicolumn{1}{c}{4 bits} &
\multicolumn{1}{c}{4 bits} \\
\hline
VALIDEZ & DIVERSIFICACI\'ON &
TAMA\~NO & KDC\textsubscript{AUTH/ENC} &
KDC\textsubscript{KEK} & KDC\textsubscript{MAC} \\
\hline
\end{tabular}}

\newlength{\tablewith}
\settowidth{\tablewith}{\mytable}

\begin{document}

\noindent
\setlength{\extrarowheight}{2pt}
\begin{tabular}{|*6{c|}}
\multicolumn{1}{c}{1 bit}  &
\multicolumn{1}{c}{2 bits} &
\multicolumn{1}{c}{1 bit}  &
\multicolumn{1}{c}{4 bits} &
\multicolumn{1}{c}{4 bits} &
\multicolumn{1}{c}{4 bits} \\
\hline
VALIDEZ & DIVERSIFICACI\'ON &
TAMA\~NO & KDC\textsubscript{AUTH/ENC} &
KDC\textsubscript{KEK} & KDC\textsubscript{MAC} \\
\hline
\multicolumn{6}{@{}c@{}}{\vrule height 2pt depth 2pt \rule{\tablewith}{0.4pt}\!\! \vrule height 2pt depth 2pt} \\
\multicolumn{6}{c}{2 bytes}
\end{tabular}
\end{document}

在此处输入图片描述

我所做的是获取当前表格的宽度并将其用作规则宽度。

相关内容