按列对表格中的条目进行编号

按列对表格中的条目进行编号

我正在尝试制作一个包含四列的大表格,其中两列按递增方式编号。请注意,实际表格将包含大约 40 个编号条目。

这大致是所需的行为和一个笨拙的 MWE,使用带有totcount包的两个计数器(rowArowB,请注意的使用\setcounter{rowB}{\totvalue{rowA}})。

MWE 表

\documentclass[11pt,letterpaper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{totcount}
\usepackage{array}

\newtotcounter{rowA}
\newcommand\rowA{\stepcounter{rowA}{\bf \arabic{rowA}.~}}

\newcounter{rowB}
\newcommand\rowB{\stepcounter{rowB}{\bf \arabic{rowB}.~}}

\renewcommand{\arraystretch}{2}

\begin{document}
\setcounter{rowB}{\totvalue{rowA}}
\[ \begin{array}{*2{>{\displaystyle}l}*2{>{\displaystyle}l}} 
  f(t) & \mathcal{L}\{f\}(s) & f(t) & \mathcal{L}\{f\}(s) \\ \hline 
 \rowA e^{at} & \frac{1}{s-a} &  \rowB t^n & \frac{n!}{s^{n+1}} \\
 \rowA \sin(bt) & \frac{b}{s^2 + b^2} & \rowB u(t-a), \, a\geq 0 & \frac{e^{-as}}{s}\\
 \rowA \cos(bt) & \frac{s}{s^2+b^2}  & \rowB \delta(t-a), \, a \geq 0 & e^{-as}
\end{array}\]
\end{document}

问题

  1. 有没有更简单的方法来实现这一点?理想情况下只需要一个计数器和编号命令?
  2. 我对这个解决方案特别恼火,因为我必须在开始时决定每列中最终显示哪些信息——非常所见即所得/非 TeX。我希望能够将公式输入为两列表格,然后用 换行multicols。我尝试使用longtable和重复标题来做到这一点,但到目前为止没有任何效果。

答案1

我在这里解决了第一个问题,通过在列类型中应用自动步进(为此定义新的列类型)

使用A和类型的原因是在数学模式下不允许使用,但数学模式是激活的。B\text{\bfseries ...}\bfseries

\documentclass[11pt,letterpaper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{totcount}
\usepackage{array}

\newtotcounter{rowA}
\newcounter{rowB}

\newcolumntype{A}{>{\stepcounter{rowA}{\text{\bfseries\therowA.~}}}l}
\newcolumntype{B}{>{\stepcounter{rowB}{\text{\bfseries\therowB.~}}}l} 

\newcolumntype{M}{>{\displaystyle}l}

\renewcommand{\arraystretch}{2}

\begin{document}
\setcounter{rowB}{\totvalue{rowA}}
\[ \begin{array}{AMBM}
\multicolumn{1}{M}{f(t)} & \multicolumn{1}{M}{\mathcal{L}\{f\}(s)} & \multicolumn{1}{M}{f(t)} & \multicolumn{1}{M}{\mathcal{L}\{f\}(s)} \\ \hline 
    e^{at} & \frac{1}{s-a} &   t^n & \frac{n!}{s^{n+1}} \\
  \sin(bt) & \frac{b}{s^2 + b^2} &  u(t-a), \, a\geq 0 & \frac{e^{-as}}{s}\\
  \cos(bt) & \frac{s}{s^2+b^2}  &  \delta(t-a), \, a \geq 0 & e^{-as} \\
  & & & \\ % Fake line
\end{array}\]
\end{document}

在此处输入图片描述

只有一个计数器的方式

\documentclass[11pt,letterpaper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{totcount}
\usepackage{array}

\newtotcounter{rowA}

\newcolumntype{A}{>{\displaystyle\stepcounter{rowA}{\mathbf{\therowA.~}}}l}
\makeatletter
% Using one counter only: add the current value of \rowA and the total counter value -- this will give the 'rowB' 
\newcolumntype{B}{>{\displaystyle\mathbf{\@arabic{\numexpr \c@rowA + \totvalue{rowA}}.~}}l}
\makeatother

\newcolumntype{M}{>{\displaystyle}l}

\renewcommand{\arraystretch}{2}

\begin{document}
\[ \begin{array}{AMBM}
  \multicolumn{1}{M}{f(t)} & \multicolumn{1}{M}{\mathcal{L}\{f\}(s)} & \multicolumn{1}{M}{f(t)} & \multicolumn{1}{M}{\mathcal{L}\{f\}(s)} \\ \hline 
  e^{at} & \frac{1}{s-a} &   t^n & \frac{n!}{s^{n+1}} \\
  \sin(bt) & \frac{b}{s^2 + b^2} &  u(t-a), \, a\geq 0 & \frac{e^{-as}}{s}\\
  \cos(bt) & \frac{s}{s^2+b^2}  &  \delta(t-a), \, a \geq 0 & e^{-as} \\
  \frac{1}{t} f(t) & \int_s^\infty F(u) ~\mathrm{d} u & \frac{1}{\sqrt{t}} & \frac{\sqrt{\pi}}{\sqrt{s}}\\
\end{array}\]
\end{document}

在此处输入图片描述

相关内容