
Мне нужно создать свою среду для примеров исходных кодов. Хочу, чтобы она выглядела так:
Пример кода:
------------------------------------------------
# Это пример кода
эхо «Привет»
------------------------------------------------
Проблема в том, что я не знаю, как заставить его автоматически экранировать специальные символы (особенно хеш), чтобы пользователям не приходилось вводить обратную косую черту каждый раз, когда они хотят написать хеш.
Мой код
\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}