如何将 bytefield 包与 LaTeX 类 IEEEtran 一起使用?

如何将 bytefield 包与 LaTeX 类 IEEEtran 一起使用?

鉴于 MWE

%\documentclass{article}
\documentclass{IEEEtran}
\usepackage{bytefield}

\begin{document}    
\begin{bytefield}[bitwidth=10pt,bitheight=20pt]{8}
    \bitheader{0-7} \\
    \bitbox{1}{A} &
    \bitbox{1}{B} &
    \bitbox{1}{C} &
    \bitbox{5}{X} \\
    \bitbox{1}{D} &
    \bitbox{1}{E} &
    \bitbox{1}{F} &
    \bitbox{5}{X} \\
    \bitbox{1}{G} &
    \bitbox{1}{H} &
    \bitbox{1}{I} &
    \bitbox{5}{X} \\
\end{bytefield}
\end{document}

可以看出,IEEEtran 类弄乱了字节字段包生成的输出(将编译与类article(正确)和类IEEEtran(不正确)进行比较)。我该如何修复它?请注意,我的实际代码使用了更复杂的字节字段和额外的 TikZ 覆盖。我希望在 MWE 中修复它也能在我的文档中修复它。

答案1

这是 中的一个“功能” bytefield,依赖于\lineskip值 1pt,但 中却没有IEEEtran

\lineskip您可以通过在环境内设置补丁来修复它bytefield

\documentclass{IEEEtran}
\usepackage{bytefield}
\usepackage{xpatch}

\xpretocmd{\bytefield}{\setlength{\lineskip}{1pt}}{}{}

\begin{document}
\begin{bytefield}[bitwidth=10pt,bitheight=20pt]{8}
    \bitheader{0-7} \\
    \bitbox{1}{A} &
    \bitbox{1}{B} &
    \bitbox{1}{C} &
    \bitbox{5}{X} \\
    \bitbox{1}{D} &
    \bitbox{1}{E} &
    \bitbox{1}{F} &
    \bitbox{5}{X} \\
    \bitbox{1}{G} &
    \bitbox{1}{H} &
    \bitbox{1}{I} &
    \bitbox{5}{X} \\
\end{bytefield}

\end{document}

在此处输入图片描述

相关内容