Обозначение «Где» в определении

Обозначение «Где» в определении

Мне нужно определить довольно сложную операцию. Поэтому я хочу использовать классический стиль определения "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макрос следует зарезервировать для набора фраз, таких как «где», «для всех», «при условии» и т. д. в средах отображения математических выражений (например equation, alignи т. д.),нетдля переменных или имен функций. Вместо этого здесь следует использовать макрос \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}дают разные результаты (о которых я не знал). Так что мой ответ не обязательно верен (вероятно, нет).

Я оставлю это здесь на случай, если они действительно операторы.

Связанный контент