LaTeX을 이용한 한국식 상장 템플릿

한국인이라면 한 번쯤 봤을 법한 그 양식

11/5/2023, 4:26:36 AM에 LiteHell이(가) 작성
카테고리 : LaTeX
태그 : TikZ

들어가는 말

최근 알고리즘 동아리에서 주최한 대회에 운영진으로 참가했다. 대회가 마무리된 후 1,2,3등을 위한 상장을 만들어야 했는데 이때 LaTeX를 써보면 재밌을 것 같다는 생각이 들었다.

따라서 LaTeX을 이용해 아래와 같은 상장을 만들었다.

TikZ

TikZ는 LaTeX에서 그림을 그릴 때 쓰는 패키지이다. 주로 pgfplots와 함께 사용하거나 그래프를 그릴 때 이용되지만 간단한 그림 정도는 그릴 수 있다.

current page

TikZ에는 current page라는 특별한 노드가 있다. 이 노드는 current page.south westcurrent page.west와 같이 이용되며, 페이지의 모서리를 가리키고 있다.

아래 예시를 보자. TikZ & PGF 메뉴얼 3.1.10버전의 260페이지에 있는 예시이다.

\begin{tikzpicture}[remember picture, overlay]
    \draw [line width=1mm, opacity=.25]
        (current page.center) circle (3cm);
\end{tikzpicture}

위 예시 코드를 빌드하면 페이지의 정중앙에 반지름이 3cm인 원이 그려진다. 위 코드에서 remember pictureoverlaycurrent page 노드를 사용하기 위해 필요하다.

호 그리기

TikZ는 \draw arc (시작각도:종료각도:반지름) 형태의 명령어로 호(arc)도 그릴 수 있다.

cycle

cycle을 이용하면 마지막 노드에서 다시 처음 노드로 이어지는 닫힌 경로를 만들 수 있다.

예시를 보면 이해가 쉽다.

Without cycle

\begin{tikzpicture}
\draw (0, 0) -- (1, 1) -- (2, 0);
\end{tikzpicture}

With cycle

\begin{tikzpicture}
\draw (0, 0) -- (1, 1) -- (2, 0) -- cycle;
\end{tikzpicture}

위 코드를 빌드하면 아래와 같은 결과가 나온다.

tikz cycle 에시 이미지

상장 템플릿 소스코드

본 템플릿에서 그린 상장 테두리 장식은 호와 직선만을 이용해 그릴 수 있는 기하학적인 무늬(문방구 상장용지에서 흔히 볼 수 있는 무늬)이다. 따라서 TikZ를 잘 활용하면 상장 테두리 장식을 그릴 수 있다.

GitHub Gist에서도 볼 수 있다.

\documentclass{minimal}
\usepackage{kotex}
\usepackage[svgnames]{xcolor}
\usepackage{tikz}
\usepackage[a4paper, top=100pt, left=80pt, right=80pt, bottom=120pt]{geometry}
\usetikzlibrary{calc}

\newcommand{\thickframemargin}{40pt}
\newcommand{\thickframewidth}{6pt}
\newcommand{\thinframemargin}{46pt}
\newcommand{\thinframewidth}{1pt}
\newcommand{\framecornerradius}{30pt}
\newcommand{\framecolor}{Goldenrod}
\begin{document}
\begin{tikzpicture}[remember picture, overlay]
    % thick corner
    \draw[color=\framecolor, line width=\thickframewidth]
     % north west rounded corner
    ([xshift=\thickframemargin, yshift=-\thickframemargin-2*\framecornerradius] current page.north west) arc (270:450:\framecornerradius)
    -- ([xshift=\thickframemargin, yshift=-\thickframemargin] current page.north west) arc (180:360:\framecornerradius)
     % north east rounded croner
    -- ([xshift=-\thickframemargin-2*\framecornerradius, yshift=-\thickframemargin] current page.north east) arc (180:360:\framecornerradius)
    -- ([xshift=-\thickframemargin, yshift=-\thickframemargin] current page.north east) arc (90:270:\framecornerradius)
     % south east rounded corner
    -- ([xshift=-\thickframemargin, yshift=\thickframemargin+2*\framecornerradius] current page.south east) arc (90:270:\framecornerradius)
    -- ([xshift=-\thickframemargin, yshift=\thickframemargin] current page.south east) arc (0:180:\framecornerradius)
    % south west rounded corner
    -- ([xshift=\thickframemargin+2*\framecornerradius, yshift=\thickframemargin] current page.south west) arc (0:180:\framecornerradius)
    -- ([xshift=\thickframemargin, yshift=\thickframemargin] current page.south west) arc (270:450:\framecornerradius)
    % cycle
    -- cycle;


    % thin corner
    \draw[color=\framecolor, line width=\thinframewidth]
     % north west rounded corner
    ([xshift=\thinframemargin, yshift=-\thinframemargin-2*\framecornerradius] current page.north west) arc (270:360:\framecornerradius)
    -- ([xshift=\thinframemargin+\framecornerradius, yshift=-\thinframemargin-\framecornerradius] current page.north west) arc (270:360:\framecornerradius)
     % north east rounded croner
    -- ([xshift=-\thinframemargin-2*\framecornerradius, yshift=-\thinframemargin] current page.north east) arc (180:270:\framecornerradius)
    -- ([xshift=-\thinframemargin-\framecornerradius, yshift=-\thinframemargin-\framecornerradius] current page.north east) arc (180:270:\framecornerradius)
     % south east rounded corner
    -- ([xshift=-\thinframemargin, yshift=\thinframemargin+2*\framecornerradius] current page.south east) arc (90:180:\framecornerradius)
    -- ([xshift=-\thinframemargin-\framecornerradius, yshift=\thinframemargin+\framecornerradius] current page.south east) arc (90:180:\framecornerradius)
    % south west rounded corner
    -- ([xshift=\thinframemargin+2*\framecornerradius, yshift=\thinframemargin] current page.south west) arc (0:90:\framecornerradius)
    -- ([xshift=\thinframemargin+\framecornerradius, yshift=\thinframemargin+\framecornerradius] current page.south west) arc (0:90:\framecornerradius)
    % cycle
    -- cycle;
\end{tikzpicture}
\fontsize{16pt}{16pt}\selectfont 제 1 호

\vspace{32pt}

\begin{center}
\fontsize{48pt}{48pt}\selectfont\hspace{1.25em}장
\end{center}

\vspace{50pt}


\fontsize{20pt}{20pt}\selectfont
최우수상\hspace{\stretch{1}}홍길동


\vspace{80pt}

\begin{center}
 \fontsize{20pt}{30pt}\selectfont
 위 사람은 \LaTeXe를 잘 활용하여 타의 모범이 되었으므로 이 상을 수여합니다.
\end{center}


\vspace{\stretch{1}}

\begin{center}
 \fontsize{20pt}{20pt}\selectfont
 1970년 1월 1일
\end{center}


\vspace{2em}

\begin{center}
 \fontsize{30pt}{30pt}\selectfont
 \LaTeXe{} 애호가 김철수
\end{center}

\end{document}

사진

한국식 상장 템플릿