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>처럼 입력하시면 좋습니다.
문자열 읽어오기
2015.05.22 15:28
한 디렉토리에 이미지 파일들이 있습니다.
#>dir *.png /b > ImageDir.txt
그러면 ImageDir.txt 안에
foo1.png
foo2.png
이런 식으로 들어가겠죠.
이걸 읽어서 이미지 목록 파일을 만들고자 합니다.
\documentclass{memoir}
\usepackage{ksforloop}
\usepackage{graphicx}
\begin{document}
\newinputstream{ImageFileName}
\openinputfile{ImageDir.txt}{ImageFileName}
\ksforloop{}{100}{%
\includegraphics{\readaline{ImageFileName}}
}
\closeinputstream{images}
\end{document}
문제는 ,
\readaline이 제가 기대한 대로 읽어주지 않는다는 겁니다. 한 글자씩 토큰으로 날리는 것 같습니다.
가장 좋은 것은 한 줄 받아서 그것을 어딘가에 저장해 두었다가 파일이 있는지 먼저 확인하고 있으면 불러오는 식으로 하는 것입니다.
foo_1.png처럼 파일 이름에 언더스코어가 있는 것도 문제가 될 듯합니다.
댓글 7
-
locutione
2015.05.22 15:36
-
yihoze
2015.05.22 16:42
고맙습니다.
파일 이름을 표시하고자 $#1$를 추가했는데 언더바가, 신기하게도, 서브스크립트가 되지 않고 제대로 표시됩니다.
-
DohyunKim
2015.05.22 18:23
e-TeX 매크로를 이용해서 비슷하게 만들어봤습니다.
\newread\imglist \def\stripcrchar#1{\expandafter\stripCRchar#1#1} \begingroup \catcode13=12 % \gdef\stripCRchar#1^^M#2{\def#2{#1}} % \endgroup \openin\imglist ImageDir.txt\relax \loop \readline\imglist to \temp \unless\ifeof\imglist \stripcrchar\temp \ifx\temp\empty\else \includegraphics{\temp} \fi \repeat \closein\imglist
-
locutione
2015.05.22 23:50
expl3의 \ior_get_str:NN은 e-TeX의 \readline과 같은데 마지막의 EOL을 제거해줍니다. \stripcrchar가 재미있네요. 약간 귀찮게 느낌은 들지만...
-
yihoze
2015.05.26 10:44
"eTeX 매크로"란 것은 eTeX이 나오면서 추가된 프리미티브란 뜻인가요?
-
DohyunKim
2015.05.26 11:37
"e-TeX 프리미티브를 이용한 매크로" 의 뜻입니다.
따라서 TeX Live의 플레인텍에선 동작하지 않습니다.
\readline, \unless 따위가 e-TeX 프리미티브입니다.
texdoc etex 하면 추가된 명령을 볼 수 있습니다.
-
yihoze
2015.05.26 20:55
etex.exe가 있음을 오늘 처음 알았습니다.
진리의 expl3로 해보겠습니다.
expl3가 이럴 때 좋습니다. 스터디 모임에 합류하시지요. ^^;
당연한 얘기겠지만 위의 루틴이 어떤 매크로 안에서 정의된다면 #1은 ##1이 되어야 합니다.