表格中的单位列带有方括号和 siunitx

表格中的单位列带有方括号和 siunitx

标题可能有点奇怪。但我想添加一个为单位保留的指定列类型。

例如,看一下下面的工作示例:

\documentclass[10pt,a4paper]{report}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{siunitx}
\usepackage{array}
    \newcolumntype{M}{>{$} l <{$}}

\begin{document}

\begin{align}
R &= \sqrt{Q\: \frac{t}{\pi\: b\: n_{eff}}}
\end{align}

Where:\\

\begin{tabular}{M |l l}
R & Radius for BNBO & $\left[\si{\meter}\right]$ \\
Q & Extraction rate & $\left[\si{\cubic\meter\per\second}\right]$ \\
t & Time frame for BNBO & $\left[\si{\second}\right]$ \\
b & Aquifer thickness & $\left[\si{\meter}\right]$ \\
n_{eff} & Effective porosity & $\left[\si{--}\right]$ \\
\end{tabular}
\end{document}

这应该返回这个:柱测试

现在,我想做的是,不再写单元前后的所有内容。这意味着,不用再写

$\left[\si{\cubic\meter\per\second}\right]$

我只会写

\cubic\meter\per\second

作为 Q 单位描述的唯一内容。

如您所见,我已经定义了一个与数学相关的列,即 M 列。我尝试以类似的方式对单位进行操作,但返回了错误。我尝试的代码是

\newcolumntype{U}{>{$\left[\si{ l <}\right]$}}

将 U 插入第三列并删除数学和siunitx环境,如下所示

\begin{tabular}{M |l U}
    R & Radius for BNBO & \meter \\
    Q & Extraction rate & \cubic\meter\per\second \\
    t & Time frame for BNBO & \si{\second \\
    b & Aquifer thickness & meter \\
    n_{eff} & Effective porosity & - \\
\end{tabular}

出现以下错误:

Package array Error: >{..} at wrong position: token ignored. \begin{tabular}{M |l U}

我真的搞不懂。请帮帮我!

答案1

这可以借助collcell包(loads array)来完成。

只需将您的列定义为

\newcolumntype{U}{>{$[\collectcell\si} l <{\endcollectcell]$}}

您就完成了。

平均能量损失

\documentclass[10pt,a4paper]{report}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{siunitx}
\usepackage{collcell} % loads array
    \newcolumntype{M}{>{$} l <{$}}
    \newcolumntype{U}{>{$[\collectcell\si} l <{\endcollectcell]$}}

\begin{document}

\begin{equation}
R = \sqrt{Q\: \frac{t}{\pi\: b\: n_{eff}}}
\end{equation}

Where:\bigskip

\begin{tabular}{M |l U}
    R & Radius for BNBO & \meter\\
    Q & Extraction rate & \cubic\meter\per\second\\
    t & Time frame for BNBO & \second\\
    b & Aquifer thickness & \meter\\
    n_{\textit{eff}} & Effective porosity & -\\
\end{tabular}
\end{document}

输出

在此处输入图片描述

请注意,添加一些间距的正确方法不是 ,\\而是类似\bigskip。此外,align当没有要对齐的内容时,使用 不是最佳选择,equation而应使用 。

如果你真的想要,但我会避免它,你甚至可以添加\left\right

\newcolumntype{U}{>{$\left[\collectcell\si} l <{\endcollectcell\right]$}}

答案2

  1. \left ... \right请改掉到处使用的习惯

  2. 删除[],它们对该列的解释没有任何作用

  3. 使用该s列,然后在该列中写入\meter

在代码中

\documentclass[10pt,a4paper]{report}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{siunitx}
\usepackage{array,booktabs}
\newcolumntype{M}{>{$} c <{$}}
\newcommand\mc[1]{\multicolumn{1}{c}{#1}}
\begin{document}

\begin{tabular}{M l s } %|
\toprule
\mc{Variable} & Meaning & \mc{Unit} \\
\midrule
R & Radius for BNBO & \meter\\
Q & Extraction rate & \cubic\meter\per\second\\
t & Time frame for BNBO & \second\\
b & Aquifer thickness & \meter\\
n_{\textup{eff}} & Effective porosity & \mc{---} \\
\bottomrule
\end{tabular}
\end{document}

在此处输入图片描述

答案3

括号中的单位没有任何意义;在我看来,这甚至是错误的,因为括号通常表示抽象的维度,例如“长度·时间-1 ”或“力·长度”。

s类型就是您想要的。我还删除了所有\:错误的间距命令,并将“eff”设置为直立类型。

还请注意,这Where:\bigskip将允许在其后进行分页。

\documentclass[10pt,a4paper]{report}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{siunitx}

\newcolumntype{M}{>{$} l <{$}}
\newcommand{\eff}{\textrm{eff}}

\begin{document}

\begin{equation}
R = \sqrt{Q \frac{t}{\pi b n_{\eff}}}
\end{equation}
Where:\\*[\bigskipamount]
\begin{tabular}{M l s}
R & Radius for BNBO & \meter\\
Q & Extraction rate & \cubic\meter\per\second\\
t & Time frame for BNBO & \second\\
b & Aquifer thickness & \meter\\
n_{\eff} & Effective porosity & \multicolumn{1}{c}{--}\\
\end{tabular}
\end{document}

在此处输入图片描述

答案4

经过我的测试,使用列表环境比表格更适合解释某些方程的变量。例如以下内容:

\documentclass{article}
    \usepackage{amsmath,amsfonts,amssymb}
    \usepackage{siunitx}

\newcommand{\mathentrylabel}[1]{%
     \makebox[\labelwidth][l]{\parbox[t]{\labelwidth}{%
                                         \raggedleft$#1$:}
                               }}
\newenvironment{mathentry}[1]%
    {\begin{list}{}{%
        \renewcommand{\makelabel}{\mathentrylabel}%
        \settowidth{\labelwidth}{\textsf{\quad#1}}%
        \setlength{\leftmargin}{\labelwidth + \labelsep}
        \setlength{\parsep}{0\baselineskip}
    }}%
    {\end{list}}

        \begin{document}
\begin{table}
    \begin{equation}
R = \sqrt{Q \frac{t}{\pi b n_{\text{eff}}} }
    \end{equation}
Where:
    \begin{mathentry}{$n_{\text{eff}}$}
\item[R]                Radius for BNBO     [\si{\meter}]
\item[Q]                Extraction rate     [\si{\cubic\meter\per\second}]
\item[t]                Time frame for BNBO [\si{\second}]
\item[b]                Aquifer thickness   [\si{\meter}]
\item[n_{\text{eff}}]   Effective porosity
    \end{mathentry}
        \end{document}

采用这种方法,括号中给出的单位可能看起来更自然,就像表格中一样。 在此处输入图片描述

相关内容