xpatch + listing + realboxes + mathmode 给出错误的间距

xpatch + listing + realboxes + mathmode 给出错误的间距

我偶然发现了一个很难重现的问题,因为它似乎需要几个包的非常特殊的组合才能使代码编译但仍然产生问题。

问题在于使用宏 mycmd 而不是其扩展版本时的间距。我们得到。

编译结果

提供此图像的代码如下。有人知道为什么会出现这种情况以及如何纠正吗?我将不胜感激。

\documentclass{article}
\usepackage{listings}
\usepackage{xcolor}
\usepackage{realboxes}
\usepackage{xpatch}

\lstdefinestyle{def}{
    mathescape,
}

\lstset{style=def}

%To add background color to inline listings
\makeatletter
\xpretocmd\lstinline{\Colorbox{gray}\bgroup\appto\lst@DeInit{\egroup}}{}{}
\makeatother

%To produce my current use case
\newcommand{\mycmd}[1]{R=#1}

\begin{document}

%Note that none of the codes below compile without the patch to lstinline

%Wrong spacing
$\mycmd{\lstinline|toto a $b$|}$

%Correct spacing
$R=\lstinline|toto a $b$|$

\end{document}

[编辑]:看来我的问题可能没有通用的解决方案。因此,有什么方法可以实现类似于命令 sctxa 的功能,其中参数可能包含内联列表?

\newcommand{\semantics}[1]{\llbracket #1 \rrbracket}
\newcommand{\sctxa}[1]{\semantics{#1}_{\alpha_{\mathcal{G}^{\sigma^{abs}}}(\model)}^{a_{var} \leftarrow a,vars}}

相关内容