# How can I create wrapper macro for lstinline?

Using `\lstinline` I can include inline code snippets in a paragraph. I would like to provide a macro that selects formatting, etc, for lstinline so I can just do, say, `\codeinline{snippet}`.

I had implemented this as a short inline, like this:

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

So I could then write `~snippet~`, and that works fine. However, If I need to use `~` in the snippet it doesn't work. The same applies if I change the short inline character to something else. So, I thought of just having a well defined macro, something like:

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

Which also works, except when certain characters are in the snippet. For example, this

``````\codeinline{example-command ~/myfile}
``````

does not work because of the `~`. I found a similar question (which inspired the above `\codeinline` macro) but I don't want to have to escape characters in the snippet, I just want it treated verbatim in the same way as lstinline does. I hope that it is possible because lstinline does it.

It is possible to write a wrapper around `lstinline` that works as well as `lstinline` works ?

-
Try not to read in the argument: `\newcommand\codeinline{\lstinline[style=inlinecode]}` – clemens Mar 1 '13 at 13:14
@cgneider yes, that works. thank you. I'll accept that if you add it as an answer. I'm still learning the nuances of tex. – starfry Mar 1 '13 at 13:56

You need to avoid to read in the argument with the wrapper macro as this would fix the category codes of the argument and `\lstinline` cannot do its magic anymore. So, here you go:

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

This way you can also use the syntax with delimiters:

``````\codeinline+&\$%+
``````

This works since a macro that has no argument simply is replaced by its definition. So

``````\codeinline+&\$%+
``````

becomes

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

which works as intended.

-
thank you for the explanation, that is very clear. – starfry Mar 1 '13 at 23:09
I would like something similar, but which would enclose the code snippet in quotes. There's no solution, is there? – akim Nov 20 '15 at 8:55
@akim With the `xparse` package you can try `\NewDocumentCommand\mycode{v}{``\lstinline{#1}''}` – I don't know how robust that is, though – clemens Nov 20 '15 at 10:55