我正在制作一个表格(类似于日历),其中每个表格单元格的右上角都有一个日期或一些短字符串,然后将该单元格的内容左对齐。
我正在尝试写一点\newcommand
来帮助简化这件事。
这是制作我的表格的漫长历程,但结果是正确的:
\begin{tabular}{|l|l|l|}
\hline
\multicolumn{1}{|r|}{\textbf{1}} & \multicolumn{1}{r|}{\textbf{2}} & \multicolumn{1}{r|}{\textbf{3}} \\
first thing & second thing & third thing \\
\hline
\multicolumn{1}{|r|}{\textbf{4}} & \multicolumn{1}{r|}{\textbf{New 1}} & \multicolumn{1}{r|}{\textbf{2}} \\
fourth thing & restarting & \\
\hline
\end{tabular}
我试图变得聪明并且不再重复自己,因此尝试做两件事:
- 设置一个计数器来对每个单元格进行计数
- 写一个
\newcommand
,这样我就不必\multicolumn
在每个单元格中重复该代码。
我无法让它工作,并且在编译时出现很多“非法前缀标记”或“放错\omit”错误。
以下是我尝试过的:
在文档标题中:
\newcounter{DateNumber}
\setcounter{DateNumber}{22}
\newcommand{\datehead}[2]{%
\multicolumn{1}{%
\ifthenelse{\equal{#2}{first}}{|r|}{r|}}%
{\textbf{#1 \theDateNumber}}\stepcounter{DateNumber}%
}
桌子:
\begin{tabular}{|l|l|l|}
\hline
\datehead{}{first} & \datehead{}{} & \datehead{}{} \\
first thing & second thing & third thing \\
\hline
\datehead{}{first} & \setcounter{DateNumber}{1}\datehead{New} & \datehead{}\\
fourth thing & restarting & \\
\hline
\end{tabular}
任何帮助深表感谢!
答案1
你不需要\multicolumn
这个,只需要\hspace*{\fill}
:
\documentclass{article}
\newcounter{head}
\newcommand{\head}[1]{\stepcounter{head}\hspace*{\fill}\bfseries #1 \thehead}
\newcommand{\headnew}[1]{\setcounter{head}{0}\head{#1}}
\begin{document}
\begin{tabular}{|l|l|l|}
\hline
\head{} & \head{} & \head{} \\
first thing & second thing & third thing \\
\hline
\head{} & \headnew{New} & \head{} \\
fourth thing & restarting & \\
\hline
\end{tabular}
\end{document}