かなり複雑な操作を定義する必要があります。そこで、古典的な「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
内の「where」、「for all」、「subject to」などのフレーズをタイプセットするために予約する必要があります。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
別のオプション。
関数名が 1 文字以上ある場合、通常は縦書きで表記されます。1 回か 2 回しか使用しない場合は を使用できます\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}
異なる結果を示すことが示されました (私はそれを知りませんでした)。したがって、私の答えは必ずしも正しいわけではありません (おそらくそうではありません)。
彼らが実際にオペレーターである場合に備えて、ここに残しておきます。