表格內的位元組字段

表格內的位元組字段

我想知道為什麼不容易將位元組域環境放入表格中。這個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}

因為有效的答案這個問題,我擔心這又是一些被位元組字段破壞的關鍵程式碼。但我缺乏找到解決辦法的能力。

編輯(附錄):

雖然將位元組欄位括在大括號中有助於完成簡單的範例,但我注意到更複雜的使用會帶來麻煩。由於位元組字段的對齊有點奇怪,我覺得被迫使用\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}

在此輸入影像描述

附錄

如果正確保護生產線末端,則不會發生錯位;如果你有bytefieldinside \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}

在此輸入影像描述

相關內容