자주 쓰는 LaTeX newcommand 모음

written by jjycjn   2015. 11. 3. 15:32

LaTeX으로 문서를 작성하다 보면 (상대적으로 길이가 긴) 같은 수식을 여러면 반복해서 써야할 경우가 있다. 예를 들어, 극한 기호가 포함된 다음 수식 $\lim_{n \to \infty} a_n$을 입력하려고 할때마다 $\lim_{n \to \infty} a_n$ 라는 말을 매번 써줘야 한다. 이렇게 자주 쓰는 수식들은 LaTeX의 전처리부에 newcommand 명령을 이용하여 매크로로 지정해 두면, 간단한 명령어로 (예를 들어, \limit 를 이용하여) 위에 예로 든 긴 수식을 대체할 수 있다.


newcommand 명령의 구조는 다음과 같다.

\newcommand{<name>}[<num>][<defalt>]{<definition>}
    • {<name>} - 해당 command를 대표하는 이름을 지정한다. 이 때, <name>은 영문 대문자와 소문자만으로 구성해야 한다.
    • [<num>] - 해당 command에 parameter의 개수를 나타낸다. <num>에는 반드시 숫자가 와야하며, 만약에 특별히 parameter를 지정하지 않으려면 [<num>][<defalt>] 부분 전체를 생략해도 된다.
    • [<defalt>] - parameter의 개수가 1 이상일 때, 첫번째 parameter의 기본값을 정의한다.
    • {<definition>} - 해당 command가 출력 할 실제 코드를 입력한다. 만약에 <num> 값이 3이 라면 <definition> 부분에 3개의 parameter 값이 들어 갈 위치에 차례로 #1, #2, #3를 입력해 주면 된다. 


전처리부에 위의 newcommand 명령어를 이용하여 매크로를 정의하고, 실제로 사용할 때에는 (예를 들어 <num> 값이 3인 경우)

\name{<2nd parameter>}{<3rd parameter>}

를 입력하면, 첫번째 parameter 부분은 defalt에 입력한 기본값이 출력되고, 나머지 두번째, 세번째 parameter는 실제로 입력한 코드가 출력된다.

\name[<1st parameter>]{<2nd parameter>}{<3rd parameter>}

를 입력하면, 첫번째 parameter 부분도 defalt 값이 아닌 실제로 입력한 코드가 출력되게 할 수 있다. 이때, 첫번째 parameter은 [ ]로 감싸 주고 나머지 모든 parameter들은 { }로 감싸 주어야 한다는 사실을 주의하자. 또한 내가 원하는 newcommand의 <name>이 이미 LaTeX 내에서 미리 정의된 명령어와 같다면, 코드를 출력하는 과정에서 에러가 난다. 이를 방지하기 위해 <name>을 정할 때에는, LaTeX 내에서 미리 정의된 명령어와 다른 것을 사용하거나 newcommand 명령어 대신에 renewcommand 명령어를 사용해야 한다. (이 때, renewcommand 명령어를 사용하면 미리 정의된 명령어는 무시되고 새롭게 정의한 명령어가 사용된다.)


예를 들어 $\lim_{n \to \infty} a_n$을 newcommand 명령어를 이용하여 매크로로 만들어 보자.

\newcommand{\limit}{\lim_{n \to \infty} a_n}

위 코드를 LaTeX 전처리부에 입력해 두면, 원래의 긴 명령어 대신에 간단히 $\limit$를 입력하는것 만으로 똑같은 결과를 얻을 수 있다. 이제 argument를 이용하여 위의 매크로를 좀더 확장해 보자. 예를 들어, $\lim_{n \to \infty} a_n$에서 수열 a_n 부분을 parameter로 지정하고, (그래서 내가 원하는 임의의 수열을 입력할 수 있도록 하고) 이 parameter의 defalt 값은 a_n으로 지정해 보자.

\newcommand{\limit}[1][a_n]{\lim_{n \to \infty} #1}

위 코드를 LaTeX 전처리부에 입력해 두면, $\limit$ 만을 입력했을 때에는, $\lim_{n \to \infty} a_n$가 표시되고, $\limit[n^2+1]$ 과 같이 \limit 위에 [ ] 안에 내가 원하는 parameter를 입력해 주면, $\lim_{n \to \infty} n^2+1$ 이 출력 된다. 위의 예제를 포함하는 LaTeX 코드는 아래에서 확인할 수 있다.




위와 같은 방법으로 평소에 LaTeX 문서를 작성할 때, 자주 쓰기는 하지만 매번 쓰기 번거로운 수식들을 newcommand 명령어를 이용하여 매크로화 시켜 놓았다. 아래는 그 리스트이다.

%----------------------------------------------------------------------------------------
%    Commonly Used Symbols
%----------------------------------------------------------------------------------------

% transpose
\newcommand{\T}{\mathsf{T}}
% inner product
\newcommand{\ip}[2]{\left< #1,\, #2 \right>}
% absolute value
\newcommand{\abs}[1]{\left\lvert #1 \right\rvert}
% norm
\newcommand{\norm}[1]{\left\lVert #1 \right\rVert}
% bar over text (to replace \bar and \overline)
\newcommand{\mybar}[1]{\mkern 1.5mu \overline{\mkern -1.5mu #1 \mkern -1.5mu} \mkern 1.5mu}
% hat over text (to replace \hat and \widehat)
\newcommand{\myhat}[1]{\mkern 1.5mu \widehat{\mkern -1.5mu #1 \mkern -1.5mu} \mkern 1.5mu}
% tilde over text (to replace $\tilde and \widetilde)
\newcommand{\mytilde}[1]{\mkern 1.5mu \widetilde{\mkern -1.5mu #1 \mkern -1.5mu} \mkern 1.5mu}


%----------------------------------------------------------------------------------------
%    Spaces
%----------------------------------------------------------------------------------------

% the set of all natural numbers
\newcommand{\N}{\mathbb{N}}
% the set of all real numbers
\newcommand{\R}{\mathbb{R}}
% the set of all real n-dimmensional vectors
\newcommand{\Rn}{\mathbb{R}^{n}}
% the set of all complex numbers
\newcommand{\C}{\mathbb{C}}
% the set of all complex n-dimmensional vectors
\newcommand{\Cn}{\mathbb{C}^{n}}


%----------------------------------------------------------------------------------------
%    Calculus
%----------------------------------------------------------------------------------------

% sum over n from 1 to infinity
\newcommand{\series}{\sum_{n=1}^{\infty} a_n}
% limit as n approaches to infinity
\newcommand{\limit}{\lim_{n \to \infty}}
% ordinary derivative
\newcommand{\derivative}[2]{\frac{d#1}{d#2}}
% partial derivative
\newcommand{\pderivative}[2]{\frac{\partial #1}{\partial #2}}


'Others > LaTeX' 카테고리의 다른 글

MathJax 환경에서 수식에 색을 넣는 방법  (1) 2017.08.12
LaTeX 기호 모음  (7) 2015.10.28
수학의 분야 (Branch of Mathematics)  (1) 2014.07.20
  ::  
  • 공유하기  ::