我需要为源代码示例创建环境。我希望它看起来像这样:
代码示例:
------------------------------------------------
# 这是代码示例
回显‘你好’
------------------------------------------------
问题是,我不知道如何强制它自动转义特殊字符(尤其是哈希),这样用户就不必每次想要写哈希时都输入反斜杠。
我的代码
\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}