Q&A 마당은 텍 관련 질문/답변을 위해 만들었습니다.
- 로그인 없이 자유롭게 글을 읽고 쓸 수 있는 철학은 처음과 같이 계속됩니다.
- 질문 전에 아래를 읽어 보세요. 좋은 질문이 좋은 답을 받을 수 있는 좋은 방법입니다.
- 질문에 맞는 제목을 붙이세요. 질문의 내용과 관련없는 "고수님", "긴급질문", "도와주세요"와 같은 제목은 답이 잘 올라오지 않습니다. 이 게시판에 올라오는 모든 글은 질문입니다. 굳이 [질문], [Q]를 적으실 필요도 없습니다.
- 내용을 충실히 적어 주시고, 같은 상황을 재현할 수 있는 최소한의 예제가 같이 있어야 합니다.
- 최소 예제는 "Minimal working example"을 읽어 보세요.
- 파일을 첨부하실 때에는 가능한 압축하여 파일 크기를 줄여서 올려주시길 바랍니다.
- 개인적으로 사용하신 글꼴이 들어 있는 경우, preparefont.sty에 관한 답변을 참조하세요.
- 스팸 글을 막기 위하여 짧은 시간 내에 다시 글이 등록되는 IP를 막거나, 광고 글을 막기 위하여 금지어로 .com, .net 등을 설정하고 있습니다. 다소간의 불편함이 있으시더라도 양해 바랍니다.
- 금지어에서 stackexchange, stackoverflow, ctan, overleaf, , github, google.com, gmail.com, .org, .io, sil.org, wiki.com, tistory.com등은 해제하였습니다.
- MathJax를 이용한 수식조판을 사용하실 수 있습니다. 여기를 참조하세요.
- 사용하는 편집기는 CKeditor입니다.
- 편집기에서 [enter]를 누르면 <p> 태그가 들어가고, 문단으로 생각하고 한 줄을 비웁니다.
- 글줄만 바꾸려면 [shift-enter]를 누르면 <BR> 태그가 들어가므로 용도에 맞게 나누어 쓸 수 있습니다.
- 수식를 문서내에 삽입하시려면 에디터를 툴바에서 [소스]를 눌러 HTML로 입력할 수 있게 바꾸신 후 <pre> </pre> tag를 사용하셔서 <pre> 여러 줄의 수식 </pre>처럼 입력하시면 좋습니다.
Python의 Jupyter를 이용하여 한글 pdf 파일 생성 경험 있으신 분께
2017.01.12 14:01
안녕하세요?
프로그래밍 언어인 Python의 패키지인 Jupyter를 이용하면, 프로그래밍 코드와 설명, 그림을 한꺼번에 편집해서 문서를 작성할 수 있습니다. Jupyter에는 markdown cell과 code cell이 있어서 markdown cell에는 markdown, html, LaTeX 등의 언어로 설명문(수식 포함)을 쓰고 code cell에는 프로그램 코드 자체를 적어서 실행도 할 수 있습니다.
제가 몸담고 있는 조직에서 이번에 수행 중인 과제에서는 전문공학용 해석 소프트웨어를 제작하고 있는데 pdf 형태의 매뉴얼과 팝업창(html 형태)으로 뜨는 도움말도 함께 제작해야 합니다. 개발자들이 코드를 개발하면서 동시에 도움말을 작성하고 있으며, 혁신적으로 작성 도구로 Jupyter를 사용하기로 했습니다. 그런데, Jupyter에 작성한 내용을 html로 전환하는데는 큰 문제가 없지만 pdf로 전환할 때 중간 단계로 거치는 LaTeX 파일에서 문제가 발생하고 있습니다. 즉, 수식이나 한글이 깨져서 잘 표현되지 않는 것입니다. TeX Live 자체는 한글을 구현하는데 문제가 없다고 들었는데, 아마도 Jupyter가 TeX Live 같은 LaTeX 소프트웨어와 연동하면서 뭔가 맞지 않는 것 같습니다. 구글링을 해보니 일본에서도 영어를 쓰지 않고 일어로 작성 시 이런 문제가 있어서 관련 패치를 개발해서 사용한다는 사실을 찾을 수 있었습니다.
그래서, 우리나라에서도 Jupyter를 이용해 pdf 파일을 작성한 경험이 있으신 분들이 어디 계실까 찾아보다가 이곳까지 오게 되었습니다. 저는 이전까지 LaTeX을 사용해본 적이 없는 초보자인데(주구장창 아래아 한글을 써서 문서를 만들어왔습니다) Jupyter를 만지다보니 LaTeX도 공부하고 TeX Live도 설치하는 등 고생을 하고 있습니다. 하지만 이번에 매뉴얼을 최신 트렌드로 작성해보고자 노력 중이니 관련 지식이 있으신 분은 답변 주시거나 연락처를 남겨 주시면 감사하겠습니다. 관련 전문가 분을 소개만 시켜주셔도 감사하겠습니다.
전문가를 소개 받게 되면 정식으로 전문가 자문을 받을 계획도 있습니다.
답변 기다리겠습니다.
박중용 드림
댓글 12
-
에드
2017.01.13 00:42
-
박중용
2017.01.13 10:19
안녕하세요?
이렇게 빨리, 상세한 답변 주셔서 감사합니다.
tplx 파일에 작업을 해야한다는 것을 인지하고는 있었지만 이렇게 간단히 되는 줄은 몰랐습니다.
아마도 전체 매뉴얼을 작성하려면 tplx 파일을 좀 더 수정해야 할지도 모르겠습니다.
다시 한 번 감사드리고, 하다가 더 궁금한 사항 생기면 질문 드리겠습니다.
좋은 주말 되십시오.
박중용 드림
-
두텁
2017.01.13 02:39
첨언하면, tplx 파일들을 수정하면 사용자 마음에 드는 PDF 형식을 만들 수 있습니다. 공부가 좀 필요하긴 합니다. 다음 링크에 참고할 만한 내용이 꽤 있습니다.
http://blog.juliusschulzDOTde/blog/ultimate-ipython-notebook
-
박중용
2017.01.13 10:22
안녕하세요?
좋은 팁을 붙여주셔서 감사합니다.
매뉴얼을 최종적으로 작성하려면 결국은 사용자 마음에 드는 pdf 형식을 만들기 위해 tplx 파일을 많이 건드려야 할 것 같습니다. 저희는 본업이 공학해석 소프트웨어 개발이지 매뉴얼 제작이 아니므로 그러한 작업을 할 수 있는 업체나 전문가를 찾으려고 합니다. 그러기위해서는 내용을 어느 정도 알아야하겠기에 소개해주신 사이트를 참조하여 좀 더 공부를 하도록 하겠습니다.
날씨가 쌀쌀해졌지만 좋은 주말 보내십시오.
박중용 드림
-
yihoze
2017.01.13 10:05
뭔지 모르지만 멋져 보여요. :)
-
박중용
2017.01.13 10:24
markup language를 써서 깔끔한 문서를 만들어내는 것이 분명 멋진 일이긴 하겠지만 이 방면에 완전 문외한이었다가 들여다보려하니 무척 힘드네요. ㅎㅎ
-
메타
2017.01.15 07:06
그냥 pdf출력만을 원하신다면 간단하게 php언어의 tcpdf라이브러리를 쓸 수 있습니다.
미려한 포맷의 pdf출력을 원하신다면, 자동화돤 툴로 해결할 수 없습니다.
인디자인 같은 도구를 써서 별도의 수작업을 해서 만들어야 합니다.
-
에드
2017.01.15 15:15
인디자인은 조판을 모르는 사람이 써도 프로그램이 알아서 미려하게 만들어 주나요???
'미려하다'는 것은 문서 소비자가 누구냐에 따라 기준이 다르지 않나요?
공학자나 개발자처럼 기술 문서를 보는 사람에게 패션잡지 같이 화려한 문서가 미려하게 보일까요? 미련하게 보일까요?
-
메타
2017.01.15 17:44
저는 특별히 인디자인을 두둔한 것이 아닙니다.
인디자인이든 아래아한글이든 LaTeX이든 완전 자동화가 쉽지 않기 때문에
이쁘게 뽑아내려면 수작업이 필요하다는 말입니다.
그리고 모양새에 신경 안 쓸 경우에는
위에서 언급했듯이 tcpdf를 쓰라고 이미 이야기했습니다..
-
에드
2017.01.15 22:54
1.
이쁘게 하려면 인디자인이나 LaTeX이나 수고가 들어가는 것은 마찮가지 아닌가요? 저는 이것을 부인하는 것이 아닙니다.
(그리고 이쁜 문서 만드는 데 아래아한글은 여기 낄 만한 주제가 아니지 않나요?)2.
도움말을 만드는데 모양새를 신경 안 쓸 수 있나요? 심지어 연구과제인데요.3.
수식과 도표, 그래프가 많은 기술문서를 PDF와 HTML 포맷으로 동시에 만드는데, 인디자인(같은)이 LaTeX보다 유리한가요?4.
연산 결과를 수식과 도표, 그래프로 실시간 렌더링 하면서 문서를 작성 할 수 있는 도구가 또 있나요?5.
Jupyter로 PDF와 HTML 도움말을 만들고자 하는데 PHP 라이브러리인 tcpdf가 과연 적절한 대안인가요?for ($i = 2; $i < 12; $i++) {
$pdf->AddPage();
$pdf->Bookmark('Chapter '.$i, 0, 0, '', 'B', array(0,64,128));
$pdf->Cell(0, 10, 'Chapter '.$i, 0, 1, 'L');
}
// . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
// add a new page for TOC
$pdf->addTOCPage();
// write the TOC title
$pdf->SetFont('times', 'B', 16);
$pdf->MultiCell(0, 0, 'Table Of Content', 0, 'C', 0, 1, '', '', true, 0);
$pdf->Ln();
$pdf->SetFont('dejavusans', '', 12);
이 코드가 LaTeX보다 쉽나요? Python보다 쉽나요? 하다못해 유지보수가 쉽나요? -
메타
2017.01.16 11:44
1.
워드 프로세서를 너무 무시하는 것 같습니다.
LaTeX이나 인디자인 사용자들 중에 "아래아한글로 책을 만들면 구리다."라는 주장을 하는 사람들이 있습니다.
그러나 아래아 한글로 조판하기에 적합한 특성의 콘텐츠들도 많이 있습니다. 실재로 아래아 한글을 출판용의 조판 프로그램으로 쓰는 경우도 많이 있습니다.
도구는 그 때 그 때의 용도에 맞게 쓰면 됩니다. 도구에 집착할 필요는 없습니다.
2.
"공학자나 개발자처럼 기술 문서를 보는 사람에게 패션잡지 같이 화려한 문서가 미려하게 보일까요? 미련하게 보일까요?"
"도움말을 만드는데 모양새를 신경 안 쓸 수 있나요? 심지어 연구과제인데요."
모순된 주장이라 할 말이 없습니다.
3.
제 사견으로는 모두 다 신통치가 않습니다. 그 밥에 그 나물입니다. 원래 구현하기가 쉽지 않은 기능입니다.
4.
모르겠습니다.
5.
질문하신 분은 hltml을 pdf로 전환해야 하는 상황이고. php언어가 원래 html화일을 주물럭 거리는데 특화된 언어라서, php라이브러리를 소개시켜드린 것입니다. 질문하신 분에게 도움이 되는 접근방법인지는 모르겠습니다.
-
에드
2017.01.16 13:19
1.
'아래아한글'에 대해 그렇게 생각하신다면 할 말 없습니다. 저는 아래아한글의 작성 방법, 포맷(HWP), 결과물 어느 하나 마음에 들지 않습니다.2.
화려한 거랑 아름다운 거랑 구분해야 하지 않나요? '모양새'라는 표현을 '화려한 문서'로만 판단하여 모순된 주장이라 말씀하시니 할 말이 없습니다.3.
LaTeX이 한참 우월합니다. 그 밥에 그 나물이 아닙니다.4.
저도 Jupyter(IPython) 밖에 모릅니다5.
원고 자체를 Jupyter를 이용해서 마크다운으로 작성하고 싶다는 게 작성자 분의 목표입니다. HTML을 PDF로 변환하는 게 아니구요.
저는 이만 하겠습니다.
jupyter 설치가 이렇게 쉬워졌군요. pip 한 방이라니...
잠시 살펴보고 테스트 한 결과 첨부한 파일과 같이 PDF에 한글이 나오도록 했습니다.
다행히 jupyter가 텍 엔진을 pdftex에서 xetex으로 바꿔서 크게 수정할 것이 없었습니다.
1.
일단 다음 코드를 oblivoir.tplx 라고 저장합니다. 저장하는 경로는 ipynb와 같은 경로에 저장한다고 하겠습니다.
% Default to the notebook output style
((* if not cell_style is defined *))
((* set cell_style = 'style_ipython.tplx' *))
((* endif *))
% Inherit from the specified cell style.
((* extends cell_style *))
%===============================================================================
% Latex Article
%===============================================================================
((* block docclass *))
\documentclass[11pt]{oblivoir}
((* endblock docclass *))
2.
그리고 나서 터미널에서 다음과 같이 명령을 내립니다.
jupyter nbconvert foo.ipynb --to pdf --template=oblivoir.tplx
3.
그러면 첨부한 PDF가 생성됩니다.
oblivoir.tplx
기본 템플릿인 article.tplx에서 documentclass만 article에서 oblivoir로 변경했습니다.
클래스를 바꾸지 않고 한글만 나오도록 하려면 \usepackage{kotex}을 추가하면 됩니다.
참고 URL:
https://github쩜com/jupyter/nbconvert/tree/master/nbconvert/templates/latex
http://nbconvert.readthedocs쩜io/en/latest/index.html