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>처럼 입력하시면 좋습니다.
효율적으로 다량의 문서를 한번에 컴파일 하는 방법이 어떤게 있을까요
2014.05.04 17:26
많이 비효율적인 방법으로 199개를 한꺼번에 컴파일하는 방법을 만들긴 했습니다.
latexmk를 이용해서 bat 파일을 만들어서
1-1 => 1-2 => 1-3 => 1-4 => 1-5 => 1-6 => 1-7 (다른폴더에 있을 경우, 그 폴더에 bat 파일을 만들어서 1-6 끝나면 그 bat 파일을 만들어서 호출) -> 2-1 (1-7 폴더에 있는 bat파일을 2-1 쪽과 연결)
이런 방식으로 하고 있습니다.
검색해도 딱히 방법이 제시가 잘 안되는 편인데, 텍 고수님들은 어떻게 하시는지 궁금합니다.
댓글 6
-
어떤이
2014.05.04 17:56
-
Progress
2014.05.05 00:04
전에 비슷한 질문에서 TeX FAQ의 http://www.tex.ac.uk/cgi-bin/texfaq2html?label=multidoc 를 참고하라는 답변을 드린 적이 있긴 한데...
지금처럼 article과 amsthm 패키지를 짬뽕한 독립적인 클래스를 사용하는 상황에서 combine이나 subfiles 패키지를 사용하는 것은 조금 어렵다고 생각합니다.
최근 documute 패키지의 기능을 일부 가져온 standalone 패키지가 좋긴한데, 역시 각 논문마다 별개의 \title과 \author 값을 받아 \maketitle을 만드는 현재 상황에선 별로 소용이 없는 것 같습니다.
여하튼 이미 취합된 모든 논문의 클래스와 preamble을 제대로 수정하지 않고는 combine이나 standalone의 기능을 제대로 발휘하기는 어렵다고 판단하고 있습니다.
결국은 pdfpages 패키지를 이용하여 각 pdf를 합치는 방법이, 고되기는 하지만 효율적인 방법이 될 것입니다.
1. 각 논문에서 면주를 제하고 컴파일하여 sample1.pdf, sample2.pdf, sample3.pdf, ..., sample_n.pdf를 만들어 놓습니다.
(이건 뭐, 클래스 파일에서 \pagestyle{myheadings} 정도 되어 있는 부분을 \pagestyle{empty}로만 해놓으면 끝날 듯.)
2. 대략 다음과 같은 모양으로 컴파일합니다.
\documentclass{icmart}
\usepackage{pdfpages}
\begin{docuemnt}
\markboth{첫 번째 저자}{첫 번째 논문 제목}
\includepdf[pages={-},pagecommand=\thispagestyle{myheadings}]{sample1}
\markboth{두 번째 저자}{두 번째 논문 제목}
\includepdf[pages={-},pagecommand=\thispagestyle{myheadings}]{sample2}
\markboth{세 번째 저자}{세 번째 논문 제목}
\includepdf[pages={-},pagecommand=\thispagestyle{myheadings}]{sample3}
...
\end{document}
3. 어차피 면주에 \markboth를 이용하여 새로 저자명과 제목을 넣어햐는 상황이니, 이를 조금 변형하면 차례도 새로 만들 수 있을 것 같습니다.
\DeclareRobustCommand{\RunningHeaderAndToc}[2]{%
\markboth{#1}{#2}%
\addcontentsline{toc}{section}{\textsf{#1}}%
\addcontentsline{toc}{subsection}{#2}%
}
===
%% combine_all.tex
\documentclass[a4paper]{icmart}
\usepackage{pdfpages}
\pagestyle{myheadings} % 클래스에 \pagestyle{empty}를 심어놓았다 하더라도 preamble에서 새로 페이지 스타일을 정의하는 것임. 나중에 \markboth로 정의한 것을 가져오는 것임.
\DeclareRobustCommand{\RunningHeaderAndToc}[2]{%
\markboth{#1}{#2}% 짝수쪽 면주와 홀수쪽 면주
\addcontentsline{toc}{section}{\textsf{#1}}% 저자는 산세리프 폰트에 섹션 레벨로
\addcontentsline{toc}{subsection}{#2}% 논문 제목은 섭섹션 레벨로
}
\begin{document}
\tableofcontents
\cleardoublepage %혹시 논문이 모두 홀수쪽에서 시작되어야한다면...
\RunningHeaderAndToc{Premiata Forneria Marconi}{Impressioni di Setembre}
\includepdf[noautoscale=true,pages={-},pagecommand=\thispagestyle{myheadings}]{sample1}
\cleardoublepage
\RunningHeaderAndToc{Toto}{Africa}
\includepdf[noautoscale=true,pages={-},pagecommand=\thispagestyle{myheadings}]{sample2}
\cleardoublepage
\RunningHeaderAndToc{Osanna}{L'amore vincera di nuovo}
\includepdf[noautoscale=true,pages={-},pagecommand=\thispagestyle{myheadings}]{sample3}
\RunningHeaderAndToc{Locanda della Fate}{Forse Le Lucciole non si amano piu}
\includepdf[noautoscale=true,pages={-},pagecommand=\thispagestyle{myheadings}]{sample4}
\cleardoublepage
\RunningHeaderAndToc{Led Zeppelin}{All my love}
\includepdf[noautoscale=true,pages={-},pagecommand=\thispagestyle{myheadings}]{sample5}
\end{document}
===
*첨부 파일 용량을 1MB 이하로 줄이기 위해 지텍 컴파일했습니다.
-
하늘연
2014.05.05 00:15
아 이것에 대해서 그때 이야기를 덜 붙였었는데, Progress님이 알려준것과 거의 유사한 설정으로, confproc라는 클래스를 현재 환경에 맞게 개조해서 하나로 합치는 솔루션은 만들었습니다.
다만 문제가 되는건 이 sample1~sample5 에 해당하는 pdf 파일들을 첨부하기 전에 컴파일을 하려고 하는데, 한꺼번에 잘 되지 않아서 pdf를 만들어야 하는데, 이게 너무 많아서 196번 컴파일을 하는 수고를 덜고자 머리를 돌렸고, 우선 지금 솔루션으로도 충분히 196개 컴파일이 한번에 되긴 합니다.
다만 현재 confproc 클래스에 대해서는 제가 많이 알지는 못해서, 몇가지 애로사항이 있는 상황입니다만, 편법이라도 써서 어느정도 구현은 해둔 상태입니다.
-
Progress
2014.05.05 00:23
왜 질문을... ㅠㅠ
-
하늘연
2014.05.05 00:32
199개의 문서를 보다 효율적으로 개개의 파일에 대해서 각각을 컴파일을 한번에 할 방법을 아직도 알지 못해서 ☞☜
그래도 알려주신 소스로 현재 클래스를 더 업그레이드 했습니다. 감사합니다!저 파일이 조금 어려운게 면주가 나와야하는 상황과 안나와야 하는 상황 등이 있어서(규칙이 있긴 합니다) 이걸 어찌해야할지 고민중입니다.
-
하늘연
2014.05.08 09:12
오늘 추가적으로 문제를 해결했네요.
제 솔루션을 올립니다.
confproc 클래스를 개선하고 있습니다.
해결하고자 했던 문제들이 있었는데, Progress 님 댓글이 많은 참고가 되었습니다.
1. 페이지번호를 어떻게 효율적으로 매길것인가
2. 각 논문의 첫 페이지에는 면주가 나오면 안된다.
3. 목차에는 정식제목과 자신의 본 이름이 들어가나 면주에는 상황에 따라 부제와 약명을 넣게 해야한다.
%c0m을 바꿔주세요.
http://mathskykite.c0m/?p=1125
각 컴파일이 독립적으로 이루어질 수 있는 것인지 의존성이 있는지에 따라 구체적인 방법은 달라지겠습니다만, 파이썬이나 펄 등의 스크립트 언어가 이런 일에 편리합니다. 저 개인적으로는 이런 일에 파이썬을 이용합니다. 배시 스크립트도 괜찮을 것입니다. 윈도우에서 배시를 쓰러면 좀 귀찮긴 합니다. 하지만 배치 파일보다 훨씬 강력합니다. 아마도 파워쉴에서 파워쉘을 이용하는 것도 좋은 방법일 것으로 짐작됩니다만 경험은 없습니다.