定义中的“哪里”符号

定义中的“哪里”符号

我需要定义一个相当复杂的操作。因此我想使用经典的“where”定义样式,即

Foo = Bar(x,y) 
WHERE
x = Baz
y = Fob

我在乳胶方面的尝试迄今为止是:

\begin{align*}
\text{Foo} = \text{Bar}(x,y) && \mathbf{where} \\
x = \text{Baz}
\end{align*}

但我对结果并不满意:

  • where 关键字在布局中并没有真正脱颖而出
  • 辅助定义与主定义处于同一级别

那么,除了摆弄它之外,是否有某种(半)规范的方法来布局这些定义?

答案1

我猜你正在使用\text宏来排版罗马字体的东西,但这是不好的做法,因为语义上不正确:该\text宏应该保留用于在显示数学环境中排版短语,例如“where”、“for all”、“subject to”等(例如equationalign等)不是变量或函数名称。\mathrm此处应使用宏。

以下是我编写方程式的方法:

在此处输入图片描述

\documentclass{article}

\usepackage{amsmath}

\newcommand\Foo{\mathrm{Foo}}
\newcommand\Barfun{\mathrm{Bar}}
\newcommand\Baz{\mathrm{Baz}}
\newcommand\Fob{\mathrm{Fob}}

\begin{document}
%
\begin{align*}
  \Foo &= \Barfun(x,y) \\
  \intertext{where}    
  x    &= \Baz         \\
  y    &= \Fob
\end{align*}
%
\end{document}

答案2

\documentclass{article}
\usepackage{amsmath}

\begin{document}

\begin{align*}
  f &= f(x,y)\\
  \makebox[0.6em][l]{where} & \\
  x &= g(z)\\
  y &= h(z,x)
\end{align*}

\end{document}

在此处输入图片描述

答案3

采用另一种对齐方式和较小的垂直间距:

\documentclass{article}

\usepackage{mathtools}
\DeclareMathOperator{\Barr}{Bar}

\begin{document}
\begin{align*}
  &  Foo   = \Barr(x,y)\\
  \shortintertext{where}
  \begin{cases}
    {} \\ {}
  \end{cases}
  \hspace{-1.1em}
  &
  \begin{array}{@{}l}
    x= Baz\\[6pt]
    y= Fob
  \end{array}
\end{align*}
\end{document} 

在此处输入图片描述

答案4

另外一个选择。

如果函数名有多个字母,通常会直立排版。如果你只使用一两次,你可以使用\operatorname{Foo},但如果使用次数较多,可能值得为它们定义一个新命令:

\documentclass{scrartcl}

\usepackage{mathtools}
\DeclareMathOperator\Fo{Foo}
\DeclareMathOperator\Ba{Bar}
\DeclareMathOperator\Bz{Baz}
\DeclareMathOperator\Fb{Fob}

\begin{document}

\begin{align*}
  \Fo &= \Ba(x,y) \\ \intertext{where}
  x &= \Bz \\
  y &= \Fb
\end{align*}

\end{document}

经过一番讨论,结果表明\operatorname{A}+\operatorname{B}\mathrm{A}+\mathrm{B}给出了不同的结果(我不知道)。所以,我的答案不一定正确(可能不是)。

我把它留在这里以防他们实际上是操作员。

相关内容