使用字体颜色强调列表中的十六进制数

使用字体颜色强调列表中的十六进制数

我正在寻找一种方法来强调列表中的特定名称和十六进制数字。使用强调适用于名称,但不适用于十六进制数。

什么没有奏效

考虑以下 MWE:

\documentclass[a4paper]{article}
\usepackage{xcolor}
\usepackage{listings}
\begin{document}
\lstset{
  emph={esp,0xffffcd80},
  emphstyle=\color{red}
}
\begin{lstlisting}
(gdb) info registers
eax            0xffffd10f       -12017
ecx            0xffffce30       -12752
edx            0xffffce54       -12716
ebx            0x0              0
esp            0xffffcd80       0xffffcd80
ebp            0xffffcdf8       0xffffcdf8
\end{lstlisting}
\end{document}

这会将名称渲染esp为红色,但不是0xffffcd80以相同的方式呈现地址,尽管两者都在 emph 选项中给出。

强调列表

另一种方法涉及转义区域内的文本颜色:

\begin{lstlisting}[escapechar=!]
ebx            0x0              0
esp            !\textcolor{red}{0xffffcd80}!       0xffffcd80
ebp            0xffffcdf8       0xffffcdf8
\end{lstlisting}

这将以红色显示地址,但会破坏间距,如下面的屏幕截图所示:

逃逸区域中的文本颜色

有什么想法可以如何保留正确的间距/对齐,并能够在列表中突出显示某些名称/地址?

答案1

我认为你可以使用这个答案:带有转义代码的列表的间距问题

你的代码将如下所示:

\documentclass[a4paper]{article}
\usepackage{xcolor}
\usepackage{listings}
\begin{document}
\lstset{
  emph={esp},
  emphstyle=\color{red},
  moredelim=[is][\color{red}]{!*}{*!}
}
\begin{lstlisting}
(gdb) info registers
eax            0xffffd10f       -12017
ecx            0xffffce30       -12752
edx            0xffffce54       -12716
ebx            0x0              0
esp            !*0xffffcd80*!       0xffffcd80
ebp            0xffffcdf8       0xffffcdf8
\end{lstlisting}
\end{document}

然后看起来像这样: MWE 渲染图

相关内容