我是仍在前往我的键:值表的路上,而这次,我尝试将 别名[\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}}
是的,与此同时,我从迁移tabularx
到tabu
允许长表(像包一样longtable
,但具有更多功能)。