
バイトフィールド環境を表形式に簡単に組み込めないのはなぜだろう。この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
内部にがある場合\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}