一开始我设计了一个表格,里面有大量的首字母缩略词。该表格有两列,占\textwidth
,如下所示。
\documentclass{article}
\usepackage{longtable,array,xcolor}
\renewcommand*\arraystretch{10}
\newcounter{counter}
\newcolumntype\specifier{%
|>{\centering\selectfont\stepcounter{counter}\thecounter}m{1cm}
|>{\centering}m{\dimexpr\linewidth-1cm-4\tabcolsep-3\arrayrulewidth\relax}
|}
\def\row[#1]#2{& #1 \par \vspace{15pt} \textcolor{red}{#2} \tabularnewline\hline}
\begin{document}
\begin{longtable}{\specifier}\hline
\row[RAM]{Random Access Memory}
\row[BIOS]{Basic Input Output System}
\row[OMG]{Oh My Ghost}
\row[PS]{Post Script}
% and many more
\end{longtable}
\end{document}
后来我觉得不经济,太浪费纸张了,我的新方案是把两行连续的合并成一行4列,如下图。
限制和问题
首先,我有大量以下条目。
\row[RAM]{Random Access Memory}
\row[BIOS]{Basic Input Output System}
\row[OMG]{Oh My Ghost}
\row[PS]{Post Script}
第二,我懒得用regex
(把这些条目投影到其他形式中)。
是否有一个技巧可以实现我上述的想法而不需要修改上面给出的大量条目?
答案1
\documentclass{article}
\usepackage{longtable,array,xcolor}
\renewcommand*\arraystretch{10}
\newcounter{counter}
\newcolumntype\specifier{|%
*2{
>{\centering\selectfont\stepcounter{counter}\thecounter}m{1cm}
|>{\centering}m{\dimexpr.5\linewidth-1cm-4\tabcolsep-3\arrayrulewidth\relax}
|}
}
\makeatletter
\def\row[#1]#2{%
& #1 \par \vspace{15pt} \textcolor{red}{#2}
\ifodd\value{counter}
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{&}{\tabularnewline\hline}
}
\let\oldendlongtable\endlongtable
\def\endlongtable{%
\ifodd\value{counter}\omit\tabularnewline\cline{1-2}\fi
\oldendlongtable}
\begin{document}
\begin{longtable}{\specifier}\hline
\row[RAM]{Random Access Memory}
\row[BIOS]{Basic Input Output System}
\row[OMG]{Oh My Ghost}
\row[PS]{Post Script}
% and many more
\end{longtable}
\end{document}
enter image description here