본문 바로가기
개인

Markdown으로 논문을 쓰자

by plzfday 2019. 5. 5.

제가 참고한 링크

오늘은 어제저녁부터 지금 시각 1시 30분까지 했던 허튼짓을 담은 글입니다. 윗분의 글이 정말 좋은 글인데 저처럼 템플릿 쓰려고 하다가 시간 낭비하지 않으시길 바랍니다.

제가 이번에 마크다운으로 논문 쓰기를 준비하려고 했던 이유는 최근에 했던 유전 알고리즘의 보고서를 마크다운으로 쓰면 괜찮을 것 같았기 때문입니다. 글 내용은 이미 google docs에 적어놨기 때문에 큰 걱정은 없었고 저녁 시간 동안 모든 일정을 끝낼 수 있을 것이라 생각하고 작업에 착수했습니다.​

고난 1: Pandoc 설치

Pandoc 자체가 얼마나 큰지 잘 모르겠지만 제 생각에는 다운로드 속도가 너무 느린 것 같습니다. (해외 서버라 그런가..?) 어쨌든, 이거 다운로드하는데 약 2시간 걸렸습니다. 사실 저는 이때부터 포기하고 싶었습니다. 하지만 “나중에라도 쓸 일이 생기겠지..!!”라는 말도 안 되는 정신승리를 하면서 버텼죠. (에휴..)

저는 sujinlee님의 글을 보고 따라했기 때문에 “챕터 3: 논문 쓰기” 전까지는 그래도 순조롭게 진행되었습니다.

문제는 템플릿을 사용하는 것이었습니다.

고난2: 템플릿 사용

Tom pollard님께서 만드신 템플릿의 사용법입니다.

사실 1.3인 Pandoc citeproc을 설치하는 것부터 문제였습니다. 저는 윈도우이기 때문에 haskell platform을 직접 다운로드하여서 citeproc을 설치하는 방법이 있었습니다. 근데 지금 생각해보니 이건 아무런 상관이 없었습니다(하..) 일단 이것까지 마친 게 4시였습니다. (다른 곳을 막 건드렸지만 아무런 상관이 없었다는 점)

오늘 아침에 일어나서 암만 검색하고 찾아봐도 파일 디렉션 문제라고 밖에 안 보였습니다. 그래서 결국 Google에 invalid argument in pandoc으로 관련해서 검색해보니 스택 오버플로우에 저와 비슷한 분이 계셨습니다. 순간 화가 났지만 지금이라도 찾은 것에 감사하자며, 차근 차근 보니까 이분이 말씀하시길 “내가 님들이 추천하는 방법 다 해봤는데 맥에서는 되지만 윈도우에서는 안 된다.”

저는 다시 한 번 화가 났지만 결국 파일 경로를 직접 다 적어주기로 했습니다. 진작에 할 걸.

근데 파일이 18개나 돼서 생각보다 오래 걸렸습니다. 그래서 중간 정도 하다가 파이썬 코드로 작성하기로 마음먹고, 3분 정도? 걸려서 스크립트를 썼습니다. (저는 일을 일부러 2배로 늘리나 봅니다.)

from os import listdir
from os.path import isfile, join

mypath = "여기는 알아서 채우세요/phd_thesis_markdown-master/source"
onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath, f)) and f[len(f) - 1] == 'd']

print(onlyfiles)

new_str = ""
for i in onlyfiles:
    new_str += ("\"$(INPUTDIR)\"/" + i + " ")

print(new_str)

그래서 새로 만든 Makefile은 다음과 같습니다.

PY=python
PANDOC=pandoc

BASEDIR=$(CURDIR)
INPUTDIR=$(BASEDIR)/source
OUTPUTDIR=$(BASEDIR)/output
TEMPLATEDIR=$(INPUTDIR)/templates
STYLEDIR=$(BASEDIR)/style

BIBFILE=$(INPUTDIR)/references.bib

help:
	@echo ' 																	  '
	@echo 'Makefile for the Markdown thesis                                       '
	@echo '                                                                       '
	@echo 'Usage:                                                                 '
	@echo '   make html                        generate a web version             '
	@echo '   make pdf                         generate a PDF file  			  '
	@echo '   make docx	                       generate a Docx file 			  '
	@echo '   make tex	                       generate a Latex file 			  '
	@echo '                                                                       '
	@echo ' 																	  '
	@echo ' 																	  '
	@echo 'get local templates with: pandoc -D latex/html/etc	  				  '
	@echo 'or generic ones from: https://github.com/jgm/pandoc-templates		  '

pdf:
	pandoc "$(INPUTDIR)"/01_title_page.md "$(INPUTDIR)"/02_statement.md "$(INPUTDIR)"/03_summary.md "$(INPUTDIR)"/04_acknowledgements.md "$(INPUTDIR)"/05_table_of_contents.md "$(INPUTDIR)"/06_list_of_figures.md "$(INPUTDIR)"/07_list_of_tables.md "$(INPUTDIR)"/08_abbreviations.md "$(INPUTDIR)"/09_chapter_1.md "$(INPUTDIR)"/10_chapter_2.md "$(INPUTDIR)"/11_chapter_3.md "$(INPUTDIR)"/12_chapter_4.md "$(INPUTDIR)"/13_chapter_5.md "$(INPUTDIR)"/14_chapter_6.md "$(INPUTDIR)"/15_conclusion.md "$(INPUTDIR)"/16_appendix_1.md "$(INPUTDIR)"/17_appendix_2.md "$(INPUTDIR)"/18_references.md \
	-o "$(OUTPUTDIR)/thesis.pdf" \
	-H "$(STYLEDIR)/preamble.tex" \
	--template="$(STYLEDIR)/template.tex" \
	--bibliography="$(BIBFILE)" 2>pandoc.log \
	--csl="$(STYLEDIR)/ref_format.csl" \
	--highlight-style pygments \
	-V fontsize=12pt \
	-V papersize=a4paper \
	-V documentclass=report \
	-N \
	--pdf-engine=xelatex \
	--verbose

tex:
	pandoc "$(INPUTDIR)"/*.md \
	-o "$(OUTPUTDIR)/thesis.tex" \
	-H "$(STYLEDIR)/preamble.tex" \
	--bibliography="$(BIBFILE)" \
	-V fontsize=12pt \
	-V papersize=a4paper \
	-V documentclass=report \
	-N \
	--csl="$(STYLEDIR)/ref_format.csl" \
	--pdf-engine=xelatex

docx:
	pandoc "$(INPUTDIR)"/*.md \
	-o "$(OUTPUTDIR)/thesis.docx" \
	--bibliography="$(BIBFILE)" \
	--csl="$(STYLEDIR)/ref_format.csl" \
	--toc

html:
	pandoc "$(INPUTDIR)"/*.md \
	-o "$(OUTPUTDIR)/thesis.html" \
	--standalone \
	--template="$(STYLEDIR)/template.html" \
	--bibliography="$(BIBFILE)" \
	--csl="$(STYLEDIR)/ref_format.csl" \
	--include-in-header="$(STYLEDIR)/style.css" \
	--toc \
	--number-sections
	rm -rf "$(OUTPUTDIR)/source"
	mkdir "$(OUTPUTDIR)/source"
	cp -r "$(INPUTDIR)/figures" "$(OUTPUTDIR)/source/figures"

.PHONY: help pdf docx html tex

이제 잘 됩니다.

이것까지 하는 데 들인 시간: 저녁 9시 ~ 다음 날 새벽 4시, 아침 12시 ~ 1시 30분

이 허튼짓을 통해 배운 점

항상 작업을 하기 전에는 이것이 필요한 지 냉정하게 판단해야 한다.

'개인' 카테고리의 다른 글

수학이 좋아진 계기  (0) 2020.03.12
MBTI 성격유형검사  (0) 2019.05.11
C++ 기초 플러스 리뷰  (2) 2019.05.05
천코대 2회 예선 한탄, 자괴감  (0) 2018.07.14
KOI예선 & 시험 끝나고 계획  (0) 2018.04.22
손코딩뇌컴파일눈디버깅  (0) 2018.02.05

댓글