정의의 "어디" 표기법

정의의 "어디" 표기법

다소 복잡한 작업을 정의해야 합니다. 따라서 나는 고전적인 "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" 등과 같은 문구를 조판하기 위해 예약되어야 합니다 .equationalign~ 아니다변수나 함수 이름의 경우. \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

또 다른 옵션.

함수 이름에 두 개 이상의 문자가 있는 경우 일반적으로 똑바로 조판됩니다. 한두 번만 사용하는 경우에는 을 사용할 수 있지만 \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}결과를 제공했습니다(나는 몰랐습니다). 따라서 내 대답이 반드시 옳은 것은 아닙니다(아마도 그렇지 않을 것입니다).

그들이 실제로 운영자일 경우를 대비해 여기에 남겨둡니다.

관련 정보