LaTeX을 써보자 - TeX Live, vscode, LaTeX Workshop

LaTeX을 써보자 - TeX Live, vscode, LaTeX Workshop

리눅스에선 MS office 못써?

“네. MS office 못씁니다.”

처음 리눅스를 접한 나에게 이건 아주 큰 문제였다. Powerpoint로 발표자료도 만들어야 하고, word로 논문도 써야되는데 말이다. 처음엔 이걸 어떻게 해야하나 고민을 많이했다. 그래서 이렇게 문서작업을 했었다.

  1. 개인적으로 사용하는 발표준비와 문서작업에는 libreoffice 사용하기
  2. 다른 사람들과 공유해야하는 작업은 office365QEMU를 통해 설치한 가상 윈도우에서 처리하기

Libreoffice를 통한 프레젠테이션 준비: powerpoint와 거의 똑같다. ppt 파일을 읽고 저장할 수 없단 것만 빼면...
Libreoffice를 통한 프레젠테이션 준비: powerpoint와 거의 똑같다. ppt 파일을 읽고 저장할 수 없단 것만 빼면…
Office 365 프레젠테이션 작업
Office 365 프레젠테이션 작업

그래 뭐… 이 정도로 얼추 사용은 가능하다. 맥에서 하던 방식과 거의 똑같다. 그러나, 결국엔 몇 가지 문제들 때문에 완벽히 만족할 수 없었다.

  1. Libreoffice 프레젠테이션과 문서의 확장자는 .odp.odf다. ppt와 word로 확장자 간 변환을 지원하지만, 변환을 하면 디자인이 이리저리 조금씩 틀어진다. 나 혼자 쓸때는 괜찮지만 다른 사람과 공유하는 작업에서는 많이 피곤해질 수 있다.

  2. 인터페이스나 기능이 묘하게 MS office와 달라서 이질감이 있다. 예를들어, 프레젠테이션을 만들 때 기존에 만들어준 슬라이드 마스터 양식을 가져오는 방식이 powerpoint와는 다른 방식으로 동작한다. (이게 생각보다 많이 거슬렸다.)

  3. Powerpoint에서 .odp를 완벽하게 지원하지 않아서, 발표자료는 항상 pdf로 저장하여 들고다녀야 한다.

  4. 웹 버전 office365는 슬라이드 마스터 기능을 지원하지 않는다. 즉, 새 슬라이드 만들 때 이미 디자인된 슬라이드를 복사해서 써야하고, 디자인을 바꾸려면 한 장씩 수동으로 바꿔야 한다는 말이다.

음… 일단, 다른 사람과 공유하는 작업들은 어쩔 수 없이 윈도우가 필요하니까 그건 가상머신으로 처리하기로 했다. 대신 내 개인적으로 사용하는 발표자료 제작, 논문작업 그리고 문서작업엔 LaTeX를 사용하기로 결정했다. 그러는 편이 오히려 더 깔끔하게 이런 문제들로부터 탈출할 수 있는 방법이라고 생각했다.

LaTex의 진입 장벽이 높다고들 말한다. 맞다. 높은 편이다. 그런데, 한번 그 장벽을 넘어서면 다신 word와 한글을 사용한 문서작업(특히 논문작업)으로 돌아갈 수 없더라. 익숙해지면 익숙해질수록 작업 효율은 더욱 올라간다. 특히, 논문처럼 대량의 구조화된 문서 작업에 특화되어 있단 점에서 더욱 그렇다.

그러니 속는 샘 치고 일단 LaTeX을 한번 사용해보도록 하자.

LaTeX 사용 환경의 종류

LaTeX 환경은 두 개로 구분해볼 수 있다.

  1. Overleaf 와 같은 온라인 LaTeX 에디터
  2. PC에 직접 LaTeX을 설치하고 사용

1번은 웹 데이터 상에서 LaTeX를 작성할 수 있는 환경을 제공하는 서비스인 Overleaf를 사용하는 방식이다. 내가 설치할 건 하나도 없다. 그냥 가입 후 새 프로젝트를 열고 작성하면 된다. 그만큼 사용이 아주 간단하다.

그러나, 논문이나 문서에 사용할 이미지들을 overleaf 서버에 업로드해야 한다는 점은 보안 관점에서 조금은 찝찝한 기분이 들게 한다. 또한, 이미지를 조금이라도 수정했다면 그때마다 수정본을 매번 업로드 해줘야한다는 번거로움이 있다.

2번은 내 PC에 직접 LaTeX 작성 환경을 구축하는 것이다. 설치 용량이 좀 큰 편이라 오래 걸린다는 단점은 있다.

그러나 내가 작성하는 글과 이미지를 내 PC에 보관할 수 있기 때문에 보안 측면에서 좀 더 안전하다고 볼 수 있다. 그리고 vscode같은 에디터를 사용할 수 있기 때문에, 글 작성 과정에 코드 자동 완성 기능을 사용할 수 있다. (overleaf는 코드 자동 완성이 없었던 걸로 기억한다.) 또한, git을 연동하여 버전 컨트롤이 가능하단 점도 매우 큰 장점이다.

두 방식 중 고민이라면, 일단 1번을 통해 LaTeX을 찍먹해보는 것도 좋다. 나도 그랬다. 그러나, 여러 측면에서 2번을 고려할 날이 오더라.

PC에 LaTeX 환경 구축하기

Linux-native-project이니까 당연히 리눅스 환경을 가정한다.

TeX 환경 구축에는 TeX Live를 사용한다. 이를 제공하는 TUG (TeX User Group) 공식 사이트에선 이렇게 설명하고 있다.

TeX Live is intended to be a straightforward way to get up and running with the TeX document production system. It provides a comprehensive TeX system with binaries for most flavors of Unix, including GNU/Linux and macOS, and also Windows. It includes all the major TeX-related programs, macro packages, and fonts that are free software, including support for many languages around the world. Many Unix/GNU/Linux operating systems provide TeX Live via their own distributions and package managers. TeX Live is supported by the TeX Users Group and many other user groups around the world.

TeX Live는 TeX 문서 제작을 위한 시스템을 제공하는 것을 목표로 하고 있으며, 주요 TeX 관련 프로그램, 매크로 패키지, 다국어 폰트들을 포함한 설치를 진행한다.

정리하면, 이거 하나면 TeX 문서 제작 시스템을 갖출 수 있단 의미다. (각 linux distribution의 패키지 매니저를 통해 설치도 가능하나, 그 과정에 여러모로 오류를 겪었던터라 개인적으로 추천하지 않는다.)

TeX Live 설치

TeX Live 설치 페이지 에서 install on Unix/GNU/Linux를 클릭한다.

install on Unix/GNU/Linux를 눌러주자
install on Unix/GNU/Linux를 눌러주자

그러면 설치 방법을 설명하는 페이지가 나온다. 설치를 위한 옵션을 선택하는 것도 가능하지만, 나중에 추가로 또 패키지 설치하는 귀찮은 일을 만들지 않기 위해 default 그대로 모든 패키지를 설치한다.

이를 위해 tl;dr: Unix(ish)의 순서를 하나씩 따라가주자. 5번째 단계에서 시간이 몇 시간 소요될 것이다. (나는 3시간 가량 걸린 것 같다.) 켜놓고 끝나길 기다려준다.

tl;dr: Unix(ish) 목록
tl;dr: Unix(ish) 목록

환경 변수 설정

설치가 완료되었으면 마지막으로 6번 단계를 수행한다. 6번은 익히 알고있는 환경 변수를 추가하는 과정이다.

우리가 편집에 사용할 VS code LaTeX Workshop은 환경 변수가 제대로 잡혀있지 않으면 계속 컴파일 오류를 뱉어낸다. 그러니 정확하게 설정해주자. 환경 변수를 설정하는 방법은 archwiki: Environment variables 를 참고하자.

나는 ~/.xprofile에 다음처럼 경로를 추가해주었다.

~/.xprofile
# 기존 PATH의 가장 앞 단에 texlive 경로를 추가하고 export
export PATH="/usr/local/texlive/2025/bin/x86_64-linux:${PATH}"

LaTeX Workshop 설치

VS code가 설치되어있다고 가정하고, 곧바로 LaTeX Workshop extension을 설치해보자.

Extension 검색창에 latex이라고 검색하면 James Yu라는 분이 만든 LaTeX Workshop이 나타난다. 이걸 설치해주자.

LaTeX Workshop을 검색하고 설치하자.
LaTeX Workshop을 검색하고 설치하자.

재부팅

자, 이걸로 LaTeX과 에디터 설치가 완료되었다. 환경 변수가 반영되도록 재부팅을 한번 해주자.

LaTeX 사용 맛보기

문서를 저장할 경로 만들기

LaTeX은 .tex을 컴파일해서 .pdf를 최종적으로 출력한다. 그 과정에 여러 중간 파일들이 생성되는터라 조금 지저분해 보인다. 그러니 각 문서별로 별도의 경로를 만들어주는 것이 좋다.

나는 다음과 같은 경로를 만들고 sample.tex 파일을 생성해주었다.

bash
mkdir -p ~/latex/sample
touch ~/latex/sample/sample.tex

VS code에서 작업 경로 열기

VS code에서 Open Folder로 방금 생성한 ~/latex/sample 경로를 열어주자. 그러면 아래와 같이 sample.tex 파일이 보인다.

Open Folder로 방금 생성한 경로를 열어주자.
Open Folder로 방금 생성한 경로를 열어주자.
미리 생성한 `sample.tex` 파일이 보인다.
미리 생성한 sample.tex 파일이 보인다.

sample.tex를 열고 문서 작성하기

경로에 보이는 sample.tex을 열고 다음의 내용을 붙여넣어주자.

\documentclass[11pt]{beamer}
\usepackage[utf8]{inputenc}
\usepackage[cjk]{kotex} % for writing korean characters
\CJKscale{1} % korean font scale setting

\usepackage{tikz} % for image placement
\usepackage{pifont} % for using special characters e.g)\ding{228}
\usepackage{hyperref}

\usepackage{amsmath, amssymb}
\usepackage[ruled, vlined, linesnumbered]{algorithm2e}

\usepackage{graphicx}
\graphicspath{{images/}} % image base directory

\usepackage{bookman} % used font
\usetheme{Madrid} %Madrid, Boadilla

\usecolortheme{default}
\setbeamertemplate{endpage}{
  \begin{frame}
    \centering
    \huge
    \emph{Thank you\\for listening!\\:-)}
  \end{frame}
}

\linespread{1.1} % line distance.

\title{테스트 문서}
\subtitle{이것은 LaTeX 테스트를 위한 beamer 예제 입니다.}

\author{Will}
\institute[Linux on Top]
{
Linux on Top
}

\date{18th Jul, 2025}

\AtBeginSection[]
{
  \begin{frame}
    \frametitle{Table of Contents}
    \tableofcontents[currentsection]
  \end{frame}
}

\begin{document}
\frame{\titlepage}

\begin{frame}
\frametitle{Table of Contents}
\tableofcontents
\end{frame}

\section{OOD detection with MaxLogit}
\begin{frame}[t]
    \frametitle{Abstract}
    \begin{itemize}
        \item Scale의 개념 분류
        \begin{itemize}
            \item class의 수
            \item 이미지의 크기(해상도)
        \end{itemize}
        \item 발생하는 문제
        \begin{itemize}
            \item class confidence disperse 문제 발생
            \item multi-label 문제 발생.
        \end{itemize}
        \item 이는 Anomaly score을 사용하는 OOD detection 접근방법에서도 문제를 유발함.
    \end{itemize}
    \vfill
\end{frame}

\section{OOD detection}
\begin{frame}[t]
    \frametitle{OOD detection}
    \begin{itemize}
        \item Detecting anomaly sample that is not in-distribution.
        \item Processes to deal with OOD
        \begin{enumerate}
            \item Detecting OOD
            \item OOD에 입력에 대한 대응 수행
            \item 강건한 모델로의 변화(모델 강화, 재학습 등)
        \end{enumerate}
    \end{itemize}
    \vfill
\end{frame}

\begin{frame}[t]
    \frametitle{OOD detection with MaxLogit}
    \begin{itemize}
        \item 기존 연구는 negative MSP를 anomaly score로 사용
        \item 그러나, MSP의 한계로 large-scale dataset에서 성능 저하
        \item 대신, negative maximum unnormalized logit을 사용하면 성능 향상 확인.
    \end{itemize}
    \vfill
    \begin{block}{Negative MSP}
        $-\max_k \frac{\exp f(x)_k}{\sum_i \exp f(x)_i} = -\max_k \hat{p}(y = k \mid x),$ where $ f(X)$ is logit function
    \end{block}
    \begin{block}{Negative MaxLogit}
        $-\max_k f(x)_k,$ where $ f(X)$ is logit function
    \end{block}
\end{frame}

\usebeamertemplate{endpage}
\end{document}

컴파일하기

우측 상단의 재생버튼(?)을 눌러 컴파일을 진행해주자. 그러면, 왼쪽 Explorer에 중간 생성파일들과 결과인 .pdf 파일이 만들어진다.

재생 버튼을 눌러 컴파일해주자.
재생 버튼을 눌러 컴파일해주자.
중간 파일과 결과 파일이 생성된다.
중간 파일과 결과 파일이 생성된다.

최종 생성된 결과는 다음과 같다.

코드와 pdf 병렬로 보면서 작업하기

컴파일까지 잘 되었다면 만들어진 pdf 파일을 직접 pdf reader로 열어서 보면 된다. 그러나, 문서를 작성하는 과정에 실시간으로 바뀌는 것을 확인할 수 있어야 작업 효율이 좋지 않을까?

그래서 그런 기능을 LaTeX Workshop이 제공한다. 아래 그림의 버튼을 눌러주자.

병렬 보기 버튼
병렬 보기 버튼

짜잔, 그러면 좌측엔 코드, 우측엔 pdf 파일 미리보기가 제공된다. 그리고 save를 해주면 실시간으로 컴파일하여 우측 pdf 화면에 반영이 된다.

저장과 동시에 우측 pdf에 반영되는 것을 볼 수 있다.
저장과 동시에 우측 pdf에 반영되는 것을 볼 수 있다.

마치며

이번 포스팅에서 우리는 LaTeX을 설치하고, 문서 작성을 위한 환경을 구축했고, 마지막으로 LaTeX beamer 문서를 만들고 컴파일해보았다.

지금부터 여러분들이 할 일은 tex 문법을 익히고, 입맛에 맞게 article, beamer 문서를 작성해보는 것이다. 그 과정은 굉장히 고통스러울 수 있지만, 우리에겐 ChatGPT가 있으니 과거에 먼저 그 길을 걸은 사람들보다 훨씬 수월할 것이다.

건승을 빈다.

Last updated on