Wie können Sie Sonderzeichen in Ihrer eigenen Umgebung automatisch maskieren?

Wie können Sie Sonderzeichen in Ihrer eigenen Umgebung automatisch maskieren?

Ich muss meine Umgebung für Quellcodebeispiele erstellen. Sie soll so aussehen:

Codebeispiel:

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

# Dies ist das Codebeispiel

echo 'Hallo'

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


Das Problem besteht darin, dass ich nicht weiß, wie ich das automatische Escapen von Sonderzeichen (insbesondere Hashes) erzwingen kann, sodass die Benutzer nicht jedes Mal einen Backslash eingeben müssen, wenn sie den Hash schreiben möchten.


Mein Code

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

Dieser Code funktioniert gut, bis ich ein Sonderzeichen in die Umgebung schreiben möchte. Dann erhalte ich diesen Fehler:

! Paragraph ended before \terminalText was complete.


Ich habe sogar versucht, eine Art Wrapper für die verbatimUmgebung zu erstellen, entsprechend der Fragewörtlich verwendbar mit einer neuen Umgebungsdefinition?, aber ich erhalte diesen Fehler:

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

Mein 2. Code

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

Antwort1

Mit verbatimdem Paket funktioniert der Code für das zweite Beispiel sofort (sofern dashruleauch das Paket enthalten ist).

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

Bildbeschreibung hier eingeben

Bitte betrachten Sie listingsdas Paket als eine „bessere“ und sauberere Möglichkeit, Codebeispiele zu setzen.

BearbeitenHier ist ein Beispiel mit der tcolorboxAusgabe für Auflistungen.

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

Bildbeschreibung hier eingeben

verwandte Informationen