
Necesito crear mi entorno para ejemplos de códigos fuente. Quiero que se vea así:
Ejemplo de código:
------------------------------------------------
# Este es el código de ejemplo
eco 'Hola'
------------------------------------------------
El problema es, que no sé, cómo forzarlo a escapar de los caracteres especiales (especialmente el hash) automáticamente, para que los usuarios no tengan que escribir una barra invertida cada vez que quieran escribir el hash.
Mi código
\def\terminalText#1\end{\hspace*{2em}\texttt{#1}\\\end}
\newenvironment{codeExample}{
\vspace*{1.5em}
\noindent
Code example:\\
\hspace*{1.3em}\hdashrule[0.5ex]{435pt}{0.9pt}{1.5mm}\\
\terminalText}
{\hspace*{1.3em}\hdashrule[0.5ex]{435pt}{0.9pt}{1.5mm}}
Este código funciona bien, hasta que quiero escribir cualquier carácter especial dentro del entorno, aparece este error:
! Paragraph ended before \terminalText was complete.
Incluso he intentado hacer una especie de envoltorio para el verbatim
medio ambiente, según la pregunta.¿Se puede utilizar palabra por palabra con una nueva definición de entorno?, pero me da este error:
! LaTeX Error: \begin{codeExample} on input line 535 ended by \end{verbatim}.
Mi segundo código
\newenvironment{codeExample}{
\vspace*{1.5em}
\noindent
Code Example:\\
\hspace*{1.3em}\hdashrule[0.5ex]{435pt}{0.9pt}{1.5mm}\\
\verbatim
}
{%
\endverbatim
\hspace*{1.3em}\hdashrule[0.5ex]{435pt}{0.9pt}{1.5mm}}
Respuesta1
Al usar verbatim
el paquete, el código para el segundo ejemplo funciona de inmediato (si dashrule
el paquete también está incluido)
\documentclass{article}
\usepackage{verbatim}
\usepackage{dashrule}
\newenvironment{codeExample}{
\vspace*{1.5em}
\noindent
Code Example:\\
\hspace*{1.3em}
\hdashrule[0.5ex]{435pt}{0.9pt}{1.5mm}
\verbatim
}
{%
\endverbatim
\hspace*{1.3em}
\hdashrule[0.5ex]{435pt}{0.9pt}{1.5mm}
}
\begin{document}
\begin{codeExample}
# This is the code example
echo 'Hello'
\end{codeExample}
\end{document}
Considere listings
el paquete como una forma "mejor" y más limpia de componer ejemplos de código.
EditarA continuación se muestra un ejemplo con el tcolorbox
resultado de los listados.
\documentclass{article}
\usepackage{verbatim}
\usepackage{dashrule}
\usepackage[most]{tcolorbox}
\newenvironment{codeExample}{
\vspace*{1.5em}
\noindent
Code Example:\\
\hspace*{1.3em}
\hdashrule[0.5ex]{435pt}{0.9pt}{1.5mm}
\verbatim
}
{%
\endverbatim
\hspace*{1.3em}
\hdashrule[0.5ex]{435pt}{0.9pt}{1.5mm}
}
\newtcblisting[auto counter]{codeex}[1][]{%
arc=0pt,
auto outer arc,
colbacktitle=yellow,
coltitle=black,
title={Code Example \thetcbcounter},
listing options={language=bash},
listing only,
lowerbox=ignored,
before upper=\hdashrule[0.5ex]{\textwidth}{0.9pt}{1.5mm},
after upper=\hdashrule[0.5ex]{\textwidth}{0.9pt}{1.5mm}
#1
}
\begin{document}
\begin{codeExample}
# This is the code example
echo 'Hello'
\end{codeExample}
\begin{codeex}
echo 'Hello'
\end{codeex}
\end{document}