아래 예제 코드는 한글 LaTeX 환경에서 작성되었습니다.
Murfy로 한글 LaTeX 작성을 처음 접하시는 분들이라면, 이전 챕터를 먼저 참고(0. LaTeX 작성 전, 함께 알아둬야 할 기초 개념)하시면 이해에 도움이 됩니다.
1. LaTeX 기본 환경 설정
문서의 시작과 끝
보고서, 수식, 프레젠테이션까지 모두 커버하는 LaTeX 환경 명령어 정리
LaTeX에서는 블록 단위 환경(environment)을 중심으로 문서를 구성합니다.
쉽게 말하면, 문서 안에서 “이 부분은 이런 형식로 보여줘!” 하고 명령하는 방법이에요.
환경 정의는 \begin{환경 이름}
과 \end{환경 이름}
을 한 쌍으로 사용하고,
그 사이에 적은 내용이 해당 환경의 스타일대로 표시되는 형식입니다.
\begin{환경 이름}
...
\end{환경 이름}
문서의 필수 뼈대
앞서 프리앰블(preamble)에서 설명했던 문서의 종류와 패키지 선언을 기억하시나요?
그 영역 아래로 문서의 ‘본문’을 담당하는 document 환경을 발견할 수 있습니다.
\documentclass[a4paper,12pt]{article} % 문서 종류, 용지, 글자 크기 설정
% (예시) 문서에서 사용할 패키지 불러오기
\usepackage{amsmath} % 수학 기호와 수식 지원
\usepackage{graphicx} % 이미지 삽입
\usepackage{hyperref} % 하이퍼링크
\title{New Paper} % 문서 제목
\author{Author} % 작성자 이름
\date{2025-01-01} % 날짜
% 여기 아래로 문서 본문 입력
\begin{document}
\maketitle % 제목, 이름, 날짜 출력
여기에 본문을 작성합니다.
\end{document}
\begin{document} … \end{document}는 문서를 작성하기 위한 필수 환경이에요.
이 안에서 글, 그림, 수식, 표 등이 실제 화면(또는 PDF)에 출력됩니다.
만약 document 환경이 없다면, LaTeX는 어디서부터 어디까지가 본문인지 알 수 없기 때문에 오류를 발생시킬 수 있으니 유의해 주세요!
중첩 환경
document 환경 안에서는 또 다른 환경을 마음껏 선언할 수 있습니다.
예를 들어, 본문 안에 목록을 추가하거나 수식을 작성하는 환경은 이렇게 중첩할 수 있어요.
\begin{document}
\begin{itemize}
\item 첫 번째 항목
\item 두 번째 항목
\end{itemize}
\begin{equation}
E = mc^2
\end{equation}
\end{document}
이와 같이 document 환경은 문서를 작성하기 위한 필수 선언이자 큰 틀의 역할이고,
그 안에서 다른 환경들을 블록처럼 쌓아가며 문서를 완성할 수 있습니다.
LaTeX에서 환경 정의를 어떻게 사용하는지 이해되셨나요?
아래에서는 자주 사용되는 LaTeX 환경을 사용 목적/예시와 함께 소개해 드릴게요!
✅
1. 문서 기본 요소
LaTeX로 문서를 작성할 때는 본문과 함께 문서의 얼굴이 되는 요소도 같이 챙겨야 합니다.
제목, 저자, 날짜, 요약문과 같은 것들이 바로 여기에 포함돼요.
환경 이름 | 설명 |
---|---|
document | LaTeX 문서의 실제 본문을 작성하는 가장 기본이자 필수 환경 (*필수 사용!) |
titlepage | 문서의 표지를 별도 페이지에 독립적으로 생성하는 환경 (제목, 저자, 날짜 등 포함) |
abstract | 논문, 보고서 등의 요약 부분을 작성하는 환경 |
titlepage 환경은 문서의 표지를 자유롭게 디자인할 수 있다는 장점을 가지고 있습니다.
연구 보고서나 과제물의 표지를 직접 꾸미고 싶을 때 유용하게 사용할 수 있어요.
반대로 간단히 제목만 출력하고 싶다면, document 환경 안에서 \maketitle
명령어를 사용할 수도 있습니다.
만약, 논문이나 리포트를 작성 중이라면 abstract 환경을 활용해 글의 핵심 내용을 요약해서 전달하는 것도 좋은 방법이에요.
💡
환경별 코드 예시를 참고하여 작성해 보세요.
| |
---|---|
| |
|
2. 인용, 참고문헌
인용문을 작성하거나 입력한 내용을 그대로 출력하는 환경도 있습니다.
LaTeX는 기본적으로 특수문자(\, {}, % 등)를 명령어로 해석하는데, 가끔은 이런 특수문자를 있는 그대로 출력해야 할 때가 생길 수 있어요. verbatim 환경은 코드나 텍스트를 해석하지 않고 있는 그대로 보여주는 환경입니다.
환경 이름 | 설명 | 패키지 |
---|---|---|
quote | 하나의 단락으로 구성된 인용문을 작성하는 환경 | - |
quotation | 여러 단락으로 구성된 긴 인용문을 작성하는 환경 | - |
verbatim | 특수문자나 명령어를 해석하지 않고, 있는 그대로 출력하는 환경 | verbatim |
thebibliography | 참고문헌 목록을 직접 작성할 때 사용하는 표준 환경 | - |
또한 BibTeX를 사용하지 않고 참고문헌을 작성하고 싶다면, thebibliography 환경을 선언해 직접 참고문헌 목록을 작성할 수 있어요.
하지만 BibTeX를 활용하는 방법이 훨씬 효율적이에요.
참고문헌을 별도의 파일에 모아두고, \cite
명령어를 통해 인용할 수 있어 편리합니다.
BibTeX와 관련해서는 추후 별도로 포스팅할 예정이니, 조금만 기다려 주세요!
💡
환경별 코드 예시를 참고하여 작성해 보세요.
| |
---|---|
| |
| |
|
3. 리스트 (목록)
문서를 작성하다 보면 “깔끔하게 목록으로 정리하고 싶다!” 하는 순간이 있지 않나요?
LaTeX에서는 상황에 맞게 골라 쓸 수 있는 몇 가지 목록 환경이 준비되어 있습니다.
환경 이름 | 설명 | 패키지 |
---|---|---|
itemize | 순서가 없는 리스트를 만드는 환경 | - |
enumerate | 순서가 있는 리스트를 만드는 환경 | - |
description | 각 항목마다 라벨이 붙은 리스트를 만드는 환경 | - |
list | 사용자 커스텀 리스트를 만드는 환경 (*리스트 커스텀 옵션 사용) | - |
특히, list 환경은 목록의 스타일을 조정 할 수 있는 고급 환경이에요.
“글머리 기호 위치를 옮길 수 없을까?” 같은 상황에서 빛을 발한답니다.
(커스텀 리스트를 만들기 위한 다양한 옵션은 하단에서 자세히 확인하실 수 있어요.)
💡
환경별 코드 예시를 참고하여 작성해 보세요.
| |
---|---|
| |
| |
|
4. 수식
수학이나 과학과 관련된 문서에서 복잡한 핵심 내용을 한 줄의 수식으로 정리하면 가독성이 좋아지고 문서가 정돈된 형태로 보일 거예요. LaTeX는 무엇보다도 수식을 깔끔하게 표현해 주는 도구이기 때문에, 아래와 같이 다양한 수식 환경을 지원하고 있어요.
환경 이름 | 설명 | 패키지 |
---|---|---|
align, align* | 여러 줄의 수식을 특정 기준으로 정렬해서 사용하는 환경 | amsmath |
aligned | 수식 환경 안에서 여러 줄을 정렬하는 환경 | amsmath |
equation, equation* | 하나의 독립된 수식을 작성하고, 번호를 붙여주는 환경 | amsmath |
gather, gather* | 여러 줄의 수식을 나란히 중앙 정렬로 사용하는 환경 | amsmath |
multline, multline* | 긴 수식을 여러 줄로 나눠서 보여주는 환경 | amsmath |
subequations | 하나의 주제에 속한 여러 개의 하위 수식에 공통 번호를 붙이는 환경 | amsmath |
math | 인라인 수식을 작성하는 환경 | - |
displaymath | 중앙 정렬된 블록 수식을 작성하는 환경 (equation* 환경과 같아요) | - |
split | 긴 수식을 여러 줄로 나눠서 정렬하는 환경 (equation 환경 안에서만 사용 가능) | amsmath |
cases | 조각별로 정의된 함수, 혹은 조건에 따라 다른 수식을 표현할 때 사용하는 환경 | amsmath |
특히 align, align*, aligned, split, cases 환경에서는 &
기호를 통해 원하는 위치를 수식의 정렬 기준으로 사용할 수도 있고, 여러 줄 활용이 가능한 환경에서는 //
명령어를 통해 줄바꿈을 처리할 수도 있습니다.
같은 환경 이름이라도 애스터리스크(*) 유무에 따라 수식 번호가 매겨지는지가 달라지기 때문에 문서의 성격이나 상황에 따라 원하는 방식을 적절히 사용하면 좋을 거예요.
여기서 잠깐! 수식 환경을 만들 수 있는 다른 명령어도 있습니다.
명령어 | 설명 | 패키지 |
---|---|---|
\[ …\] | 블록 단위의 수식 환경을 정의하는 명령어 | - |
\( … \) | 인라인 수식을 정의하는 명령어 | - |
$ … $ | 인라인 수식을 정의하는 명령어 | - |
명령어 기반의 수식은 환경 기반으로 작성하는 것보다 간단하고, 별도의 패키지 선언이 필요 없다는 장점을 가지고 있어요. 하지만 줄 번호나 정렬 기능을 사용할 수 없는 단점도 존재하니 참고해 주세요.
💡
환경별 코드 예시를 참고하여 작성해 보세요.
| |
---|---|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
5. 알고리즘
LaTeX에서 알고리즘 작성이 필요할 때에는 아래와 같은 환경을 사용할 수 있습니다.
algorithm 환경은 알고리즘 블록을 하나의 독립된 객체로 취급하고, 제목(caption)과 레이블(label)을 붙일 수 있어서 논문이나 보고서를 작성할 때 ‘알고리즘 1 참조’와 같이 간편한 인용이 가능하도록 도와줍니다.
그리고 위치 옵션인 [h], [t], [b]
등을 통해 문서 내 위치 조정도 가능해요.
(위치 옵션은 하단에서 자세히 설명해 드릴게요.)
algorithmic 환경의 경우, 알고리즘의 실제 내용을 단계별로 작성하는 부분이에요.
사람이 읽기 편한 의사 코드(pseudocode) 형식으로 정리되어 출력됩니다.
정리해보면, 문서에서 알고리즘을 작성하기 위해서는 algorithm과 algorithmic 환경을 함께 사용하고 각 환경을 사용할 수 있는 패키지도 추가해주어야 합니다.
환경 이름 | 설명 | 패키지 |
---|---|---|
algorithm | 알고리즘 전체 박스를 만드는 Float 환경
| algorithm |
algorithmic | 알고리즘 본문(내용)을 작성하는 환경 | algorithmic |
알고리즘 작성에 자주 사용되는 주요 명령어를 몇 가지 알려드릴게요.
만약, 하나 이상의 컴퓨터 언어를 알고 계시다면 어렵지 않게 이해하실 수 있어요.
\STATE
: 알고리즘의 한 단계(line)을 작성\IF … \ENDIF, \ELSEIF, \ELSE
: 조건문\FOR … \ENDFOR
: 반복문(루프)\WHILE … \ENDWHILE
: 조건이 참(true)일 때까지 실행되는 반복문\REPEAT … \UNTIL
: 최소 1번은 실행되는 반복문\RETURN
: 알고리즘의 반환 결과\REQUIRE
: 입력 조건 작성\ENSURE
: 출력 조건 작성\PRINT
: 출력\COMMENT
: 알고리즘 내 주석
💡
환경별 코드 예시를 참고하여 작성해 보세요.
| |
---|---|
|
6. 표, 행렬, 정렬
가끔은 문서 안에서 데이터를 체계적으로 배치해야 할 때가 생깁니다.
이럴 때는 표(table)나 행렬(matrix)을 활용하면 훨씬 수월해요.
tabular를 사용하거나 table 환경과 조합하여 구조화된 표를 만들 수 있고,
행렬에서는 괄호 모양에 따라 다양한 스타일을 선택할 수 있습니다.
환경 이름 | 설명 | 패키지 |
---|---|---|
tabular | 기본적인 표(table)를 만드는 환경 (*열 정렬 옵션 사용) | - |
table | 표 전체를 하나의 객체로 감싸기 위한 환경 (*위치 지정자 옵션 사용) | - |
array | 수식 안에서 행과 열을 사용해 표(table)처럼 만드는 환경 (*열 정렬 옵션 사용) | amsmath |
환경 이름 | 설명 | 패키지 |
---|---|---|
matrix | 수식 안에서 괄호 없이 행렬을 만드는 환경 | amsmath |
bmatrix | 대괄호([ ])로 감싼 행렬을 만드는 환경 | amsmath |
Bmatrix | 중괄호({ })로 감싼 행렬을 만드는 환경 | amsmath |
pmatrix | 소괄호(( ))로 감싼 행렬을 만드는 환경 | amsmath |
Vmatrix | 세로선(||)으로 감싼 행렬을 만드는 환경 | amsmath |
vmatrix | 이중 세로 선(|| ||)으로 감싼 행렬을 만드는 환경 | amsmath |
center | 텍스트나 수식을 문서 가운데 정렬하는 환경 | - |
💡
환경별 코드 예시를 참고하여 작성해 보세요.
| |
---|---|
| |
| |
| |
| |
| |
| |
| |
| |
|
7. 그림과 프레임
마지막으로, 문서에 시각 자료를 포함하면 연구 보고서나 기술 문서에서 자료를 효과적으로 전달할 수 있겠죠! 대표적으로 figure 환경이 그 역할을 하고 있습니다.
그림 파일을 삽입하고, 제목과 설명을 덧붙여 문서에서 위치를 조정할 수도 있어요.
환경 이름 | 설명 | 패키지 |
---|---|---|
figure | 문서에 이미지를 삽입하고, 자동으로 번호와 캡션을 붙이는 환경 (*위치 지정자 옵션 사용) | graphicx |
subfigure | 여러 개의 하위 그림을 배치하고 개별 캡션을 작성하는 환경 (figure 환경 안에서 사용) | subcaption |
frame | 슬라이드(프레젠테이션)를 프레임으로 만드는 환경 | beamer 클래스
|
framed | 텍스트나 수식의 문단 전체를 박스로 감싸는 환경 | framed |
minipage | 특정 영역을 만들어 별도로 정렬 또는 제어할 수 있도록 레이아웃을 분할하는 환경 | - |
picture | 직접 벡터 그래픽 요소(점, 선, 텍스트 등)를 그릴 수 있는 환경 | - |
tikzpicture | 직선, 곡선, 도형, 노드, 다이어그램, 그래프, 흐름도 등을 그릴 수 있는 TikZ 그래픽 환경 (*그리기 옵션 사용) | tikz |
💡
환경별 코드 예시를 참고하여 작성해 보세요.
| |
---|---|
| |
| |
| |
| |
| |
|
다양하게 활용되는 여러가지 옵션들
1. 리스트 커스텀 옵션
LaTeX에서 리스트를 만들 때, 커스텀 할 수 있는 다양한 옵션을 알려드릴게요.
아래 옵션들은 \setlength, \addtolength
등의 명령어와 함께 쓰이며, 별도의 추가 패키지 없이도 리스트를 자유롭게 디자인할 수 있습니다.
또한 글 머리 기호를 변경할 수 있는 옵션도 함께 정리되어 있어요.
옵션 | 설명 |
---|---|
\leftmargin | 항목 전체의 왼쪽 여백 설정 |
\rightmargin | 항목 전체의 오른쪽 여백 설정 |
\itemsep | 각 항목(item) 사이의 간격 설정 |
\topsep | 리스트의 시작 전과 끝난 후의 간격 설정 |
\labelwidth | 라벨(글 머리 기호나 번호 등)의 폭 설정 |
\labelsep | 라벨과 해당 항목의 텍스트 사이의 간격 설정 |
\parsep | 한 항목 안에서 여러 문단이 있을 때, 문단 사이의 간격 설정 |
\partopsep | 목록이 새로운 단락의 바로 뒤에 나올 때 추가되는 여백의 크기를 설정 |
\itemindent | 항목 첫 줄의 들여쓰기 크기를 설정 |
옵션 | 설명 |
---|---|
\textbullet | 기본 동그라미 모양(•)의 불렛 |
\textendash | 짧은 대시(-) 모양의 불렛 |
\textasteriskcentered | 별표(*) 모양의 불렛 |
$\star$ | 별 모양(★)의 불렛 |
$\bullet$ | 기본 동그라미 모양(•)의 불렛 |
$\circ$ | 빈 동그라미 모양(○)의 불렛 |
$\triangleright$ | 오른쪽 화살표 삼각형 모양(▷)의 불렛 |
\begin{list}{$\star$}{%
\setlength{\leftmargin}{2em}
\setlength{\itemsep}{0.5em}
\setlength{\topsep}{1em}
\setlength{\labelwidth}{1em}
\setlength{\labelsep}{0.5em}
}
\item 첫 번째 항목
\item 두 번째 항목
\end{list}
만약 사용 방법이 너무 복잡하고 번거롭다고 느껴진다면, enumitem 패키지를 사용하는 것을 추천드려요.
짧고 직관적이기 때문에 현대 LaTeX 문서 작성에서 가장 많이 사용되는 형태입니다.
\usepackage{enumitem}
\begin{itemize}[leftmargin=2em, itemsep=0.5em, labelsep=1em]
\item 첫 번째
\item 두 번째
\end{itemize}
2. 위치 지정자 옵션
위치 지정자 옵션은 순서에 상관없이 여러 옵션을 조합해서 사용할 수 있습니다.
원하는 옵션을 자유롭게 조합해서 테스트 해보세요! (e.g. [htbp]
)
옵션 | 설명 | 패키지 |
---|---|---|
h | 가능한 현재 위치(here)에 배치 | - |
H | 정확하게 현재 위치에 배치 | float |
t | 페이지 상단(top)에 배치 | - |
b | 페이지 하단(bottom)에 배치 | - |
p | 그림이나 표 전용 페이지를 만들어 배치 (page of floats) | - |
3. 열 정렬 옵션
tabular 환경처럼 표(table)를 만들 때, 열(column)을 어떻게 배치할지 고민된다면 아래 열 정렬 옵션을 활용해 데이터를 배치를 원하는 형태로 바꿔보세요.
옵션 | 설명 |
---|---|
l | 왼쪽 정렬 (left) |
r | 오른쪽 정렬 (right) |
c | 가운데 정렬 (center) |
| | 세로줄 구분선 |
4. 그리기 옵션
TikZ과 같은 고도화된 그래픽 환경에서는 다양한 그리기 옵션을 지원합니다.
사용할 때는 tikz 패키지가 필요하다는 걸 기억해 주세요!
옵션 | 설명 |
---|---|
\draw | 선, 도형, 경로 그리기 |
\node | 라벨, 텍스트 노드 삽입 |
\fill | 채워진 도형 그리기 |
\path | 경로 정의 |
\coordinate | 좌표 지정 |
지금까지 LaTeX에서 자주 사용되는 환경들과 해당 환경에서 사용할 수 있는 옵션을 다양한 카테고리별로 정리하며 알아봤습니다.
처음 사용해 보는 입장에서 아주 낯설 수 있지만, 실제로 손에 익으면 문서 작성이 훨씬 정확하고 깔끔해진답니다. 이 글을 참고해 필요한 명령어를 빠르게 찾아보고, Murfy 에디터에 붙여 넣어 렌더링 된 화면을 확인해 보세요!
다음 포스트에서는 실제 논문 예제를 기반으로, 문서를 여러 개의 파일로 구성할 수
있는 명령어를 다뤄보겠습니다.