번역: TeX and LaTeX Support

원문: TeX and LaTeX Support

0. TeX, LaTeX 지원

 MathJax는 두 가지 기능이 포함되어있다. 첫 번째는 문서에서 수식 구문(ex: $$...$$)을 찾는 것이고, 두 번째는 Tex 표현식을 MathJax 내부 형식으로 변환하고 웹 페이지에 표시하는것 이다. 버전2 에서는 이 두 가지 기능이 tex2jax전처리기와 TeX input jax로 분리되어 있었지만, 버전3 에서는 통합되었다.

 TeX input jax는 원하는 수식 구문 마커를 찾도록 설정할 수 있다. TeX configuration options

 MathJax는 수식 구문을 MathJax 내부 형식(기본적으로 MathML)으로 변환한다. 또한 추가 기능을 위한 확장을 사용할 수 있다. TeX and LaTeX extensions

1. 실제 TeX와의 차이

 웹 표현을 위한 MathJax는 인쇄를 위한 TeX 지원에 한계가 있다. 그래서 실제 TeX/LaTeX와 MathJax의 TeX 입력에는 일부 차이점이 있다.

 우선, MathJax는 text모드 없이 오직 math모드만을 구현한다. 문서의 텍스트 처리는 표준 HTML 태그로 이루어져야 하고, MathJax는 수식 부분만 처리한다. 그러므로 MathJax는 \emph, \begin{enumerate}...\end{enumerate} 등의 text모드 매크로나 환경을 구현하지 못한다. 이러한 형식 지정 작업을 위해서는 HTML을 사용해야한다. LaTeX-to-HTML변환기가 필요하다면 MathJax 이외의 옵션을 고려해야한다.

 위 규칙에서 두 가지 예외가 있는데 첫째는 \ref 이고, 둘째는 $기호를 이스케이프 하기 위한 \text{}같은 매크로이다. 하지만 일반적으로 이러한 텍스트 블록 내에서 다른 매크로는 작동하지 않는다. 즉, \text{some \textbf{bold} text}는 "some \textbf{bold} text" 로 축력된다.

 버전3.1에서는 text모드 매크로를 위한 확장 기능이 있다.textmacros

 두 번째로, MathJax의 일부 기능은 제한될 수 있다.

2. TeX/LaTeX 수식 구문 마커

 MathJax에서 수식을 입력하는 방법은 display모드를 위한 \[...\], $$...$$와 text모드를 위한 \(...\) 가 있다. $...$를 text모드 입력 구문으로 사용하려면 아래처럼 설정해야한다.

1
2
3
4
5
window.MathJax = {
  tex: {
    inlineMath: [['$', '$'], ['\\(', '\\)']]
  }
};

 수식 내부에서 \begin{equation}...\end{equation} 같은 환경명령을 실행할 수 있게 설정할 수 있다.. (TeX Input Processor Options의 processEnvironments 설정)

 Tex 입력기의 추가 설정 방법: tex configuration options

3. HTML에서의 주의사항

3.1 HTML 특수기호

 MathJax 구문 안에서 <, >, & 를 입력하려면 앞뒤로 공백을 두거나 HTML entity 를 사용한다.

3.2 CMS와의 상호작용

CMS(Content-Management Systems: markdown 같은거)를 사용할 때는 이스케이프에 주의한다.

4. TeX 매크로 정의

 사용자 정의 매크로와 환경을 만들기 위해 수식구문 내에서 \def, \newcommand, \renewcommand, \newenvironment, \renewenvironment, \let 를 사용할 수 있다.

1
2
3
4
\(
   \def\RR
   \def\bold#1
\)

환경 설정을 통해 매크롤르 정의할 수도 있다.

1
2
3
4
5
6
7
8
window.MathJax = {
  tex: {
    macros: {
      RR: "{\\bf R}",
     bold: ["{\\bf #1}", 1]
    }
  }
};

configmacros Options

5. 자동 방정식 번호 지정

 기본적으로 꺼져있지만 아래 설정으로 활성화한다.

1
2
3
4
5
window.MathJax = {
  tex: {
    tags: 'ams'
  }
};

 notag또는 \nonumber로 개별적으로 번호를 끄거나, \tag{}로 수동 번호지정이 가능하다.

 ams 환경에서는 *로 번호를 끄고 켤 수 있다. 번호 O

1
2
3
\begin{equation}
   E = mc^2
\end{equation}

번호 X

1
2
3
\begin{equation*}
   e^{\pi i} + 1 = 0
\end{equation*}

 \label\ref 또는 \eqref로 방정식 참조하는법

1
2
3
4
5
6
7
In equation \eqref{eq:sample}, we find the value of an
interesting integral:

\begin{equation}
  \int_0^\infty \frac{x^3}{e^x-1}\,dx = \frac{\pi^4}{15}
  \label{eq:sample}
\end{equation}

tagformat 확장
Resetting Automatic Equation Numbering

6. TeX/LaTeX 확장

6.1. TeX 확장 로드

1
2
3
4
window.MathJax = {
  loader: {load: ['[tex]/color']},
  tex: {packages: {'[+]': ['color']}}
};
1
2
3
window.MathJax = {
  tex: {packages: {'[-]': ['require', 'autoload']}}
};

6.2. 런타임에 TeX 확장 로드

1
\(\require{color}\)

6.3. TeX 확장 설정

1
2
3
4
5
6
7
8
9
window.MathJax = {
  loader: {load: ['[tex]/color']},
  tex: {
    packages: {'[+]': ['color']},
    color: {
      padding: '5px'
    }
  }
};
1
2
3
4
5
window.MathJax = {
  '[tex]/color': {
    padding: '5px'
  }
};

7. TeX/LaTeX 확장 목록

  • action
  • ams
  • amscd
  • autoload
  • bbox
  • boldsymbol
  • braket
  • bussproofs
  • cancel
  • color
  • colorv2
  • configmacros
  • enclose
  • extpfeil
  • html
  • mhchem
  • newcommand
  • noerrors
  • noundefined
  • physics
  • require
  • tagformat
  • textmacros
  • unicode
  • verb

 커스텀 TeX 확장을 만들기 위해서는 A Custom Extension 참조.

8. TeX/LaTeX 명령어

Comment