2.2 Markdown의 확장

Pandoc의 Markdown은 원래 Markdown 구문보다 훨씬 더 풍부하지만 학술적 문서 작성에 필요한 많은 것들이 여전히 부족합니다. 예를 들어 수학 방정식을 지원하지만 다중 페이지 HTML 또는 EPUB 출력에서 방정식에 번호를 매기고 참조할 수 없습니다. bookdown에서는 몇 가지 Markdown 확장 기능을 제공하여 그러한 부족한 부분을 메워주고 있습니다.

2.2.1 수식의 번호와 참고

수식에 번호를 붙이고 참고하려면, 수식 환경에 수식을 입력하고 (\#eq:label) 구문을 이용하여 라벨을 붙일 수 있습니다. 예를 들어,

\begin{equation} 
  f\left(k\right) = \binom{n}{k} p^k\left(1-p\right)^{n-k}
  (\#eq:binom)
\end{equation}

그러면 다음과 같은 수식을 출력합니다:

\[\begin{equation} f\left(k\right) = \binom{n}{k} p^k\left(1-p\right)^{n-k} \tag{2.1} \end{equation}\]

이 수식에서 (\#eq:binom)을 삽입해서 위의 수식은 binom 이라는 라벨이 부여되었고, 이 라벨은 본문에 \@ref(eq:binom)로 삽입하여 수식을 참조할 수도 있습니다. 예를 들어, 수식 (2.1)을 참고하기 바랍니다.

수학 방정식의 라벨은 bookdown에서 접두사 eq:로 시작해야 합니다. bookdown의 모든 라벨에는 영숫자 문자, :, - 그리고/또는 /만 포함되어야 합니다. 수식의 참조는 LaTeX / PDF 출력에 가장 적합하며 Word 출력이나 전자 책에서는 잘 지원되지 않습니다. HTML 출력의 경우 bookdown은 라벨이 있는 방정식에만 번호를 지정할 수 있습니다. 라벨이 없는 방정식은 equation* 환경을 사용하거나 방정식에 \nonumber 또는 \notag를 추가하여 번호가 매겨지지 않았는지 확인하십시오. 동일한 규칙이 eqnarray, gather, align 등과 같은 다른 수학 환경에도 적용됩니다(예 :align *환경을 사용할 수 있음).

아래에서는 몇 가지 수학 방정식 환경을 더 보여 줍니다. 다음은 equation* 환경을 사용하는 숫자가 지정되지 않은 방정식입니다.

\begin{equation*} 
\frac{d}{dx}\left( \int_{a}^{x} f(u)\,du\right)=f(x)
\end{equation*} 

\[\begin{equation*} \frac{d}{dx}\left( \int_{a}^{x} f(u)\,du\right)=f(x) \end{equation*}\]

아래는 align 환경을 보여주고 있으며 라벨을 eq:align으로 지정하고 있습니다 (2.2).

\begin{align} 
  g(X_{n}) &= g(\theta)+g'({\tilde{\theta}})(X_{n}-\theta) \notag \\
  \sqrt{n}[g(X_{n})-g(\theta)] &= g'\left({\tilde{\theta}}\right)
  \sqrt{n}[X_{n}-\theta ] 
  (\#eq:align)
\end{align} 

\[\begin{align} g(X_{n}) &= g(\theta)+g'({\tilde{\theta}})(X_{n}-\theta) \notag \\ \sqrt{n}[g(X_{n})-g(\theta)] &= g'\left({\tilde{\theta}}\right) \sqrt{n}[X_{n}-\theta ] \tag{2.2} \end{align}\]

다음의 예는 equation 내에서 split 환경을 보여 주고 있으며, 또한 수식의 라벨을 (eq:var-beta)로 지정함으로써 수식 번호 (2.3)를 공유할 수 있습니다.

\begin{equation} 
\begin{split}
\mathrm{Var}(\hat{\beta}) & =\mathrm{Var}((X'X)^{-1}X'y)\\
 & =(X'X)^{-1}X'\mathrm{Var}(y)((X'X)^{-1}X')'\\
 & =(X'X)^{-1}X'\mathrm{Var}(y)X(X'X)^{-1}\\
 & =(X'X)^{-1}X'\sigma^{2}IX(X'X)^{-1}\\
 & =(X'X)^{-1}\sigma^{2}
\end{split}
(\#eq:var-beta)
\end{equation} 

\[\begin{equation} \begin{split} \mathrm{Var}(\hat{\beta}) & =\mathrm{Var}((X'X)^{-1}X'y)\\ & =(X'X)^{-1}X'\mathrm{Var}(y)((X'X)^{-1}X')'\\ & =(X'X)^{-1}X'\mathrm{Var}(y)X(X'X)^{-1}\\ & =(X'X)^{-1}X'\sigma^{2}IX(X'X)^{-1}\\ & =(X'X)^{-1}\sigma^{2} \end{split} \tag{2.3} \end{equation}\]

기본적으로 align 환경의 각 줄에는 방정식 번호가 할당됩니다. 그런데 위의 align 예제 (2.2)에서는 \notag를 사용하여 첫 번째 줄의 번호를 숨기고 있습니다. 그리고 split 환경 예제 (2.3) 에서는 단일 번호가 할당되었습니다.

2.2.2 정리와 증명

정리와 증명은 일반적으로 수학 논문들과 책에서 사용됩니다. 그러나 그 이름으로 오해하지는 마십시오. “정리(theorem)”는 번호가 매겨지고 라벨이 지정된 환경이며 꼭 수학의 정리일 필요는 없습니다 (예 : 수학과 무관한 예일 수도 있음). 마찬가지로 “증명(proof)”은 번호가 지정되지 않은 환경입니다. 이 섹션에서는 명시적으로 언급하지 않는 한 “정리”와 “증명”의 일반적 의미를 사용하겠습니다.

bookdown에서 지원되는 정리 환경의 유형은 표 2.1과 같습니다.

Table 2.1: bookdown의 정리 환경
환경 출력 이름 접두어
theorem Theorem thm
lemma Lemma lem
corollary Corollary cor
proposition Proposition prp
conjecture Conjecture cnj
definition Definition def
example Example exm
exercise Exercise exr

정리(theorem)를 작성하려면 아래와 같은 구문을 사용할 수 있습니다.

​```{theorem}
Here is my theorem.
​```

그리고 표 2.1에 있는 것처럼 정리의 환경 이름을 ```{theorem}에서 ```{lemma}로 바꾸면 lemma 환경으로 작성할 수 있다.

정리는 name 옵션을 가질 수 있으므로 그 이름은 다음과 같이 작성될 수 있습니다.

​```{theorem, name="피타고라스 정리"}
직각 삼각형의 경우 $c$가 빗변의 길이를 나타내고 
$a$와 $b$가 다른 두 변의 길이를 나타내면 
$a$, $b$ 그리고 $c$의 관계는 다음과 같이 표현된다.
`$$a^2 + b^2 = c^2$$`
​```

위의 내용은 다음과 같이 표시가 됩니다.

Theorem 2.1 (피타고라스 정리) 직각 삼각형의 경우 \(c\)가 빗변의 길이를 나타내고 \(a\)\(b\)가 다른 두 변의 길이를 나타내면 \(a\), \(b\) 그리고 \(c\)의 관계는 다음과 같이 표현된다. \[a^2 + b^2 = c^2\]

만일 이 정리를 본문에서 참조하고자 한다면, label을 사용을 해야 합니다. 그런 다음에 본문에서 이 라벨을 참조하면 됩니다. 그런데, 라벨은 다음과 같이 ```{theorem, 다음에 작성합니다.

​```{theorem, label="foo1"}
foo1 이라는 라벨이 붙여진 정리
​```

label 이라는 옵션 이름은 생략할 수 있습니다. 즉, 다음의 정리는 bar 라가 정리의 라벨이 됩니다.

​```{theorem, bar}
bar 라는 라벨이 붙여진 정리
​```

이제 정리에 라벨을 지정한 후 \@ref(prefix:label) 구문을 사용하여 참조할 수 있습니다. 각각의 prefix 값은 표 2.1의 각 환경에 대한 접두어(Label Prefix) 열을 참조하기 바랍니다. 예를 들어, 아래에 라벨(pyth)이 지정되고 이름(name =)이 붙여진 정리가 있다면 \@ref(thm:pyth)는 정리 번호 2.2를 생성합니다.

​```{theorem, pyth, name="피타고라스 정리"}
직각 삼각형의 경우 $c$가 빗변의 길이를 나타내고 
$a$와 $b$가 다른 두 변의 길이를 나타내면 
$a$, $b$ 그리고 $c$의 관계는 다음과 같이 표현된다.
`$$a^2 + b^2 = c^2$$`
​```

Theorem 2.2 (피타고라스 정리) 직각 삼각형의 경우 \(c\)가 빗변의 길이를 나타내고 \(a\)\(b\)가 다른 두 변의 길이를 나타내면 \(a\), \(b\) 그리고 \(c\)의 관계는 다음과 같이 표현된다.

\[a^2 + b^2 = c^2\]

이외에도 현재 지원되는 증명 환경은 proof, remark, solution 등이 있습니다. 구문은 정리 환경과 유사하며 증명 환경의 이름도 지정할 수 있습니다. 유일한 차이점은 번호가 지정되지 않기 때문에 참조할 수 없다는 것입니다.

출력이 PDF, HTML 또는 EPUB 인지에 관계없이 이러한 모든 정리 및 증명 환경이 즉시 작동하게 하였습니다. LaTeX 또는 HTML 전문가라면 어쨌든 이러한 환경의 스타일을 사용자가 정의할 수 있습니다 (4장 참조).

CSS를 사용하면 HTML에서 쉽게 사용자 정의를 할 수 있으며 각 환경은 <div class = "lemma"> </div>처럼 <div> </div> 안에 환경 이름을 삽입하면 됩니다 LaTeX 출력의 경우 definition, example, 그리고 exercise 환경에서는 스타일을 definition으로, proofremark 환경에서는 remark로 미리 정의했습니다. 다른 모든 환경은 plain 스타일을 사용합니다. 스타일 정의는 amsthm 패키지의 \theoremstyle{} 명령을 통해 수행됩니다.

정리는 기본적으로 장별로 번호가 매겨집니다. 문서에 장이 없으면 대신 섹션으로 번호가 매겨집니다. 전체 문서의 번호가 지정되지 않은 경우(output 형식 옵션에 number_sections = FALSE로 설정된 경우), 모든 정리는 1, 2,…, N 등과 같이 순차적으로 번호가 지정됩니다. LaTeX는 정리 환경을 순차적으로 번호 매기도록 지원합니다. 예를 들어, 정리와 렘마가 동일한 카운터를 공유합니다. bookdown의 HTML / EPUB 출력은 지원하지 않습니다. 여러분 자신의 정리 환경을 정의하여 LaTeX 프리앰블에서 번호 매기기 체계를 변경할 수도 있습니다.

\newtheorem{theorem}{Theorem}
\newtheorem{lemma}[theorem]{Lemma}

bookdown이 LaTeX 프리앰블에서 \newtheorem{theorem}을 감지하면 기본 정리 정의를 작성하지 않으므로 모든 정리 환경을 직접 정의해야 합니다. 단순성과 일관성을 위해 이 작업을 수행하지 않는 것이 좋습니다. PDF의 ’Theorem 18’이 HTML의 ’Theorem 2.4’가 될 때 혼란스러울 수 있가 때문입니다.

청크 옵션이 echo = FALSE로 설정되면 정리 및 증명 환경이 숨겨집니다. 항상 표시되도록 하려면 청크 옵션 echo = TRUE를 추가할 수 있습니다.

​```{theorem, echo=TRUE}
여기는 내 정리이다.
​```

아래에서는 정리 및 증명 환경의 더 많은 예5를 보여 주므로 bookdown에서 기본 스타일을 볼 수 있습니다.

Definition 2.1 랜덤 변수 \(X\)의 특성 함수는 다음과 같이 정의됩니다.

\[\begin{equation} \varphi_{X} (t) = \operatorname {E} \left[e^{itX}\right], \; t\in\mathcal{R} \end{equation}\]

Example 2.1 확률 밀도 함수 \(f(x)=\mathbf{1}_{x \in [0,1]}\)에서 \(X∼U(0,1)\)의 특성 함수를 도출합니다.

\[\begin{equation*} \begin{split} \varphi _{X}(t) &= \operatorname {E} \left[e^{itX}\right]\\ & =\int e^{itx}f(x)dx\\ & =\int_{0}^{1}e^{itx}dx\\ & =\int_{0}^{1}\left(\cos(tx)+i\sin(tx)\right)dx\\ & =\left.\left(\frac{\sin(tx)}{t}-i\frac{\cos(tx)}{t}\right)\right|_{0}^{1}\\ & =\frac{\sin(t)}{t}-i\left(\frac{\cos(t)-1}{t}\right)\\ & =\frac{i\sin(t)}{it}+\frac{\cos(t)-1}{it}\\ & =\frac{e^{it}-1}{it} \end{split} \end{equation*}\]

\(e^{ix}=\cos(x)+i\sin(x)\) 를 두 번 사용하고 있음을 주목하기 바랍니다.

Lemma 2.1 두 개의 확률변수 \(X_1\), \(X_2\)에 대하여 두 변수는 다음의 필요충분 조건을 만족시키면 동일한 확률 분포를 가집니다.

\[φX1(t)=φX2(t)\]

Theorem 2.3 \(X_1\), …, \(X_n\) 등이 독립적인 확률변수이고, \(a_1\), …, \(a_n\) 등이 상수이면, 다음의 선형 결합 \(S_n=\sum_{i=1}^na_iX_i\)의 특성 함수는 다음과 같습니다.

\[\varphi _{S_{n}}(t)=\prod_{i=1}^n\varphi _{X_i}(a_{i}t)=\varphi _{X_{1}}(a_{1}t)\cdots \varphi _{X_{n}}(a_{n}t)\]
Proposition 2.1 독립적인 포아송 확률 변수의 합 \(X_i \sim \mathrm{Pois}(\lambda_i),\: i=1,2,\cdots,n\)의 분포는 \(\mathrm{Pois}(\sum_{i=1}^n\lambda_i )\)입니다.

Proof. \(X\sim\mathrm{Pois}(\lambda)\)의 특성 함수는 \(\varphi _{X}(t)=e^{\lambda (e^{it}-1)}\)입니다. \(P_n=\sum_{i=1}^nX_i\)이라고 할 때, 정리 2.3로 부터 다음의 사실을 알 수 있습니다.

\[\begin{equation*} \begin{split} \varphi _{P_{n}}(t) & =\prod_{i=1}^n\varphi _{X_i}(t) \\ & =\prod_{i=1}^n e^{\lambda_i (e^{it}-1)} \\ & = e^{\sum_{i=1}^n \lambda_i (e^{it}-1)} \end{split} \end{equation*}\]

이것은 파라미터가 \(\lambda=\sum_{i=1}^n \lambda_i\)인 포아송 확률변수의 특성 함수입니다. Lemma 2.1로 부터, \(P_n\)의 분포는 \(\mathrm{Pois}(\sum_{i=1}^n\lambda_i)\)입니다.
Remark. 어떤 경우에는 특성 함수를 이용하여 독립적인 확률변수 합의 분포를 구하는 것이 매우 편리하고 쉽습니다.

Corollary 2.1 두 개의 독립적인 확률변수 \(X_1\)\(X_2\)의 합의 특성 함수는 \(X_1\)\(X_2\)의 특성 함수의 곱입니다. 즉,

\[\varphi _{X_1+X_2}(t)=\varphi _{X_1}(t) \varphi _{X_2}(t)\]
Exercise 2.1 (표본평균의 특성 함수) Let \(\bar{X}=\sum_{i=1}^n \frac{1}{n} X_i\)가 독립적이고 동일하게 분포하고(i.i.d) 각각의 특성 함수가 \(\varphi _{X}\)인 확률변수의 표본평균이라고 할 때, \(\bar{X}\)의 특성 함수를 구하시오.

Solution. 정리 2.3를 적용하면 다음과 같습니니다.

\[\varphi _{\bar{X}}(t)=\prod_{i=1}^n \varphi _{X_i}\left(\frac{t}{n}\right)=\left[\varphi _{X}\left(\frac{t}{n}\right)\right]^n\].

2.2.3 특수 헤더

bookdown에서 다르게 처리되는 몇 가지 특별한 유형의 첫 번째 수준 헤더가 있습니다.

첫 번째 유형은 (PART) 토큰으로 시작하는 번호가 지정되지 않은 헤더입니다. 이러한 종류의 헤더는 부(Part) 제목으로 번역됩니다. LaTeX에 익숙하다면 기본적으로\part{}를 의미합니다. 책에 많은 수의 장이 있는 경우 이를 여러 부분으로 구성할 수 있습니다.

# (PART) Part I {-} 

# Chapter One

# Chapter Two

# (PART) Part II {-} 

# Chapter Three

’Part I’의 첫번째 제목 바로 다음에 장 제목을 작성해야 합니다. Part의 제목에 번호를 매기면 안되는 경우 (PART) 대신 (PART\*) (*앞의 백 슬래시가 필요함)를 사용할 수 있습니다.

두 번째 유형은 (APPENDIX)로 시작하는 번호가 지정되지 않은 헤더로, 이 헤더 뒤의 모든 장이 부록임을 나타냅니다.

# Chapter One 

# Chapter Two

# (APPENDIX) Appendix {-} 

# Appendix A

# Appendix B

## Appendix 

부록의 번호 지정 스타일은 LaTeX / PDF 및 HTML 출력(일반적으로 A, A.1, A.2, B, B.1,… 형식)에서 자동으로 변경됩니다. 이 기능은 전자 책이나 Word 출력에는 사용할 수 없습니다.

2.2.4 텍스트 참조

일부 텍스트에 라벨을 할당하고 문서의 다른 곳에서 라벨을 사용하여 텍스트를 참조할 수 있습니다. 이것은 긴 그림/표 캡션 (섹션 2.42.5에 특히 유용할 수 있습니다. 이 경우 일반적으로 청크 헤더(예 :fig.cap = "A long long figure caption.') 또는 R 코드(예 :kable (caption = "A long long table caption."))에 전체 문자열을 작성해야만 합니다. 이러한 캡션에 특수 HTML 또는 LaTeX 문자가 포함된 경우에도 유용합니다. 예를 들어, 그림 캡션에 밑줄이 포함된 경우 HTML 출력에서는 작동하지만 LaTeX에서는 밑줄을 이스케이프해야 하므로 LaTeX 출력에서는 작동하지 않을 수 있습니다.

텍스트 참조의 구문은 (ref:label)text이며 여기서 labeltext 문서 전체에서 고유한 라벨입니다.6 위와 아래에 빈 줄이 있는 별도의 단락에 있어야 합니다. 단락은 여러 줄로 둘러 싸여서는 안되며 공백으로 끝나서는 안됩니다. 예를 들면

(ref:foo) Define a text reference **here**. 

그런 다음 그림/표 캡션에 (ref:foo)를 사용할 수 있습니다. 텍스트는 단일 단락이면 마크 다운이 지원하는 모든 것을 포함할 수 있습니다. 다음은 하나의 완전한 예입니다.

A normal paragraph.

(ref:foo) **base** R graphics를 이용한 `cars` 데이터의 산포도. 

​```{r foo, fig.cap='(ref:foo)'}`
plot(cars)  # a scatterplot
​````

텍스트 참조는 문서의 어디에서나 사용할 수 있습니다 (그림 캡션에 국한되지 않음). 여러 위치에서 텍스트의 일부를 재사용하려는 경우에도 유용할 수 있습니다.


  1. 위키피디아 페이지 https://en.wikipedia.org/wiki/Characteristic_function_(probability_theory)에서 일부 예를 발췌하였다.↩︎

  2. 코드 청크 라벨의 사용을 고려할 수 있습니다.↩︎