![如何摆脱这些过多的规则?](https://linux22.com/image/238076/%E5%A6%82%E4%BD%95%E6%91%86%E8%84%B1%E8%BF%99%E4%BA%9B%E8%BF%87%E5%A4%9A%E7%9A%84%E8%A7%84%E5%88%99%EF%BC%9F.png)
\documentclass{article}%cannot be minimal
\usepackage{longtable}
\usepackage{ifthen, xspace}
\newcounter{xyz}
\setcounter{xyz}{1}
\def\and{&\xspace}
\begin{document}
\begin{longtable}{|*2{c|}}\hline
\whiledo{\value{xyz}<6}%
{\thexyz \and something\stepcounter{xyz} \\\hline}
\end{longtable}
\end{document}
答案1
这也会删除最后两条垂直线:
\newcommand*{\condition}{\value{xyz}<6}
\begin{longtable}{|*2{c|}}\hline
\whiledo{\condition}%
{\thexyz \and something\stepcounter{xyz}%
\ifthenelse{\condition}{\\\hline}{\\\hline\end{longtable}}}
有趣的是,如果我\\\hline
从中取出这些行,就会出现这些行\ifthenelse
,如果我将\end{longtable}
其放在后面(甚至在%
换行符之前),也会出现类似的情况。实际上,我不喜欢在循环构造中结束环境。
答案2
来自booktabs
包装文档:
2 正式餐桌的布局
如果你始终记住两个简单的指导原则,就不会犯大错:
永远不要使用垂直规则。
切勿使用双重规则。这些准则可能看起来很极端,但我从未发现过打破它们的好理由。例如,如果您认为表格左半部分的信息与右半部分的信息差别很大,需要用垂直线将其分开,那么您应该使用两个表格。
\documentclass{article}
\usepackage{array}
\usepackage{booktabs}
\usepackage{longtable}
\usepackage{ifthen, xspace}
\newcounter{xyz}
\def\and{&\xspace}
\begin{document}
\begin{longtable}{>{\stepcounter{xyz}\thexyz}cc}
\toprule
\whiledo{\value{xyz}<5}
{\and something \\}
& \xspace something \\
\bottomrule
\end{longtable}
\end{document}
答案3
\documentclass{article}%cannot be minimal
\usepackage{longtable}
\usepackage{ifthen, xspace}
\newcounter{xyz}
\setcounter{xyz}{1}
\def\and{&\xspace}
\begin{document}
\begin{longtable}{|*2{c|}}\hline
\whiledo{\value{xyz}<5}%
{\thexyz \and something\stepcounter{xyz} \\\hline}%
\thexyz \and something\stepcounter{xyz}\\\hline%
\end{longtable}
\end{document}