表格内的字节字段

表格内的字节字段

我想知道为什么不能轻易地将字节域环境放入表格中。这个 MWE

\documentclass[border=2mm]{standalone}
\usepackage{bytefield}
\begin{document}
\begin{tabular}{c}
    \begin{bytefield}{2}
         \bitheader{0-1} \\ \bitbox{1}{0} \bitbox{1}{2}
    \end{bytefield}
\end{tabular}
\end{document}

产生此 pdflatex 错误:

! Extra }, or forgotten \endgroup.
<template> \unskip \hfil }
                          \hskip \tabcolsep \endtemplate 
l.5 \begin{bytefield}{2}

由于这个问题,我担心又是一些关键代码被bytefield弄乱了。但我缺乏找到解决方案的能力。

编辑(附录):

虽然用括号括住字节字段有助于简化示例,但我注意到,使用更复杂时会出现问题。由于字节字段的对齐有点奇怪,我感觉不得不使用,\raisebox这样字节字段数字就不再与前一行重叠了。

奇怪的是,这只适用于第一行。请考虑这个高级示例:

\documentclass[border=2mm]{standalone}
\usepackage{bytefield}
\begin{document}
\begin{tabular}{l}\hline
    \raisebox{-1ex}[5ex][1.5ex]{
        {\begin{bytefield}[endianness=big,bitwidth=5em]{1}
        \bitheader{0} \\ \bitbox{1}{uint8}
        \end{bytefield}}}
    \\ \hline
    \raisebox{-1ex}{
        {\begin{bytefield}[endianness=little,bitwidth=5em]{2}
        \bitheader{0,1} \\ \bitbox{1}{MSB} & \bitbox{1}{LSB}
        \end{bytefield}}}
\end{tabular}

产生错误

! Extra alignment tab has been changed to \cr.
<template> \endtemplate 
l.13    \end{bytefield}}}

\raisebox如果删除 第二行,则第一行的布局是正确的,而第二行则不正确:在此处输入图片描述

答案1

你只需要支撑bytefield环境:

\documentclass[border=2mm]{standalone}
\usepackage{bytefield}

\begin{document}

\begin{tabular}{c}
  {\begin{bytefield}{2}
   \bitheader{0-1} \\ \bitbox{1}{0} \bitbox{1}{2}
   \end{bytefield}}
\end{tabular}

\end{document}

在此处输入图片描述

附录

如果您正确地保护了行尾,就不会出现错位;如果您有bytefield内部\raisebox,则不需要已经\raisebox(隐式)提供的额外括号,但它们不会造成任何损害。

\documentclass[border=2mm]{standalone}
\usepackage{bytefield}

\begin{document}
\begin{tabular}{l}\hline
    \raisebox{-1ex}[5ex][1.5ex]{% <---- HERE
        \begin{bytefield}[endianness=big,bitwidth=5em]{1}
        \bitheader{0} \\ \bitbox{1}{uint8}
        \end{bytefield}}
    \\ \hline
    \raisebox{-1ex}[5ex][1.5ex]{% <---- HERE
        \begin{bytefield}[endianness=little,bitwidth=5em]{2}
        \bitheader{0,1} \\ \bitbox{1}{MSB} \bitbox{1}{LSB}
        \end{bytefield}}
\end{tabular}
\end{document}

在此处输入图片描述

相关内容