使用\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]+&$%+
其工作符合预期。