逐字处理灰色框内的 % 字符

逐字处理灰色框内的 % 字符

我在互联网上找到了这个代码片段,它用于在灰框内生成文本区域。

\newcommand\greybox[1]{%
  \vskip\baselineskip%
  \par\noindent\colorbox{lightgray}{%
    \begin{minipage}{\textwidth}#1\end{minipage}%
  }%
  \vskip\baselineskip%
}

我这样使用它:

Normal text.
\greybox{Surrounded text.

Even on multiple lines}

产生如下输出:

现在,我需要将一些源代码放入这个灰色框中,我打算使用verbatim它来这样做。问题是:verbatim转义%类似字符,但当它位于(如上所定义)内时,\greybox它的行为不正确。百分号被解释为注释。

\greybox{
  \begin{verbatim}
    code with a % inside
  \end{verbatim}
}

显然,如果我做相反的事情,即将\greybox其逐字放入其中,则所有内容都会被转义并且\greybox不会被解释。

有什么解决办法吗?listings如果有必要,我不介意使用或其他软件包。

答案1

您提到该listings软件包是可以接受的。这是我用于 bash 命令的一个示例。

\usepackage{listings} %for source code format
  \lstset{basicstyle=\ttfamily\scriptsize}
  \lstdefinestyle{command}{backgroundcolor=\color{lightgray}, frame=none}

在这里我定义

  1. 全局环境的基本样式:列表将采用脚本大小的字体大小,并采用等宽字体系列。
  2. 样式名称为“command”,背景为浅灰色,并且列表外没有框架。

使用列表时,

\begin{lstlisting}[style=command, caption="choose makefile"]
  # cp makef.linux Makefile
\end{lstlisting}

风格看起来像 命令的外观

listings包还可以定义语言风格并识别注释,例如 c-style、python、... 查看列表LaTeX/源代码清单

相关内容