왜 이런 이상한 짓을 하게되었냐….면…
가끔 학회에서 자체적으로 제공해주는 LaTeX 템플릿을 차용해서 쓰다보면 일반적으로는 작동하는 코드가 해당 템플릿 안에서는 제대로 돌아가지 않는 경우가 있습니다(…)
최근에 일본의 한 학회에서 제공하는 템플릿을 쓰고 있었는데, 일반적으로 도표를 그릴 때 쓰는 pgfplots와 tikzpicture가 제대로 작동하지 않더라구요. 왜 논문을 쓰면서도 디버깅을 해야하는지… 마치 리눅스를 다루는 것 같은 그런 느낌었지만 아무튼 인터넷에서 찾아봐도 정보가 잘 안 나오기도 했고, 제 쪽에서 설정을 잘못했을 가능성도 있어서(아마 템플릿을 Overleaf 위에 올려서 써서 그런것같기도?) 미봉책을 고려해봤습니다.
물론 가장 쉬운 방법은, 빈 LaTeX 문서를 만들고 거기서 정상적으로 도표를 그린 다음에 그걸 PNG 이미지로 캡처해서 원래의 LaTeX 문서에 삽입하는거죠. 그치만 도표가 래스터화되는데다가 LaTeX의 복잡한 내부 툴체인을 거치면서 손실압축이 적용되는지 PDF로 뽑아내보면 도표의 화질이 생각보다 많이 깨져버립니다.
그래서 곰곰이 다른 미봉책을 생각해봤습니다. 래스터화를 피하는 방향으로 도표를 저장하려면 SVG라는 대안이 있을 수 있지만 도표는 단순한 도형이 아니라서 더 복잡할 것 같았습니다. 근데 가만보니 도표 그릴려고 만든 TeX 문서에서 PDF로 도표를 뽑으면 래스터화를 피할 수 있지 않나요?
구글링을 해보니 저같은 생각을 해본 사람이 있는지 TeX 문서에 PDF를 Figure 형태로 삽입하는 방법을 물어본 사람이 있네요. [링크] 저렇게 넣으면 잘 들어가나봅니다.
그런데 딱 하나 더 문제점이 있습니다. PDF로 도표를 뽑으면 A4 사이즈의 여백 안에 도표가 배치되기 때문에, 도표만 보이도록 크롭을 적용해야 합니다. 근데 그것도 LaTeX에선 가능합니다(??) [링크]
여기까지 알아봤으면 다 해결된 줄 알았지만, EPS 포맷으로 삽입하는게 아니어서 Figure로 삽입한 이미지(PDF) 파일의 가로, 세로 픽셀값을 파라미터로 알려줘야했습니다. 이건 컴퓨터 & 운영체제 환경마다 다를 수 있을 것 같은데요, 일반적인 윈도우 환경이면 기본 PPI가 72이기 때문에 [여기]를 참고하면 595*842 픽셀인걸 추정할 수 있었습니다.
1 2 3 4 5 6 7 8 |
\begin{figure}[tb] \centering \vspace{-50pt} % 위쪽의 본문과 도표 사이의 간격을 좁히는 정도 \includegraphics[page=1,bb=0 0 595 842,trim={5.8cm 18cm 5cm 1cm},clip,width=0.48\textwidth]{image/chart_human_pdf.pdf}\hspace*{.25\textwidth}% \vspace{-30pt} % 도표와 아래쪽의 본문 사이의 간격을 좁히는 정도 \caption{Respondents' preference for ``Performed by a human'' by group} \label{fig:chart-human} \end{figure} |
그리하여 위와 같은 코드를 삽입해서 래스터화되지 않은 도표를 넣는데 성공했습니다…
trim과 width 같은 경우엔 본인이 그린 도표의 크기에 따라 다르게 설정해줘야할겁니다.
trim은 순서대로 {왼쪽 아래 오른쪽 위}에 해당하는 trim 길이니까 참고해주세요.
진짜 돌아만 가면 된다는 점에서 프로그래밍 그 자체네요….
LaTeX는 어떤 언어일까….