Notação "Onde" na definição

Notação "Onde" na definição

Preciso definir uma operação bastante complexa. Portanto, quero usar o estilo clássico de definição "onde", ou seja,

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

Minha tentativa até agora em látex é:

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

Mas não estou realmente satisfeito com o resultado:

  • A palavra-chave where realmente não se destaca no layout
  • As definições auxiliares estão no mesmo nível da definição principal

Então, em vez de brincar com isso, existe algum tipo de maneira (semi-) canônica de definir tais definições?

Responder1

Suponho que você esteja usando a \textmacro para compor coisas em fonte romana, mas isso é uma má prática porquesemanticamenteincorreto: a \textmacro deve ser reservada para a composição de frases como "onde", "para todos", "sujeito a", etc. em ambientes matemáticos de exibição (por exemplo equation, align, , etc.),nãopara variáveis ​​ou nomes de funções. Você deve usar a \mathrmmacro aqui.

Veja como eu escreveria suas equações:

insira a descrição da imagem aqui

\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}

Responder2

\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}

insira a descrição da imagem aqui

Responder3

Com outro alinhamento e espaçamento vertical menor:

\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} 

insira a descrição da imagem aqui

Responder4

Outra opção.

Se o nome da função tiver mais de uma letra, geralmente será escrito na vertical. Se você estiver usando apenas uma ou duas vezes, você pode usar \operatorname{Foo}, mas se estiver usando mais vezes, pode valer a pena definir um novo comando para eles:

\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}

Depois de uma pequena discussão foi mostrado isso \operatorname{A}+\operatorname{B}e \mathrm{A}+\mathrm{B}deu resultados diferentes (que eu não sabia). Portanto, minha resposta não está necessariamente correta (provavelmente não).

Deixo aqui caso sejam, de fato, operadores.

informação relacionada