非常简单的问题 —— 你如何定义\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}