抑制环境之间的垂直空间

抑制环境之间的垂直空间

我在 LaTeX 文档中指定了两个环境来突出显示不同的代码行:

\newenvironment{code}{\color{blue}}{\ttfamily}{\par}
\newenvironment{codegrey}{\color{grey}}{\ttfamily}{\par}

在文档中,我希望后者出现在前者的正下方,没有任何间距。代码如下:

\begin{code}
\begin{verbatim}
\renewcommand{\arraystretch}{1.5}
\end{verbatim}
\end{code}
\begin{codegrey}
\begin{verbatim}
\begin{tabular}{|c|p{3cm}llcp{5cm}|}
\end{verbatim}
\end{codegrey}

我的目标是将它们显示为: 在此处输入图片描述 而不是这样: 在此处输入图片描述 任何建议都非常感谢!这是我第一次使用 newenvironment 命令,我发现它非常强大。

答案1

这里有一个使用 的较短版本fancyvrb。您无需使用单独的环境来更改颜色。

\documentclass{article}
\usepackage{xcolor}
\usepackage{fancyvrb}

\begin{document}
  \begin{Verbatim}[commandchars=+\[\],fontsize=\footnotesize]
+color[blue]\renewcommand{\arraystretch}{1.5}
+color[gray]\begin{tabular}{|c|p{3cm}llcp{5cm}|}
\end{Verbatim}
\end{document}

在此处输入图片描述

您还可以使用 listings提供密钥的包escapechar在逐字环境中启用乳胶命令。

答案2

您可以在中间添加一个带有负值的 \vspace,如下所示:

\begin{code}
\begin{verbatim}
\renewcommand{\arraystretch}{1.5}
\end{verbatim}
\end{code}

\vspace{-3mm} %negative \vspace
\begin{codegrey}
\begin{verbatim}
\begin{tabular}{|c|p{3cm}llcp{5cm}|}
\end{verbatim}
\end{codegrey}

编辑:另一种方法是在环境中添加负 vspace--

\newenvironment{code}{\color{blue}}{\ttfamily \vspace{-3mm}}
\newenvironment{codegrey}{\color{grey}}{\ttfamily \vspace{-3mm}}

但请注意,关闭环境后,这将影响下一段的间距

答案3

这是一个使用选项listings

在此处输入图片描述

\documentclass{article}

\usepackage{xcolor,listings,etextools}
\lstset{basicstyle=\ttfamily,mathescape,columns=fullflexible}

\begin{document}

\begin{lstlisting}
$\AfterGroup{\color{blue}}$\renewcommand{\arraystretch}{1.5}
$\AfterGroup{\color{gray}}$\begin{tabular}{|c|p{3cm}llcp{5cm}|}
\end{lstlisting}

\end{document}

没有etextools您可以使用

\newcommand{\colorblue}{\color{blue}}
\newcommand{\colorgray}{\color{gray}}

...

\begin{lstlisting}
$\aftergroup\colorblue$\renewcommand{\arraystretch}{1.5}
$\aftergroup\colorgray$\begin{tabular}{|c|p{3cm}llcp{5cm}|}
\end{lstlisting}

相关内容