Как автоматически экранировать специальные символы в вашей среде?

Как автоматически экранировать специальные символы в вашей среде?

Мне нужно создать свою среду для примеров исходных кодов. Хочу, чтобы она выглядела так:

Пример кода:

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

# Это пример кода

эхо «Привет»

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


Проблема в том, что я не знаю, как заставить его автоматически экранировать специальные символы (особенно хеш), чтобы пользователям не приходилось вводить обратную косую черту каждый раз, когда они хотят написать хеш.


Мой код

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

Этот код работает хорошо, пока я не захочу написать какой-либо специальный символ внутри среды, тогда я получаю эту ошибку:

! Paragraph ended before \terminalText was complete.


Я даже пытался сделать какую-то обертку для verbatimокружающей среды, судя по вопросудословно применимо с новым определением среды?, но он выдает мне эту ошибку:

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

Мой второй код

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

решение1

При использовании verbatimпакета код для второго примера работает «из коробки» (если dashruleпакет также включен)

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

введите описание изображения здесь

Пожалуйста, рассмотрите listingsпакет как «лучший» и более понятный способ верстки примеров кода.

РедактироватьВот пример вывода tcolorboxдля списков.

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

введите описание изображения здесь

Связанный контент