更改 LaTeX 列表内的样式

更改 LaTeX 列表内的样式

简而言之,我试图将一些 C 代码与 LaTeX 中的反汇编代码结合起来,以便在相关语句之后显示 x86 代码。为了使它看起来不错,我希望能够在列表内切换样式。我在网上搜索了很长时间,发现有多个来源谈论escapeinsideescapechar这个帖子例如),但我似乎无法让它们工作。现在,我的代码如下:

\begin{lstlisting}[style=customcpp, escapechar=\@]
void sort(int *rgList, int nLen)
{@\lstset{escapechar=\@, style=customasm}@
    push    ebp
    mov     ebp, esp
    sub     esp, 48h
    push    ebx
    push    esi
    push    edi
    ...
\end{lstlisting}

其中customcppcustomasm是我定义的样式。两者单独工作都很好。当我尝试将它们组合在一起时,我遇到了问题。我感觉我在做一些愚蠢的事情,但我似乎找不到它。

无论如何,以下是我的风格定义:

\lstdefinestyle{customcpp}{
   belowcaptionskip=1\baselineskip,
   breaklines=true,
   frame=L,
   xleftmargin=\parindent,
   language=C++,
   showstringspaces=false,
   basicstyle=\footnotesize\ttfamily,
   keywordstyle=\color{blue},
   commentstyle=\itshape\color{green},
   stringstyle=\color{purple},
   identifierstyle=\color{gray},
   tabsize=4,
   numbers=left,
   numbersep=8pt,
   stepnumber=1,
   numberstyle=\tiny\color{gray},
}

\lstdefinestyle{customasm}{
   belowcaptionskip=1\baselineskip,
   frame=L,
   xleftmargin=\parindent,
   language=[x86masm]Assembler,
   basicstyle=\footnotesize\ttfamily,
   commentstyle=\itshape\color{purple!40!black},
   keywordstyle=\color{black},
   identifierstyle=\color{black},
   tabsize=4,
   numbers=left,
   numbersep=8pt,
   stepnumber=1,
   numberstyle=\tiny\color{gray}
}

我还应该注意到,逃避作品. 改变风格是行不通的。

答案1

我找到了一种解决方法,我刚刚使用了它,@\verb=...=@因为它与我的汇编代码格式相同,并且它工作正常,而且我显然不能\lstinline在列表中使用它。尽管如此,我不得不诉诸于此还是很愚蠢。如果有人有更好的解决方案,我很乐意听听。

相关内容