Notación "dónde" en la definición

Notación "dónde" en la definición

Necesito definir una operación bastante compleja. Por lo tanto, quiero utilizar el estilo de definición clásico "dónde", es decir

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

Mi intento hasta ahora en látex es:

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

Aunque no estoy muy satisfecho con el resultado:

  • La palabra clave donde realmente no destaca del diseño
  • Las definiciones auxiliares están al mismo nivel que la definición principal.

Entonces, en lugar de jugar con eso, ¿existe algún tipo de forma (semi) canónica de diseñar tales definiciones?

Respuesta1

Supongo que estás usando el\text macro para componer cosas en fuente romana, pero es una mala práctica porquesemánticamenteincorrecto: la \textmacro debe reservarse para escribir frases como "dónde", "para todos", "sujeto a", etc. dentro de entornos matemáticos de visualización (p. ej. equation,align , etc.),nopara variables o nombres de funciones. \mathrmEn su lugar, deberías utilizar la macro aquí.

Así es como escribiría tus ecuaciones:

ingrese la descripción de la imagen aquí

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

Respuesta2

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

ingrese la descripción de la imagen aquí

Respuesta3

Con otra alineación y un espaciamiento 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} 

ingrese la descripción de la imagen aquí

Respuesta4

Otra opción.

Si el nombre de la función tiene más de una letra, normalmente se escribe en posición vertical. Si solo lo usas una o dos veces, puedes usarlo \operatorname{Foo}, pero si lo usas más veces, puede que valga la pena definir un nuevo comando para ellos:

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

Después de una pequeña discusión, se demostró que \operatorname{A}+\operatorname{B}daba \mathrm{A}+\mathrm{B}resultados diferentes (que yo no sabía). Entonces, mi respuesta no es necesariamente correcta (probablemente no).

Lo dejo aquí por si son, efectivamente, operadores.

información relacionada