
바이트 필드 환경을 테이블 형식에 넣는 것이 왜 쉽게 불가능한지 궁금합니다. 이번 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}