![完美的方程参数描述(包括单位!)](https://linux22.com/image/340329/%E5%AE%8C%E7%BE%8E%E7%9A%84%E6%96%B9%E7%A8%8B%E5%8F%82%E6%95%B0%E6%8F%8F%E8%BF%B0%EF%BC%88%E5%8C%85%E6%8B%AC%E5%8D%95%E4%BD%8D%EF%BC%81%EF%BC%89.png)
我一直在尝试使用@egreg提供的参数描述。(见如何写出完美的方程参数描述?)。
\newlength{\conditionwd}
\newenvironment{variables}[1][where\quad]
{%
#1\tabularx{\textwidth-\widthof{#1}}[t]{
>{$}l<{$} @{${}:\enspace{}$} X@{}
}%
}
{\endtabularx\\[\belowdisplayskip]}
对我来说效果很好(我稍微改变了@egreg 的回答的风格)。不过,我有兴趣将单位作为附加列添加到此描述中。
目前我的例子如下:
\begin{equation} \label{eq:bingham}
\uptau=\uptau_0+\upmu*\dot{\upgamma}
\end{equation}
\begin{variables}
\text{$ \uptau $} & shear stress\\
\text{$ \uptau_0 $} & yield stress\\
\text{$ \upmu $} & plastic viscosity \\
\text{$ \dot{\upgamma} $} & shear rate
\end{variables}
制作:
是否有某种方法可以生成类似于以下的代码:
\begin{variables}
\text{$ \uptau $} & shear stress & [Pa]\\
\text{$ \uptau_0 $} & yield stress & [Pa]\\
\text{$ \upmu $} & plastic viscosity & [Pa*s]\\
\text{$ \dot{\upgamma} $} & shear rate & [s^-1]
\end{variables}
但是,我希望单位在 [-括号内对齐,而不必手动调整间距。
这可能吗?有人能帮忙解决吗?非常感谢!
答案1
这基本上只是一个表格,因此您可以通过在行中插入来添加另一列>{$}l<{$} @{${}:\enspace{}$} X@{}
。在这里,我将两列更改为l
-columns,根据您想要的间距将其更改为您需要的,或者使用例如专门分配它p{3cm}
。
一些解释
这里的列说明似乎有点晦涩难懂,让我们来看一下。以下是完整的一行:
>{$}l<{$} @{${}:\enspace{}$} l>{(}l<{)}@{}
这是三列的规格,因此我将逐一介绍它们:
第一列
>{
$
}
l
<{
$
}
将是第一列。在这里,我们看到了array
包中的一些语法,并且在文档表 1 第 2 页中找到了一些有关此语法的信息:
>{decl.}
l
可以在、r
、c
、p
或m
选项 之前使用b
。它会decl
直接在列条目前面插入 .。
<{decl.}
l
可以在、r
、c
、p
或m
选项 之后使用b
。它会decl
在列条目之后立即插入 .。
所以,>{
$
}
l
<{
$
}
会在该列中每个单元格的内容之前和之后插入$
。此处的第一个单元格设置为\uptau
,然后会转换为$\uptau$
。列类型为l
,表示左对齐。
第二列
@{${}
:\enspace
{}$}
l
这实际上只是一个l
-column(左对齐),前面的部分是列分隔的语法。我们看到它是因为它以 开头@
。由于这是为了排版数学,我们希望间距与此一致,因此$
将其放在 周围\enspace
,这是空格的长度。看看有哪些命令可以控制水平间距?了解更多信息。:
还插入了(冒号),以便直接输出。
第三列
>{
(
}
l
<{
)
}
.第一栏解释了这个机制。简而言之,它会在输入中添加括号。
单位
单位不应该用方括号排版。这是一个非常常见的错误。在这里,我建议将它们放在标准括号中。
我还添加了siunitx
,我认为您会发现它非常有用。它非常适合排版数字和单位,无论是在文本、数学还是表格中。它有一些全局设置,可以轻松更改以适合您的国家/地区的偏好。
数学困惑
您的环境的第一列将以数学模式排版。这可以通过 看到>{$}l<{$}
。代码意味着每个单元格的$
前面和后面都有,因此它将处于数学模式。您可能忽略了这一点,并试图将$\uptau$
参数放入第一个单元格中。这将是双重切换,首先进入数学模式,然后再次进入文本模式,从而出现错误。为了解决这个问题,您似乎再次将其放入其中\text{}
,这将引入三重切换。我们可以通过使用 来减少所有这些混乱\uptau
。
如果我错了,请纠正我,但在您的等式中,您似乎使用了*
乘法符号。在大多数情况下,这应该排版为空或为\cdot
。有些文本喜欢将其打印为带有 - 符号的十字\times
,即使这在数学中具有非常不同的含义。我擅自将方程式排版在三行不同的行上,只是为了显示选项。我会坚持使用第三行。
查找文档
请注意,您始终可以通过命令行/终端输入 来查找文档texdoc siunitx
,这适用于任何软件包。该文档也可在以下位置找到:http://ctan.org/pkg/siunitx
输出
代码
\documentclass[11pt]{article}
\usepackage{mathtools}
\usepackage{upgreek}
\usepackage{tabularx}
\usepackage{siunitx}
\newlength{\conditionwd}
\newenvironment{variables}[1][where\quad]
{%
#1\tabularx{\textwidth-\widthof{#1}}[t]{
>{$}l<{$} @{${}:\enspace{}$} l>{(}l<{)}@{}
}%
}
{\endtabularx\\[\belowdisplayskip]}
\begin{document}
\begin{align} \label{eq:bingham}
\uptau&=\uptau_0+\upmu*\dot{\upgamma}\\
\uptau&=\uptau_0+\upmu\cdot\dot{\upgamma}\\
\uptau&=\uptau_0+\upmu\dot{\upgamma}
\end{align}
\begin{variables}
\uptau & shear stress\\
\uptau_0 & yield stress\\
\upmu & plastic viscosity \\
\dot{\upgamma} & shear rate
\end{variables}
\begin{variables}
\uptau & shear stress & \si{\pascal}\\
\uptau_0 & yield stress & \si{\pascal}\\
\upmu & plastic viscosity & \si{\pascal\second}\\
\dot{\upgamma} & shear rate & \si{\per\second}
\end{variables}
\end{document}