KTUGFaq

KTUG FAQ

로그인:
비밀번호:
가입
You plan things that you do not even attempt because of your extreme caution.
FrontPage › WinEdtTip/DeclareMathOperator
이 위키 페이지는 WinEdtTip 과는 무관한 것 같습니다. 오래 동안 WinEdtTip 에 포함되어 있었으므로 DeclareMathOperator 로 옮기고 다시 불러 옵니다.--Yhchoe

DeclareMathOperator

Q1(from KTUGOperate:10906): Tex 문서를 보다보니..
라는 명령어가 있는데, 어떤 명령인지 궁금합니다.. 분위기상..
\newcommand
명령하고 비스무레 해보이는데.. 정확히 어떤 기능을 가진 명령인지 알 수 있을까요?..

A: \newcommand는 단순히 명령어를 새로 정의하는데 비하여 단순히 \DeclareMathOperator는 "Variable-sized Math Opreator"라는 이항 연산 기호를 정의합니다. 도은이아빠께서 KTUGOperate:5883에서 알려 주신 링크 에 따르면 연산자(Operator: log-like function) 표시(기호) \diag 를 정의할 때
\DeclareMathOperator{\diag}{diag}
\newcommand{\diag}{\mathop{\mathrm{diag}}}
는 같은 역활을 한다고 하였네요. 한 편 한글, 한자 등이 수식 속에서 나타나게 하려면 그냥 text 모드로 나오게 할 것이냐 연산자(Operator)로 쓸 것이냐에 따라 약간 다릅니다. 그냥 text 모드로 나오게 할려면
\newcommand{\je}{\text{제}}
와 같이 정의하면 됩니다. 연산자(Operator)로 쓸 것이면
\DeclareMathOperator*{\haneul}{\text{天}}%
와 같이 정의하면 됩니다. -> KTUGOperate:18853

약간의 부연 설명을 하면 수식 모드(Math mode) 속에서 함수나 연산자는 똑바로 세워야하고 앞뒤에 간격을 넣어 변수와 구별하여야 합니다([http]symbols-a4.pdf의 §7.3 Math-mode spacing (74-75쪽) 참조). 많은 "함수 및 연산자 표시"(명령어)는 이미 정의 되어 있지만 간혹 새로 정해야 할 필요가 있습니다. 이 경우 \newcommand를 써서 정의하려면 함수 표시 앞뒤의 간격을 설정하는 것이 조금 복잡합니다.

(./) \newcommand\DeclareMathOperator를 써서 프리앰블에서 Operator를 정의하여 쓰는 방법도 있으나 수식 모드에서 한 두 번만 쓸 것은 명령어 \mathop를 필요할 때마다 쓰는 방법이 편합니다. 가령 수식 모드 속에 diag 를 쓸려면 그 자리에서 \mathop{\mathrm{diag}} 를 씁니다.

그래서 여러 번 쓸 때는 아예 프리앰블에 \DeclareMathOperator를 쓰서 정의하여 쓰는 것이 편합니다. 가령 수식 속에 한글로 "상수"가 나오게 하려면
\DeclareMathOperator{\const}{\text{상수}}
로 정의하고 수식 모드에서 필요할 때 마다 \const를 입력하면 됩니다(KTUGOperate:1438참조).

위와 같이 연산자를 정의하였을 때는 display 형 수식 모드에서는 위첨자와 아래첨자가 연산자(Operator)의 바로 위쪽과 바로 아래쪽(이것을 "\limits" 위치라고 합니다.)에 붙게 되고 본문 형 수식 모드에서는 연산자의 오른쪽에 위아래(이것을 "\nolimits" 위치라고 합니다.)로 나란히 붙게됩니다. 그래서 "Variable-size Math Opreator"라고 합니다. 이미 많은 기호들은 "Variable-size Math Opreator"로 정의되어 있으니 알아두면 편리합니다([http]symbols-a4.pdf의 21-25쪽 참조). 또 display 형이나 본문 형이나 상관 없이 항상 첨자들이 "\limits" 위치에 나타나게 하려면 \DeclareMathOperator* 를 쓰면 됩니다. 가령 이항 연산 기호인 +, \times 등을 연산자 표시(기호)로 쓰면서 첨자들이 항상 "\limits" 위치에 나타나게 할려면 Preamble에
\DeclareMathOperator*{\plus}{+} \DeclareMathOperator{\cprod}{\times}
등과 같이 정의합니다. 별표(*)를 없애면 "Variable-sized Math Opreator"가 됩니다. 사용 예(예1)를 아래에 소개합니다.

그리고 항상 첨자들이 "\nolimits" 위치에 나타나게 할려면 Preamble에
\newcommand{\diag}{\mathop{\mathrm{diag}}\nolimits}
와 같이 정의합니다.

(./) AMSLaTeX이 아닐 때 \DeclareMathOperator 또는 \DeclareMathOperator*를 쓸려면 Preamble에 `\usepacakage{amsmath}'를 넣으면 됩니다.

예1 (From KTUGOperate:11016)

cheonjamun.png
\documentclass{article}
\usepackage{amsmath}
\usepackage{hfont}
\newcommand\dcbracket[1]{『#1』}%
\DeclareMathOperator{\dalmeum}{\text{\lower.2ex\hbox{\large ∽}
                                     }}%
\DeclareMathOperator*{\haneul}{\text{\LARGE 天}}%
\DeclareMathOperator*{\ddang}{\text{\LARGE 地}}%

\begin{document}
\begin{equation*}
 \triangle ABC \dalmeum \triangle DEF
\end{equation*}
\centering{\Large \dcbracket{天地}}
\begin{equation*}
 \haneul_{\text{천}}^{\text{하늘}} \quad
    \ddang_{\text{지}}^{\text{땅}}
\end{equation*}

\end{document}

(./) 수식 모드에서 한 두번만 쓸 것은 아래 예2처럼 명령어 \mathop를 필요할 때마다 쓰는 방법이 편합니다.
여기 있던 예2WinEdtTip/기호입력의 소항목 "상쇄(相殺) 표시"의 예2로 옮깁니다.


^
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2006-09-06 12:13:49
Processing time 0.0457 sec