Como escapar automaticamente de caracteres especiais em seu próprio ambiente?

Como escapar automaticamente de caracteres especiais em seu próprio ambiente?

Preciso criar meu ambiente para exemplos de códigos fonte. Eu quero que fique assim:

Exemplo de código:

------------------------------------------------

#Este é o exemplo de código

ecoar 'Olá'

------------------------------------------------


O problema é que não sei como forçá-lo a escapar de caracteres especiais (principalmente hash) automaticamente, para que os usuários não precisem digitar barra invertida toda vez que quiserem escrever o hash.


Meu 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 está funcionando bem, até que eu queira escrever algum caractere especial dentro do ambiente, estou recebendo este erro:

! Paragraph ended before \terminalText was complete.


Já tentei até fazer algum tipo de invólucro para o verbatimmeio ambiente, conforme a perguntautilizável literalmente com uma definição de novo ambiente?, mas está me dando este erro:

! LaTeX Error: \begin{codeExample} on input line 535 ended by \end{verbatim}.

Meu 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}}

Responder1

Usando verbatimo pacote, o código do segundo exemplo funciona imediatamente (se dashruleo pacote também estiver incluído)

\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}

insira a descrição da imagem aqui

Por favor, considere listingso pacote como uma maneira 'melhor' e mais limpa de compor exemplos de código.

EditarAqui está um exemplo com a tcolorboxsaída para listagens.

\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}

insira a descrição da imagem aqui

informação relacionada