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 \text
macro para compor coisas em fonte romana, mas isso é uma má prática porquesemanticamenteincorreto: a \text
macro 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 \mathrm
macro aqui.
Veja como eu escreveria suas equações:
\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}
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}
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.