这与之前的问题答案是埃格尔我想要排版以下内容,但不要在单元格 (1,0) 和 (3,0) 周围添加 vline:
原则上,使用下面的代码可以做到这一点。但是,\refstepcounter
之前的调用\multicolumn
给出了\omit
相关错误,就像上一个问题。尝试了各种各样的方法,但总的来说,问题是,当该行中的第一个单元格是给定的\multicolumn
,显然\multicolumn
必须是扩展中的第一个命令时,如何在单个宏中影响每个表行的一些逻辑?
\documentclass{article}
\usepackage{longtable}
\newcounter{tablerowi}
\NewExpandableDocumentCommand{\mc}{m}{\multicolumn{1}{l}{#1}}
\NewExpandableDocumentCommand{\tableRow}{smm}{%
\IfBooleanTF{#1}{%
\mc{} & \mc{#3} & \mc{\thetablerowi} \\
}{%
\refstepcounter{tablerowi}
\mc{#2} & \mc{#3} & \mc{\thetablerowi} \\
}
}
\begin{document}
\begin{longtable}[c]{|p{2.5cm}|p{2.5cm}|p{2.5cm}|}
\hline
month & name & month \#\\\hline
\tableRow{November}{Election Day}
\tableRow*{November}{Thanksgiving}
\tableRow{December}{Advent}
\tableRow*{December}{Christmas}\hline
\end{longtable}
\end{document}
答案1
您已经在问题本身中陈述了问题。\refstepcounter{tablerowi}
之前不能有\mc
。
解决方法:(奇怪但有效)
%! TEX program = lualatex
\documentclass{article}
\usepackage{longtable}
\newcounter{tablerowi}
\NewExpandableDocumentCommand{\mc}{m}{\multicolumn{1}{l}{#1}}
\NewExpandableDocumentCommand{\tableRow}{smm}{%
\IfBooleanTF{#1}{%
\mc{} & \mc{#3} & \mc{\thetablerowi} \\
}{%
\mc{\refstepcounter{tablerowi}#2} & \mc{#3} & \mc{\thetablerowi} \\
%\mc{#2}\refstepcounter{tablerowi} & \mc{#3} & \mc{\thetablerowi} \\ % this works too as long as tablerowi is not used inside #2
}
}
\begin{document}
\begin{longtable}[c]{|p{2.5cm}|p{2.5cm}|p{2.5cm}|}
\hline
month & name & month \#\\\hline
\tableRow{November}{Election Day}
\tableRow*{November}{Thanksgiving}
\tableRow{December}{Advent}
\tableRow*{December}{Christmas}\hline
\end{longtable}
\end{document}