如何为 lstinline 创建包装宏?

如何为 lstinline 创建包装宏?

使用\lstinline我可以在段落中包含内联代码片段。我想提供一个宏来为 lstinline 选择格式等,这样我就可以这样做,比如说\codeinline{snippet}

我已将其实现为一个简短的内联,如下所示:

\lstdefinestyle{inlinecode}{basicstyle=\ttfamily\footnotesize\bfseries}
\lstMakeShortInline[style=inlinecode]~

所以我可以写~snippet~,这样就可以正常工作了。但是,如果我需要~在代码片段中使用,它就不起作用了。如果我将短内联字符更改为其他字符,情况也是如此。所以,我想到了一个定义良好的宏,例如:

\newcommand\codeinline[1]{\lstinline[style=inlinecode]{#1}}

这也有效,除非片段中含有某些字符。例如,

\codeinline{example-command ~/myfile}

不起作用,因为~。我找到了一个类似问题(这启发了上面的\codeinline宏)但我不想在代码片段中转义字符,我只希望它以与 lstinline 相同的方式逐字处理。我希望这是可能的,因为 lstinline 做到了。

是否可以编写一个lstinline能够像 一样工作的包装器lstinline

答案1

您需要避免使用包装器宏读取参数,因为这会修复参数的类别代码,并且\lstinline无法再发挥其魔力。所以,请看这里:

\newcommand\codeinline{\lstinline[style=inlinecode]}

这样您还可以使用带有分隔符的语法:

\codeinline+&$%+

这是可行的,因为没有参数的宏只是被其定义替换。所以

\codeinline+&$%+

变成

\lstinline[style=inlinecode]+&$%+

其工作符合预期。

相关内容