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.

I create an own command like this

\newcommand{\hostname}{this.is.my.hostname}

Now I want to use this command in normal text (no problem) and inside of a listing

Nun kann die Funktionsweise überprüft werden:

\begin{lstlisting}[language=BashGriduser]
su -l griduser
globus-url-copy gsiftp://\hostname:2811/home/share/test file:///home/share/test2
\end{lstlisting}

In the text, the command is executed without any problems. Inside the listing it is printed as \hostname. How can I execute this inside the listing or pass this as parameter or something like that.

share|improve this question
    
You need to escape to normal TeX code to process the macro. See the listings manual for how to do this. –  Martin Scharrer Jun 22 '11 at 11:43
add comment

1 Answer

up vote 1 down vote accepted

You can "escape" things as follows:

\documentclass{article}
\usepackage{listings}
\lstset{%
  escapeinside={(*}{*)},%
}
\newcommand\foo{Bar}
\begin{document}
\begin{lstlisting}
  Text (*\foo*)
\end{lstlisting}
\end{document}

Enclose macros you want tex to actually read inside some "escaping" mechanism defined by escapeinside

share|improve this answer
    
awkwardly, this won't work if the command \foo contains macros that you want set verbatim... I guess you'd need to use expansion magic to get around that –  Seamus Jun 22 '11 at 11:52
    
Thank you, is working great! –  strauberry Jun 22 '11 at 14:34
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.