EDRSPIHCRSSRSS

수식작성

last modified: 2016-12-29 15:20:16 Contributors

1. 기본적인 수식 삽입 방법

1.1. 행중 수식과 단락 수식

수식은 크게 두 가지 종류로 삽입이 되는데 하나는 작성중인 문장 사이에 inline으로 들어가는 수식이 있고, 수식 자체가 한 단락을 차지하도록 넣을 수도 있다. 문장 사이에 수식을 넣을 경우 해당 수식을 '\(''\)'로 감싸거나 '$'로 감싸준다. 단락으로 수식을 넣을 경우 '\[''\]'로 수식을 감싸준다.
임의의 직각삼각형에 대해 빗변의 길이를 \(c\), 나머지 두 변의 길이를 $a$, $b$로 나타내면 다음과 같은 관계가 항상 성립한다.
\[a^2 + b^2 = c^2\]
PythagoreanThm.png
[PNG image (13.78 KB)]

1.2. 미리 정의된 함수들

sine 함수나 cosine 함수 같은 경우 이들을 식자하기 위한 명령어가 이미 정의되어 있다.
수식 입력시 sine 함수는 $\sin$으로 입력하고 $sin$으로 입력하는 것은 피하자 이것은 변수 $s$, $i$ 그리고 $n$의 곱과 구분이 되지 않는다.
sinFn.png
[PNG image (13.01 KB)]

추가적인 명령어들의 목록은 이 문서의 53페이지를 참고한다.

1.3. 특수한 문자 및 굵은 글꼴

행렬이나 벡터를 나타내기 위해 굵은 문자를 사용하고 싶다면 amsbsy 패키지 혹은 이를 포함하고 있는 amsmath 패키지를 불러오고 다음과 같이 사용한다.
\begin{eqnarray*}
\mathbf{ABC},\quad \boldsymbol{ABC},\quad \pmb{ABC}\\
\mathbf{abc},\quad \boldsymbol{abc},\quad \pmb{abc}\\
\mathbf{\alpha\beta\gamma},\quad \boldsymbol{\alpha\beta\gamma},\quad \pmb{\alpha\beta\gamma}
\end{eqnarray*}
boldFont.png
[PNG image (8.86 KB)]

경우에 따라 사용하고 있는 글꼴이 굵은 글꼴을 포함하지 않는 경우 제대로 동작하지 않을 수도 있다. 하지만 '\pmb'의 경우 웬만한 모든 문자들을 굵은 문자로 바꿔준다.[1]

실수 전체 집합을 나타내기 위해 보통 R의 굵은 글씨 대신 특이한 문자 모양을 사용하기도 한다. 만약 amssymb 패키지를 불러올 경우 '\mathcal' 명령어와 '\mathbb' 명령어를 사용할 수 있다. 혹은 dsfont 패키지를 불러오고 '\mathds' 명령어를 사용하기도 한다. 취향에 따라 골라서 쓰면 되겠다.
\begin{eqnarray*}
\mathcal{R},\quad \mathbb{R},\quad \mathds{R}\\
\mathcal{ABC},\quad \mathbb{ABC},\quad \mathds{ABC}
\end{eqnarray*}
specialFonts.png
[PNG image (4.96 KB)]

2. 복잡한 수식의 작성

수식에 번호를 삽입 하거나 여러 줄로 구성된 수식 단락을 삽입하고자 한다면 그에 맞는 수식 환경을 사용해야 한다. 대표적으로 사용되는 환경은 align 환경이다. 이 환경은 amsmath 패키지를 불러오면 사용이 가능하다.
폐구간 $[a,b]$에서 연속이고 개구간 $(a,b)$에서 미분 가능한 두 함수 $f$, $g$에 대해 미적분학의 기본 정리로부터 다음과 같은 관계를 얻는다.
\begin{align}
f(b)g(b) - f(a)g(a)
&=\int_a^b \frac{d}{dx} ( f(x) g(x) ) \, dx \nonumber\\
&=\int_a^b f'(x) g(x) \, dx + \int_a^b f(x) g'(x) \, dx.\label{intByParts}
\end{align}
\eqref{intByParts} 우변의 두 번째 항에 대해 정리하면 다음과 같은 부분적분 공식을 얻는다.
\begin{align*}
\int_a^b f(x) g'(x)\,dx = \left[ f(x) g(x) \right]_{a}^{b} - \int_a^b  f'(x) g(x)\,dx.
\end{align*}
intByParts.png
[PNG image (37.24 KB)]

align 환경 안에서 두 번째 줄과 세 번재 줄에 들어간 '&'를 기준으로 정렬된 것을 볼 수 있다.[2] '\nonumber'를 이용하면 해당 줄에는 수식 번호가 붙지 않는다. 환경 내의 수식 전체에 번호를 붙이고 싶지 않다면 align*을 사용한다. 만약 본문에서 참조가 되고 있는 수식에만 번호가 붙고 그 외의 수식들은 자동으로 번호가 붙지 않도록 하고 싶다면 mathtools 패키지를 불러오고 \mathtoolsset{showonlyrefs=true} 명령을 추가한다.

2.1. 행렬 입력

기본적으로 행렬을 입력하는 방법은 array 환경을 괄호로 감싸는 것이다.
\left(\begin{array}{cc}
a&b\\
c&d
\end{array}\right)
하지만 amsmath 패키지를 불러오고 matrix, pmatrix, bmatrx 등의 환경을 사용할 것을 권한다. bmatrix류의 환경에서 행렬 원소들의 정렬 방식을 바꾸고 싶을 경우 mathtools 패키지를 불러오고 다음과 같이 사용한다. (@mathtools: amsmath의 확장판 (927.87 KB) 참조)
\[
\begin{bmatrix*}[r]
a&-b\\
-c&d
\end{bmatrix*},\quad
\begin{pmatrix*}[l]
a&-b\\
-c&d
\end{pmatrix*},\quad
\begin{vmatrix*}[c]
a&-b\\
-c&d
\end{vmatrix*}
\]
matrixAlignment.png
[PNG image (4.22 KB)]

'r','l','c' 인자에 따른 정렬 방식을 눈여겨 보자.

2.2. 사용자 정의 함수

'\sin', '\cos'와 달리 미리 정의되지 않은 함수의 이름을 정의해서 사용하고 싶을 때가 있다. 예를 들어 행렬의 rank같은 경우 정의가 되어 있지 않으므로 별도로 정의를 해줘야 사용이 가능하다. 만약 행렬 A의 rank를 나타내기 위해 '\mathrm{rank}A'와 같이 입력할 경우 결과가 마음에 들지 않을 것이다. 만약 amsopn 패키지를 사용하면 다음과 같은 해법이 있다.
\usepackage{amsopn}
\DeclareMathOperator{\ranka}{{rank}}
\newcommand{\rankb}{\operatorname{rank}}

둘 중 마음에 드는 방법을 사용하면 된다. 만약 새로 정의한 operator에 아랫첨자 윗첨자를 사용하고 싶다면('\sum'이나 '\prod'와 같은 방식으로) 다음과 같이 사용한다.
\usepackage{amsopn}
\DeclareMathOperator*{\argmina}{{arg\,min}}
\newcommand{\argminb}{\operatornamewithlimits{arg\,min}}
amsopn 패키지는 amsmath 패키지를 불러오면 함께 불려오므로 amsmath 패키지를 사용해도 된다. amsmath 패키지를 사용할 경우 operator name과 첨자 사이의 간격이 약간 더 좁다.
\DeclareMathOperator{\rank}{{rank}}
\DeclareMathOperator{\argmina}{{arg\,min}}
\DeclareMathOperator*{\argminb}{{arg\,min}}

\begin{document}
\begin{eqnarray*}
\mathrm{rank}A,\quad \rank A\\
\argmina_{i\in V}(k-x_{i})^2\\
\argminb_{i\in V}(k-x_{i})^2
\end{eqnarray*}
\end{document}
userOper2.png
[PNG image (9.12 KB)]

인자를 받아들이는 명령어를 정의하면 복잡한 수식을 간단히 표현할 있는 경우가 있다. 예를 들어 angle bracket을 이용해 두 벡터의 내적을 나타내고 싶은 경우 다음과 같이 사용하자.
\newcommand{\inner}[2]{{\left\langle #1,#2 \right\rangle}}
\begin{document}
\[\inner{\frac{\partial\phi}{\partial x}}{f(x)}\]
\end{document}
newcommArg.png
[PNG image (3.62 KB)]

3. 좀 더 보기 좋은 수식을 위해...

  • 여러 행에 걸친 수식이 페이지 끝에 걸쳐있을 경우 프리앰블에 '\allowdisplaybreaks' 명령을 추가해 줌으로써 수식이 두 페이지에 걸쳐서 나오도록 할 수 있다(amsmath 패키지 필요).
  • oblivoir 클래스를 이용하여 한글 문서를 작성하는 경우 클래스 옵션에 'adjustmath'를 추가하여 display 수식 전후의 과도한 공백을 줄일 수 있다. (oblivoir manual 참고)

4. 참고

4.2. 연습 문제

  • 수식 작성을 위한 연습문제가 이 링크에 있다.

4.3. 기호 검색

  • Detexify에서 기호의 모양을 마우스로 입력해서 해당 기호를 식자하기 위해 어떤 명령어를 사용해야 하는지 알 수 있다.

5. 자주 묻는 질문

5.1. 행중 수식의 분수와 첨자

행중 수식은 \textstyle로 식자된다. 첨자는 상하가 아니라 오른쪽으로 붙으며, 분수의 분모와 분자는 작은 글자가 된다.
행중 수식 \(\sum_{k=1}^{n}\), \(\lim_{n\to\infty}\), \(\frac12\)
별행 수식
\[
\sum_{k=1}^n,\quad \lim_{n\to\infty},\quad \frac12
\]
textmathstyle.png
[PNG image (11.01 KB)]
이러한 스타일은 텍스트와 수식을 함께 조판하기 위한 고려에서 나온 것으로 표준적인 조판 방식이다. 특히 큰 수학기호를 사용하게 되면 행간격을 일정하게 유지할 수 없게 되는 경우가 많은데, 이는 마땅히 기피하여야 할 것이다. 그러나 중고등학교 교과서나 참고서와 같이 수학 기호가 행중이든 별행이든 모두 동일한 모양을 가질 것이 요구되고 그것이 조판 규칙보다 중요한 경우, 다음을 참고한다.
  • 분수를 일정한 크기(displaystyle)로 식자하는 명령 \dfrac이 amsmath에 있다.
    \dfrac{1}{2}
    
  • 첨자를 기호의 상하로 보내기 위하여 \limits 명령을 쓸 수 있다.
    \lim \limits_{n \to \infty}
    
  • \displaystyle을 지정한다.
     
    \displaystyle\sum_{k=1}^{n} 
    
이런 조판방식은 일반적인 수학 문서에서 권하지 않는다. 언급한 대로 중고등학교 학습용 텍스트 이외에 행중에서 \displaystyle의 수식 조판이 필요한 경우는 거의 없을 것이다.

----
  • [1] '\pmb'는 해당 문자를 서로 다른 위치에 여러번 찍어 굵은 글씨를 만들어 낸다.
  • [2] align 환경은 rlrl... 순서로 정렬된 표로 이해하면 된다.