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