# Alias normalbaselineskip to \\ in a tabularx environment

I'm still on my way to my key:value table, and this time, I'm trying to alias [\normalbaselineskip] to \\. I still want to use the standard \\. What I want is to consider \\ as [\normalbaselineskip] only if it follows directly (without space) another \\. Typically, if I type \\\\ in the tabularx environment below, the first needs to be interpreted as a standard \\ and the second as [\normalbaselineskip]. Where things goes tricky is that I want, if possible, to restrict the scope of that \\\\ alias only to this tabularx (keyvalue) environment.

\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}


Thanks in advance for your help.

• The main intent here is to avoid the printing of :, correct? – Werner Feb 9 '15 at 0:09
• Sounds confusing to me. Why not just use a macro? That's what they're for, after all. Something like \newcommand{\wget}{\\[\normalbaselineskip]}.... – jon Feb 9 '15 at 0:09
• \newcommand{\wgetbreak}{\addlinespace[\normalbaselineskip]} and add \wgetbreak after \\ where you want more space. – egreg Feb 9 '15 at 0:14
• @Werner This isn't the subject of this question, but yes, one of the intend of  \multicolumn{2}{l}{This is some comment} is to avoid the colon : to be printed when there is only one element in the row. – wget Feb 9 '15 at 7:50
• a command may consist only of one escape character (ordinarily \\) and either (a) any number of letters, or (b) only one non-letter. since you can't redefine \  to be a letter, trying to redefine \\\\  is simply impossible. – barbara beeton Feb 9 '15 at 13:21

## 1 Answer

As mentioned in the comments to the question, defining a new command as \\\\ is impossible, because redefining \ conflicts with the existing meaning of \ used as an escape sequence.

Even if \\\\ seems to be more convenient to type instead of \\[\normalbaselineskip], this is not a good coding practise (loss of readability). Use cases like adding more backslashes should have been handled with care too, increasing the risk to have an infinite loop, like I experienced.

A compromise I made was to use a macro, like proposed, but a shorter one: \x.

Here is the new definition of the keyvalue environnement I have:

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


Yes, in the meantime, I migrated from tabularx to tabu allowing long tables (like the package longtable, but with way more features to it).