
내 왼쪽 단어 그룹은 내 바이트 필드에서 꽤 보기 흉해 보입니다. bytefield와 rightwordgroup 사이처럼 bytefield와 leftwordgroup 사이에도 동일한 간격을 만드는 것이 가능합니까? 아니면 적어도 leftwordgroup과 bytefield 사이의 간격을 조금 더 크게 만드는 것이 가능합니까?
이것은 내 현재 코드입니다.
\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}