\newcommand:命令围绕另一个命令

\newcommand:命令围绕另一个命令

非常简单的问题 —— 你如何定义\codemath{...}要做\text{\lstinline{...}}

到目前为止我已经尝试了以下操作:

\newcommand{\codemath}{\text\lstinline}        % does nothing
\newcommand{\codemath}{\text \lstinline}       % does nothing
\newcommand{\codemath}{\text\ \lstinline}      % works, but with extra space

\newcommand{\codemath}{\text{\lstinline}}      % does nothing
\newcommand{\codemath}{\text{\lstinline}       % error
\newcommand{\codemath}{\text\{\lstinline}      % works, but with extra {

我看到了很多关于“包装”、“多个参数”和“嵌套”的问题,这些问题都没有帮助我。背页

答案1

\hbox\bgroup您可以使用并使用\lst@DeInit发出结束语来退出数学模式\egroup

这个诀窍来自于https://tex.stackexchange.com/a/357339/4427

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

\lstset{basicstyle=\ttfamily,columns=fullflexible}
\makeatletter
\newcommand{\codemath}{%
  \leavevmode % just in case this sneaks out of math mode
  \hbox\bgroup
  \appto\lst@DeInit{\egroup}%
  \lstinline
}
\makeatother

\begin{document}

\[
a+\codemath|x+y|\int
\]

\end{document}

在此处输入图片描述

相关内容