
Ich frage mich, warum es nicht einfach möglich ist, eine Bytefeldumgebung in eine Tabelle einzufügen. Dieses 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}
erzeugt diesen pdflatex-Fehler:
! Extra }, or forgotten \endgroup.
<template> \unskip \hfil }
\hskip \tabcolsep \endtemplate
l.5 \begin{bytefield}{2}
Aufgrund der gültigen Antwort aufdiese Frage, ich befürchte, dass es sich wieder um Tastencodes handelt, die durch Bytefields verstümmelt wurden. Aber mir fehlt die Fähigkeit, die Lösung zu finden.
Edit (Nachtrag):
Während das Einschließen des Bytefelds in Klammern bei dem einfachen Beispiel hilft, habe ich festgestellt, dass es bei komplizierterer Verwendung Probleme gibt. Da die Ausrichtung des Bytefelds etwas seltsam ist, fühle ich mich gezwungen, es \raisebox
so zu verwenden, dass sich die Bytefeldnummern nicht mehr mit der vorherigen Zeile überschneiden.
Unglaublicherweise funktioniert das nur mit der ersten Zeile. Betrachten Sie dieses fortgeschrittene Beispiel:
\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}
was den Fehler erzeugt
! Extra alignment tab has been changed to \cr.
<template> \endtemplate
l.13 \end{bytefield}}}
Wird die zweite \raisebox
entfernt, ist die Anordnung der ersten Zeile korrekt, die der zweiten jedoch nicht:
Antwort1
Sie müssen lediglich die bytefield
Umgebung anpassen:
\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}
Nachtrag
Es gibt keine Fehlausrichtung, wenn Sie das Zeilenende richtig schützen. Wenn Sie bytefield
innerhalb haben \raisebox
, sind die zusätzlichen Klammern nicht erforderlich. Diese werden bereits \raisebox
(implizit) von bereitgestellt, richten aber keinen Schaden an.
\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}