バイトフィールド: 左の単語グループを水平に揃える

バイトフィールド: 左の単語グループを水平に揃える

私の leftwordgroups はバイトフィールド内でかなり醜く見えます。バイトフィールドと rightwordgroup の間と同じギャップをバイトフィールドと leftwordgroup の間に作ることは可能ですか? または、少なくとも leftwordgroup とバイトフィールドの間のギャップを少し大きくすることは可能ですか?

これが私の現在のコードです:

\documentclass[a4paper,ngerman,naustrian,DIV=12,BCOR=1cm]{scrbook}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{bytefield}
\usepackage{needspace}

\newcommand{\flexnumfield}{{FlexNum, 1 -- 9 Bytes}}

\begin{document}
\chapter{Bytefield}
\needspace{2\baselineskip}\begin{figure}\centering\begin{bytefield}[bitwidth=2.2em]{8} \\ 
\bitheader{0-7} \\ 
\begin{rightwordgroup}{\parbox{8em}{\raggedright Message Type}}
\wordbox[lrt]{1}{9}

\end{rightwordgroup}
\\ 
\begin{leftwordgroup}{\parbox{8em}{\raggedleft Versionsverlauf}}
\wordbox[lrt]{3}{Version Count \\ \flexnumfield \\ $\vdots$}
\\ 
\begin{rightwordgroup}{\parbox{8em}{\raggedright Version}}
\wordbox[lrtb]{3}{Hash \\ Data, 20 Bytes \\ $\vdots$}

\end{rightwordgroup}
 \\ 
\begin{rightwordgroup}{\parbox{8em}{\raggedright Version}}
\wordbox[lrtb]{1}{$\vdots$}

\end{rightwordgroup}

\end{leftwordgroup}
\end{bytefield}\par\protect\caption{some caption} 
\label{bytefield}
\end{figure}
\end{document}

醜い左ワードグループ

答え1

左と右の間には奇妙な非対称性があります。

\documentclass[a4paper,DIV=12,BCOR=1cm]{scrbook}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{bytefield}

\newcommand{\flexnumfield}{{FlexNum, 1 -- 9 Bytes}}

\begin{document}

\begin{bytefield}[
  bitwidth=2.2em,
  rightcurlyspace=0pt,
  leftcurlyspace=12pt
]{8} \\ 
\bitheader{0-7} \\ 
\begin{rightwordgroup}{Message Type}
\wordbox[lrt]{1}{9}
\end{rightwordgroup}
\\ 
\begin{leftwordgroup}{Versionsverlauf}
\wordbox[lrt]{3}{Version Count \\ \flexnumfield \\ $\vdots$}
\\ 
\begin{rightwordgroup}{Version}
\wordbox[lrtb]{3}{Hash \\ Data, 20 Bytes \\ $\vdots$}
\end{rightwordgroup}
\\ 
\begin{rightwordgroup}{Version}
\wordbox[lrtb]{1}{$\vdots$}
\end{rightwordgroup}
\end{leftwordgroup}
\end{bytefield}


\end{document}

ここに画像の説明を入力してください

環境のオプション引数で値を指定する代わりに、次のようにしてスペースをグローバルに(またはfigureや のような環境内でローカルにtable)定義することができます。

\bytefieldsetup{
  rightcurlyspace=0pt,
  leftcurlyspace=12pt
}

前文(または環境)で。

答え2

ここで、環境にパッチを適用し、次のコード行を使用して左に 12pt を追加しました。

\usepackage{xpatch}
\makeatletter
\xpatchcmd{\endleftwordgroup}{-\total@lbox@width}{-12pt -\total@lbox@width}{}{}
\makeatother

こちらがMWEです。

\documentclass[a4paper,ngerman,naustrian,DIV=12,BCOR=1cm]{scrbook}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{bytefield}
\usepackage{needspace}
\usepackage{xpatch}
\makeatletter
\xpatchcmd{\endleftwordgroup}{-\total@lbox@width}{-12pt -\total@lbox@width}{}{}
\makeatother
\newcommand{\flexnumfield}{{FlexNum, 1 -- 9 Bytes}}

\begin{document}
\chapter{Bytefield}
\needspace{2\baselineskip}\begin{figure}\centering\begin{bytefield}[bitwidth=2.2em]{8} \\ 
\bitheader{0-7} \\ 
\begin{rightwordgroup}{\parbox{8em}{\raggedright Message Type}}
\wordbox[lrt]{1}{9}

\end{rightwordgroup}
\\ 
\begin{leftwordgroup}{\parbox{8em}{\raggedleft Versionsverlauf}}
\wordbox[lrt]{3}{Version Count \\ \flexnumfield \\ $\vdots$}
\\ 
\begin{rightwordgroup}{\parbox{8em}{\raggedright Version}}
\wordbox[lrtb]{3}{Hash \\ Data, 20 Bytes \\ $\vdots$}

\end{rightwordgroup}
 \\ 
\begin{rightwordgroup}{\parbox{8em}{\raggedright Version}}
\wordbox[lrtb]{1}{$\vdots$}

\end{rightwordgroup}

\end{leftwordgroup}
\end{bytefield}\par\protect\caption{some caption} 
\label{bytefield}
\end{figure}
\end{document}

ここに画像の説明を入力してください

関連情報