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>처럼 입력하시면 좋습니다.
파일을 컴파일하는 것이 아니라 문자열을 컴파일하는 옵션이 있나요?
2012.03.18 09:41
프로그램에서 TEX을 돌리고 있습니다.
Tex파일을 DB로 저장해 두고,
이것을 필요한 파일들의 소스만 다운 받아서 새로운 Tex파일을 만들어서 컴파일한 결과를 얻습니다.
즉, 다운받은 소스를 문자열(string)로 저장한 후에 이것을 하드디스크에 저장하고(파일로) Tex으로 컴파일 시키는 것이지요...
아시겠지만, 하드디스크에 쓰는 속도가 늦어지는 관계로
처음 문자열을 바로 컴파일 할 수 있는 방법이 있지 않을 까 하는 생각이 들어서 질문올립니다.
저의 소견으로는 화일(디스크에 쓰여진)을 컴파일하는 경우에도 실제 그 화일의 문자열을 읽어서 진행하는 것이기 가능할 것 같습니다만...
댓글 16
-
두텁
2012.03.18 16:07
-
불변의진리
2012.03.19 09:35
답변감사합니다만, 제가 생각하고자 하는 것은 굳이 Web에서 컴파일을 하는 것이 아니라,
Local PC에서 컴파일을 하고자 하는 것입니다.
그런데 PC에서 컴파일 하기 위해서 파일을 저장하고(HDD에 쓰는 것) 난 후에 컴파일하게 되는데
이 때, HDD에 쓰는데 걸리는 시간이 불필요하지 않나 하는 생각입니다. 혹시 또다른 조언을 얻을 수 있기를 희망합니다.
-
gromob
2012.03.19 11:07
잘 모르지만 아마도 말씀하시는 것은 이미 있는 파일의 내용을 읽는 동시에 컴파일을 시키고 싶으신 것 같고요. 따로 파일로 한 번 더 저장하는 것을 줄이시려는 것 같습니다. 물론 저는 잘 모르는 관계로 아마 command line에서 내리는 tex명령이 그런 일을 할 수 있을지도 모르겠지만 결국은 메모리에는 한 번은 적을 것이고 사이즈가 크던가 하면 자동으로 하드로 옮길 가능성이 있겠지요.
제 생각은 이런 작업이 많이 반복된다면 비용을 조금 들이셔서 하드를 SSD로 바꾸어 보시는 것이 도움이 되지 않을까 싶습니다.
원하시는 답은 (되는지 안되는지) ndh 님께서 해 주실지도...
ndh 이름 좋아요.^^ n과 height differential 의 곱. 적분하면 minimal surface를 얻을지도...
-
ndh
2012.03.21 12:56
무슨 말씀인지 잘 모르지만서도... 위대하신 wolframalpha께서는 다음과 같은 그림을 보여주시는군요. ^^;
-
gromob
2012.03.21 17:25
저도 뭔지 모르지만 재미있는 것이 있군요.^^
Collaboration의 위력이랄까..
근데 무슨 명령을 주신건가요?
-
ndh
2012.03.21 17:49
\( \int n\, dh \)
라고 하였습니다만...
-
DohyunKim
2012.03.19 11:15
원래 tex은 터미널 상에서 한줄씩 문자열을 입력하는 것을 처리하도록 만들어졌습니다.
다음 명령을 터미널에서 내려보세요.
pdflatex -jobname=test '\relax\documentclass{article}\begin{document}a\end{document}'
-jobname 옵션이 없으면 기본값인 texput 또는 최초 읽어들이는 파일명을 결과물 이름으로 간주하므로
반드시 jobname을 주는 게 좋습니다.
-
불변의진리
2012.03.19 11:37
대단히 김사합니다.
무식한 제게 이런 도움을 테스트해보겠습니다.
언제쯤 저도 두텁, gromob, DohyunKim님처럼 수준있는 답으로 다른 유저들을 기쁘게 해줄지.....
-
불변의진리
2012.03.20 16:01
DohyunKim님께 여쭙습니다.말씀드린 방법대로 실행해보면 가능하군요..그런데 제가 사용하려는 문자열이 너무 복잡해서인지 잘 안됩니다. 도움이 될만한 다른 소스를 알려주시면 감사하겠습니다. -
ndh
2012.03.21 12:53
잘 안 되는 경우는 잘 안 되는 샘플(요컨대 컴파일하고자 하는 문자열)을 보여주셔야 어떻게든 해봅니다.
문제가 될 것 같은 것은 백슬래시를 \\로 표현해야 하는 경우도 있다는 정도... 아닐까 싶은데요.
-
yihoze
2012.03.20 18:36
속도가 그리 큰 문제가 되나요? 김도현 교수님이 제시한 그 방법이 통한다고 해도 어차피 aux, toc, lof, lot 등등의 파일이 만들어질 터이니 파일로부터 처리하는 방식을 그대로 수용하는 것이 나으리라 생각합니다. 그보다 편리한 인터페이스를 만드는 것에 치중하는 것이 좋지 않을런지요? 아주 오래 전에 웹에 파일을 올리거나 무언가를 입력해서 PDF 파일을 얻는 방법을 시도했었습니다. (근무 일지 작성하기, 견적서 만들기 따위) 그 흔적을 http://faq.ktug.or.kr/faq/hoze/webtex에서 볼 수 있습니다. 에러가 발생하지 않게 하거나 에러가 발생했을 때 이를 손쉽게 처리하는 인터페이스를 만드는 것이 역시 쉽지 않았습니다.
-
불변의진리
2012.03.20 18:41
yihoze님의 관심에 감사드립니다.문제은행 프로그램을 구현중입니다. 하드디스크에 파일쓰는 부분에서 가장 속도가 느리게 나오는 군요.
예를 들어 500문제짜리 수학문제지를 만든다고 하면 기존에 DB(역시HDD에 쓰여져 있지만)에서 읽어서 문자열로 메모리에 저장하는 과정은 속도가빠른데 이 문자열들을 하드에 쓰는 시간에 지연되는 시간이 너무 많습니다. (실제로는 2,3초에 불과하지만, 프로그램이 정지된 느낌..)
말씀하신대로 aux, toc, lof, lot등등의 파일을 만드는 과정은 Tex을 컴파일하는 과정 중이라서 체감되는 지연시간이 없는데
문자열을 TeX파일로 저장할 때는 체감속도가 너무 느려서 문자열자체로 컴파일해보고자 합니다.
-
샘처럼
2012.03.21 11:33
HDD에서 읽고 쓰기가 병목지점이라고 생각하신다면, RAM을 증설하시고, RAM을 ram drive로 잡으신 후, 이쪽에서 작업을 하시면 어떨까요? SSD보다도 더 빠른 반응을 보일 듯 합니다. (다만, 작업중 컴퓨터가 꺼진다면.. 이라는 문제가 있지만, DB에서 가져오는 방식이므로 큰 문제는 되지 않을 것 같네요. )
-
gromob
2012.03.21 17:27
현실적인 정답이 될지도 모른다는 생각을 하며...
20년 전에나 생각했음직한 것이 대량 작업에는 아직도 쓸모 있겠군요.
kdh 교수님의 방법이 통한다면 db도 ram drive에 옮기고 작업하면 엄청 빠를 듯.
-
불변의진리
2012.03.22 09:34
RAM DRIVE 설정이라......
이론적으로는 매우 좋은 방법이라고 생각됩니다.
시도해 보겠습니다. (온고지신이라는 말이 생각남은 왜일까요...)
관심과 답변주신 모든 분께 감사드립니다.
-
DohyunKim
2012.03.22 10:09
펄을 끌어들이는 게 오히려 속도를 저하시킬지도 모르겠지만 아무튼 입력 버퍼의 한계는 피할 수 있을 겁니다.
#!/usr/bin/perl open (FH, '| pdflatex -jobname=test') or die; print FH "\\relax\n"; print FH "\\documentclass{article}\n"; print FH "\\begin{document}\n"; print FH "a\n"; print FH "\\end{document}\n"; close FH;
혹시 이스케이프시킬 문자가 문제된다면, 실험해보니 a's 를 찍으려면
'a'"'"'s'
방식으로만 이스케이프가 가능한 것 같군요.
(La)TeX 컴파일러를 컴포넌트로 사용하려는 노력들이 꽤 있습니다. 문서 컴파일을 프로세스 간 통신으로 하기 위해 tex 데몬을 만들려는 노력도 있었지요. 질문하신 것은 tex 컴파일러가 파이핑을 지원한다던가 하면 되는 일인데 아쉽게도 그런 기능은 지원되지 않습니다. 그래도 질문하신 내용에 관련된 것을 하나 소개하면, CLSI (common latex service interface)라는 것이 있습니다. 텍 파일의 컴파일/변환 등을 웹서비스로 제공하는 프레임워크인데, 이 곳(http://code.google.com/p/common-latex-service-interface)이 원래 사이트이고 최근에는 온라인 텍 컴파일 서비스인 scribtex (http://www.scribtex.com)에서 관리하는 이 곳(https://github.com/scribtex/clsi)이 더 잘 관리된다고 합니다. 텍 컴파일을 웹API로 제공하여 xml이나 JSON 형식의 문서를 넘기면 그 결과를 돌려주도록 하는 것이지요. 얼마나 잘 동작하는지는 잘 모르겠습니다.