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 \text
macro 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. \mathrm
En su lugar, deberías utilizar la macro aquí.
Así es como escribiría tus ecuaciones:
\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}
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}
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.