标题可能有点奇怪。但我想添加一个为单位保留的指定列类型。
例如,看一下下面的工作示例:
\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
\left ... \right
请改掉到处使用的习惯删除
[]
,它们对该列的解释没有任何作用使用该
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}
采用这种方法,括号中给出的单位可能看起来更自然,就像表格中一样。