Awesome LaTeX Drawing: 학술 연구자를 위한 고품질 LaTeX 학술용 도표 예제 모음 저장소

Awesome LaTeX Drawing 소개

Awesome LaTeX DrawingXinyu Chen이 논문 작성이나 학술 발표 자료를 준비하는 연구자와 엔지니어를 위해, LaTeX로 작성된 고품질 도표(Figure)와 다이어그램의 소스 코드를 모아놓은 큐레이션 저장소입니다. 컴퓨터 공학, 특히 기계 학습(Machine Learning)이나 통계학 분야의 논문을 작성할 때 연구자들은 수식과 텍스트의 조판을 위해 LaTeX를 표준으로 사용하지만, 정작 논문에 들어가는 복잡한 모델 구조도나 데이터 시각화 자료를 만드는 데에는 큰 어려움을 겪습니다. 파워포인트나 비지오(Visio) 같은 외부 도구를 사용하면 논문 본문과 폰트 스타일이 달라 이질감이 들거나, 확대했을 때 해상도가 깨지는 문제가 발생하기 때문입니다.

이 프로젝트는 이러한 문제를 해결하기 위해 베이지안 네트워크(Bayesian Networks), 텐서 분해(Tensor Decomposition), 그래피컬 모델(Graphical Models) 등 학계에서 빈번하게 사용되지만 직접 코드로 그리기에는 진입 장벽이 높은 30여 개 이상의 도표 예제들을 제공합니다. 단순한 그림 파일이 아니라, 컴파일 가능한 .tex 소스 코드를 그대로 제공한다는 점이 가장 큰 특징입니다. 사용자는 이 코드를 복사하여 자신의 연구 데이터나 모델 구조에 맞게 노드(Node)의 위치나 레이블(Label)만 수정함으로써, 출판 가능한 수준(Publication-ready)의 벡터 그래픽을 즉시 얻을 수 있습니다.

특히 Awesome LaTeX Drawing 저장소는 단순한 예제 모음을 넘어, IEEE Transactions on Pattern Analysis and Machine Intelligence (TPAMI)나 Transportation Research Part C 등 저명한 저널에 실제로 게재된 논문들에 사용된 그림들을 예시로 포함하고 있습니다. 이는 제공되는 코드들이 실제 학술적 엄밀성을 갖춘 환경에서 검증되었음을 의미하며, 복잡한 3차원 텐서 구조나 시계열 데이터의 흐름을 표현하고자 하는 연구자들에게 실질적인 템플릿 역할을 수행합니다. 모든 예제는 Overleaf와 같은 온라인 LaTeX 편집기에서 즉시 실행해 볼 수 있도록 구성되어 있어 접근성이 매우 높습니다.

보통의 연구자들이 사용하는 Microsoft PowerPoint나 Visio, Adobe Illustrator와 같은 GUI 기반 도구들은 마우스로 드래그 앤 드롭하여 빠르게 도표를 그릴 수 있다는 직관적인 장점이 있습니다. 그러나 이러한 도구로 생성된 이미지는 LaTeX 문서에 삽입되었을 때 본문의 수식 폰트(Computer Modern 등)와 미묘하게 다른 타이포그래피를 보여 문서의 통일성을 해치기 쉽습니다. 또한, 래스터 이미지(PNG/JPG)로 저장할 경우 인쇄 시 흐릿해지거나, 벡터 이미지(PDF/EPS)로 내보내는 과정에서 호환성 문제가 발생하기도 합니다. 반면 Awesome LaTeX Drawing이 제공하는 방식은 LaTeX 내부의 TikZ 엔진을 직접 사용하므로, 문서의 폰트 설정, 수식 렌더링 방식, 선 굵기 등이 본문과 완벽하게 일치하는 미려한 결과물을 보장합니다.

또한, Python 기반의 시각화 도구들과도 비교해볼 수 있습니다. 예를 들어, Python에는 확률적 그래피컬 모델(PGM)을 그리기 위한 Daft와 같은 훌륭한 라이브러리가 존재하며, 이 역시 출판 품질의 결과물을 만들어냅니다. Daft는 프로그래밍 언어인 Python을 통해 로직을 제어할 수 있다는 장점이 있지만, LaTeX 문서 안에서 렌더링 과정을 세밀하게 제어하거나 TikZ의 방대한 라이브러리 생태계를 활용하는 데에는 한계가 있습니다. Awesome LaTeX Drawing은 순수 LaTeX 문법을 따르므로, 별도의 Python 실행 환경 없이도 TeX 편집기 내에서 모든 수정과 컴파일이 가능하다는 점에서 LaTeX 중심의 워크플로우를 가진 연구자들에게 더 적합한 선택지가 될 수 있습니다.

Awesome LaTeX Drawing 저장소의 예제 및 구성

Awesome LaTeX Drawing 저장소는 연구 주제별로 디렉토리가 나누어져 있으며, 각 예제는 preamble(패키지 선언)과 body(실제 드로잉 코드)로 명확히 구분되어 설명됩니다.

저장소는 연구 분야와 사용되는 LaTeX 패키지의 특성에 따라 크게 네 가지 카테고리로 예제들을 상세하게 분류하여 제공하고 있습니다. 각 섹션은 단순한 그림뿐만 아니라, 해당 그림을 그리기 위해 필요한 패키지 설정(Preamble)과 실제 그리기 명령어(Body Code)에 대한 구체적인 가이드를 포함합니다.

베이지안 네트워크와 그래피컬 모델 (Bayesian Networks)

베이지안 네트워크와 그래피컬 모델 (Bayesian Networks) 섹션은 변수 간의 확률적 의존 관계를 표현하는 베이지안 네트워크를 그리는 데 집중합니다. 주로 tikz 패키지와 함께 bayesnet 라이브러리를 핵심적으로 사용합니다. bayesnet 라이브러리는 원형 노드(확률 변수), 사각형 노드(관측 데이터), 그리고 반복 구조를 나타내는 플레이트(Plate)를 그리는 데 특화된 명령어들을 제공합니다.

저장소에는 구체적으로 BGCP (Bayesian Gaussian CP Decomposition) 모델이나 BATF (Bayesian Augmented Tensor Factorization) 모델과 같은 고난이도 네트워크가 포함되어 있습니다. 예를 들어, BGCP 모델을 그리기 위해 사용자는 \node 명령어로 잠재 변수들을 정의하고, \path 명령어로 변수 간의 화살표를 연결하며, \plate 명령어로 데이터의 차원(Dimension)만큼 반복되는 구조를 감쌉니다. 텍스트에서는 단순히 노드만 그리는 것이 아니라, \usepackage{amsfonts, amsmath, amssymb}를 선언하여 노드 안에 들어가는 복잡한 수식 기호를 깨짐 없이 렌더링하는 방법까지 안내하고 있습니다. 이는 TPAMI 등 주요 저널에 게재된 논문의 모델 구조도와 동일한 수준입니다.

텐서 구조 시각화 (Tensor Structure Visualizations)

2차원 평면에 3차원 이상의 고차원 배열인 텐서(Tensor)를 입체적으로 표현하는 것은 매우 까다로운 작업입니다. 이 프로젝트는 tikz-3dplot 패키지를 활용하여 입체적인 큐브 형태의 데이터 구조를 그리는 템플릿을 제공합니다.

예를 들어, 3rd-order TensorTensor Completion 예제에서는 \Depth, \Width, \Height라는 사용자 정의 변수를 설정하여 텐서의 가로, 세로, 깊이 비율을 조절할 수 있게 합니다. 코드는 3차원 좌표계를 설정한 뒤, \draw 명령어로 육면체의 모서리를 그리고, \filldraw 명령어로 특정 면을 채우거나 강조하는 방식으로 구성됩니다. 특히 시계열 데이터가 포함된 Temporal Matrix Factorization 예제에서는 시간 축을 따라 데이터가 어떻게 슬라이딩 되는지를 시각적으로 표현하는 기법을 보여줍니다. 사용자는 제공된 코드에서 좌표 값만 변경함으로써, 자신이 다루는 데이터의 차원(Rank)이나 모양(Shape)에 맞는 텐서 그림을 손쉽게 얻을 수 있습니다.

함수 플로팅 및 데이터 시각화 (Function Plotting)

수학적 함수의 개형이나 데이터의 분포를 정확하게 그려야 할 때를 위해 pgfplots 패키지를 활용한 예제들도 준비되어 있습니다. 이는 손으로 대략적인 개형을 그리는 것이 아니라, 실제 수식이나 데이터를 기반으로 정확한 그래프를 생성합니다.

주요 예제로는 정규 분포(Normal Distribution)나 얼랑 분포(Erlang Distribution)의 확률 밀도 함수(PDF) 및 누적 분포 함수(CDF) 그래프가 있습니다. 코드는 \begin{axis} 환경 내에서 \addplot 명령어를 사용하여 수식을 직접 입력하거나 외부 데이터 파일을 불러오는 방식으로 작동합니다. 또한, 사인(Sine)과 코사인(Cosine) 함수를 조합하여 시계열 데이터의 주기적 역학(Temporal Dynamics)을 표현하는 예제도 포함되어 있어, 신호 처리나 시계열 분석 논문 작성 시 유용하게 활용될 수 있습니다.

사용 방법: 독립적 컴파일을 위한 워크플로우 (Implementation Workflow)

저장소의 가이드는 모든 예제에 대해 다음의 표준화된 단계를 따르도록 안내합니다:

  1. Preamble Codes: standalone 클래스 선언 및 \usepackage{tikz} 등 필수 패키지 로드.
    이 저장소의 모든 예제는 사용자가 겪을 수 있는 패키지 충돌 문제를 최소화하기 위해 standalone 문서 클래스를 사용하도록 설계되었습니다. 일반적으로 LaTeX 문서는 하나의 거대한 main.tex 파일에 모든 내용을 담지만, 그림이 복잡해질수록 컴파일 시간이 기하급수적으로 늘어납니다.

  2. Body Codes: \begin{tikzpicture}로 시작하여 노드, 좌표, 축 등을 정의.
    가이드는 또한 \documentclass[border=0.1cm]{standalone}과 같이 그림 하나를 별도의 PDF 파일로 생성하는 방식을 제안합니다. 사용자는 제공된 템플릿 파일을 받아 개별적으로 컴파일하여 그림을 확인한 뒤, 완성된 PDF 파일을 메인 논문 파일에 \includegraphics 명령어로 삽입하기만 하면 됩니다.

  3. Compile: LaTeX 컴파일러(예: pdflatex)를 통해 고해상도 PDF 생성.
    각 예제 파일 내부에는 preamble 영역에 필요한 tikz 라이브러리(예: usetikzlibrary{bayesnet})와 폰트 설정이 미리 정의되어 있어, 초보자가 흔히 겪는 "패키지 누락 오류"를 방지합니다.

라이선스

Awesome LaTeX Drawing 프로젝트는 오픈소스 라이선스인 MIT License 하에 배포되고 있습니다. 이는 개인적 학습 용도는 물론, 학술 논문 작성이나 상업적 용도의 저작물에도 출처 표기 하에 자유롭게 코드를 수정하여 사용할 수 있음을 의미합니다.

:house: Awesome LaTeX Drawing 공식 홈페이지

:github: Awesome LaTeX Drawing 프로젝트 GitHub 저장소




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: