KTUG 한국 텍 사용자 그룹

Menu

KTUG :: Q&A 마당

대체로, 답변하기 위해서 뭔가를 테스트해보아야 하는 성질의 질문을 하신다면
테스트해볼 만한 거리를 제공하시는 것이 답변을 듣기 좋습니다.

이 답변도 테스트없이 일반론입니다.


일단, \def\hereString{\input{foo.txt}} 이 명령에 대해서라면 이론상


\expandafter\def\expandafter\hereString\expandafter{\input{foo.txt}}


이건 되어야 할 듯싶습니다.


그러나 외부 파일을 저렇게 다루는 것은 foo.txt에 들어 있을 글자들의 category code가 문제를 일으킬 가능성이 너무 높습니다. 에스케이프문자라든가 유보문자라든가, \par의 처리, 의도하지 않은 인코딩 문제 등등...

좌우간 저런 식으로 뭔가를 처리하려면 input 되는 파일의 내용을 철저하게 관리하는 수밖에 없습니다.


그러므로, foo.txt 내에 아예

\def\hereString{....}

이 문장이 들어있게 하는 것입니다. 그러면 그냥 \input하면 되니까요.

그러면


\input{foo.txt}

\let\fooString=\hereString

\input{bar.txt}

\let\barString=\hereString


이런 방식으로 여러 파일에서 \fooString, \barString 등을 얻어낼 수 있습니다.

기존 .txt 파일들에 간단한 찾기/바꾸기나 sed같은 걸로 수정하는 것은 어렵지 않으므로 일반적으로 이 쪽을 권장하겠습니다.

KTUG 한국 텍 사용자 그룹