在 tabularx 环境中将 normalbaselineskip 别名为 \\

在 tabularx 环境中将 normalbaselineskip 别名为 \\

我是仍在前往我的键:值表的路上,而这次,我尝试将 别名[\normalbaselineskip]\\。我仍然想使用标准的\\。我想要的是仅当它直接(没有空格)跟随另一个 时才将其视为\\[\normalbaselineskip]通常\\,如果我\\\\在下面的 tabularx 环境中输入,则第一个需要解释为标准\\,第二个需要解释为[\normalbaselineskip]。事情变得棘手的是,如果可能的话,我想将该别名的范围\\\\仅限于此 tabularx(键值)环境。

\documentclass{report}
\usepackage[margin=2cm]{geometry}
\linespread{1.2}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{float}
\newenvironment{keyvalue}
{\tabularx{\textwidth}{X@{ : }X}}
{\endtabularx}
\begin{document}
\begin{keyvalue}
    Foo bar lorem ipsum           & Lorem ipusm que \\
    Some number                   & 12 3456 789  8  \\
    \multicolumn{2}{l}{This is some comment}        \\[\normalbaselineskip]
    Yet some number               & 987 65432 1     \\
    Foo bar                       & 163883495778    \\[\normalbaselineskip]
    Bar lorem ipsum               & 2013-04-12      \\
\end{keyvalue}
\end{document}

在此先感谢您的帮助。

答案1

正如问题评论中所提到的,定义一个新命令是\\\\不可能的,因为重新定义与用作转义序列\的现有含义相冲突。\

尽管\\\\输入 似乎比 更方便\\[\normalbaselineskip],但这不是一个好的编码习惯(可读性下降)。添加更多反斜杠等用例也应该小心处理,这会增加出现无限循环的风险,就像我所经历的那样。

我做出的一个折衷方案是使用一个宏,就像提议的那样,但是要更短一些:\x

keyvalue这是我对环境的新定义:

\newenvironment{keyvalue}
{%
    \newcommand{\x}{\\[\normalbaselineskip]}%
    \begin{longtabu} to \textwidth {X@{ : }X}%
}
{\end{longtabu}}

是的,与此同时,我从迁移tabularxtabu允许长表(像包一样longtable,但具有更多功能)。

相关内容