I would like to reference other parts of my document (e.g. equations, figures) inside of some source code. Is there an escape sequence such that \ref
will be parsed instead of printed as a literal \ref?
My minimal example is as follows:
\documentclass{article}
\usepackage{amsmath}
\usepackage{listings}
\begin{document}
This is the pythagorean theorem:
\begin{equation}\label{eq:pyth}
a^2+b^2=c^2
\end{equation}
I can reference it normally: Equation \ref{eq:pyth}.
I can write a code example that won't work:
\begin{verbatim}
# An R function to solve for c.
# See Equation \ref{eq:pyth} for details.
solve.for.c <- function(a,b){
return( sqrt(a^2 + b^2))
}
\end{verbatim}
And one that works, but is very ugly and hard to maintain: \\
\verb@# An R function to solve for c.@ \\
\verb@# See Equation@ \ref{eq:pyth} \verb@for details.@ \\
\verb@solve.for.c <- function(a,b){@ \\
\verb@solve return( sqrt(a^2 + b^2))@ \\
\verb@}@ \
How can I do this better?
\end{document}
Any thoughts on how to do this better? Is there a simple feature I'm missing?
Best Answer
You're not missing simple features; the standard
verbatim
environment doesn't allow for interpreting commands. However, thefancyvrb
package has this facility:For
commandchars
inVerbatim
you have to specify three characters (escaped with the backslash) that aren't otherwise used in the environment's text. The same forescapechar
withlstlisting
. These characters may be chosen "locally".Take your pick.