Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

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 ?

share|improve this question
    
Try not to read in the argument: \newcommand\codeinline{\lstinline[style=inlinecode]} –  cgnieder 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
add comment

1 Answer

up vote 6 down vote accepted

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.

share|improve this answer
    
thank you for the explanation, that is very clear. –  starfry Mar 1 '13 at 23:09
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.