将文本传递给命令中嵌入的 alltt(需要额外的换行符)

将文本传递给命令中嵌入的 alltt(需要额外的换行符)

我想alltt在命令内部关闭(在文本周围添加一些装饰),但用于将等宽文本放入列中的空间没有被保留。

我在这里找到了解决方案: 定义新命令时 alltt 包出现问题

它是(简化形式):

\newenvironment{comm}[1]
{%
    #1%
    \begin{alltt}}
{\end{alltt}}

它可以工作,但我需要在后面添加额外的换行符\begin

\begin{comm}

    user:        some-user
    password:    some-password
\end{comm}

如果没有这个换行符,它看起来是这样的:

在此处输入图片描述

不过,这个额外的换行符不会被“吃掉”,而是会被保留下来,因此实际文本前总会有一个巨大的垂直空间。例如,我尝试切换它,\null但没有成功。

我尝试移除%标志,但效果还是一样。

这不是一个大问题(我用一些方法解决了它vspace),但我想知道为什么会这样,因为我认为这可能会为我澄清一些问题。

答案1

您使用的语法告诉 LaTeX 寻找环境的参数comm。通常参数在括号中指定,但 TeX 的规则允许不使用括号指定参数:在这种情况下,它是后面的第一个标记。

所以你的尝试

\begin{comm}
  user:        some-user
  password:    some-password
\end{comm}

结果u是论点。

由于您不需要在alltt环境之前打印任何内容,因此解决方案是说

\newenvironment{comm}
  {\begin{alltt}}
  {\end{alltt}}

顺便说一下,这是一个好的提供适当的名称而不是使用通用环境是个不错的主意,就像您所做的那样。您稍后可能需要更改环境的打印方式;如果您到处都使用alltt,则需要查看每个alltt环境以查看是否需要更改。通过分配不同的名称,您可以更改 的定义comm,这不会影响alltt您文档中的其他环境。

相关内容