
Me pregunto por qué no es fácilmente posible colocar un entorno de campo de bytes en una tabla. Este 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}
produce este error de pdflatex:
! Extra }, or forgotten \endgroup.
<template> \unskip \hfil }
\hskip \tabcolsep \endtemplate
l.5 \begin{bytefield}{2}
Debido a la respuesta válida aesta pregunta, Me temo que nuevamente se trata de algunos códigos clave que están destrozados por el campo de bytes. Pero me falta la capacidad de encontrar la solución.
Editar (anexo):
Si bien encerrar el campo de bytes entre llaves ayuda con el ejemplo simple, noté que los problemas surgen con un uso más complicado. Dado que la alineación del campo de bytes es un poco extraña, me siento obligado a usarlo \raisebox
para que los números del campo de bytes ya no se superpongan con la línea anterior.
Lo extraño es que esto sólo funciona con la primera línea. Considere este ejemplo avanzado:
\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}
lo que produce el error
! Extra alignment tab has been changed to \cr.
<template> \endtemplate
l.13 \end{bytefield}}}
Si se elimina la segunda \raisebox
, el diseño de la primera línea es correcto, la segunda no:
Respuesta1
Sólo necesitas reforzar el bytefield
medio ambiente:
\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}
Apéndice
No hay desalineación si protege adecuadamente el final de línea; si tiene bytefield
inside \raisebox
, no hay necesidad de llaves adicionales, ya proporcionadas por \raisebox
(implícitamente), pero no hacen daño.
\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}