在 LaTeX 中描绘数字寄存器的好方法/示例?

在 LaTeX 中描绘数字寄存器的好方法/示例?

我正在为 RISC-V 处理器编写技术文档。这需要写下很多像这样的小表格(它们是计算机的寄存器,其中指定了每个字段的首字母缩写): 在此处输入图片描述

我可以使用表格来做到这一点,但我在参考手册中看到参考手册他们改用图形。有什么建议/示例可以快速绘制这些图形吗?

非常感谢您的提示

答案1

自制解决方案。可以改变的长度\bitwidth来改变每个条目周围的水平缓冲区空间的比例。

\documentclass{article}
\usepackage[usestackEOL]{stackengine}
\newlength\bitwidth
\setlength\bitwidth{5pt}
\newcounter{bitnum}
\newcommand\bitbox[2][\thebitnum]{\setcounter{bitnum}{#1}%
  \begingroup\fboxsep=1pt\relax\stackunder{\stackon{\fbox{%
  \hspace{\dimexpr\wd0+.5\bitwidth}#2%
  \hspace{\dimexpr\wd0+.5\bitwidth}\strut}}{#1}}{1}%
  \hspace{-\fboxrule}\addtocounter{bitnum}{-1}\endgroup\ignorespaces}
\newcommand\bytebox[3][\thebitnum]{%
  \setcounter{bitnum}{#1}\begingroup\fboxsep=1pt\relax\setbox0=\hbox{#3}%
  \stackunder{\def\stackalignment{r}\stackon[0pt]{\def\stackalignment{l}%
  \stackon{\fbox{\makebox[\wd0+#2\bitwidth]{#3\strut}}}{\smash{~#1}}}%
  {\the\numexpr#1-#2+1~}}{#2}\hspace{-\fboxrule}%
  \endgroup\setcounter{bitnum}{\numexpr#1-#2}\ignorespaces}
\newcommand\continuebox{\begingroup\fboxsep=1pt\relax%
  \stackunder[\fboxsep]{\stackon[\fboxsep]{\strut}{\rule{8pt}{\fboxrule}}}%
  {\rule{8pt}{\fboxrule}}\endgroup%
}
\begin{document}
\bitbox[31]{SD}
\bytebox{8}{WPRI}
\bitbox{TSR}
\bitbox{TW}
\bytebox{2}{MPP[1:0]}
\bytebox{2}{WPRI}
\continuebox\dots\continuebox
\bytebox[15]{16}{XS[15:0]}
\end{document}

在此处输入图片描述

答案2

经过几天的使用,我绝对可以建议使用注册包来自 Matthew Lovell。这是一个完整的解决方案,为以紧凑但可读的方式记录寄存器提供了良好的支持。

下面是我在 Overleaf 中制作的一个例子: 在此处输入图片描述

这个非常简单,但可以添加更多奇特的东西(重置值,颜色......)。

相关内容