TeX과 친구들
파일 이름에 해시(#)가 포함된 이미지를 삽입할 때
Hoze
2020. 8. 20. 15:33
파일 이름에 해시를 쓸 생각을 한 번도 해본 적이 없다. 오늘 동료가 만든 이미지 파일들로 앨범을 만들다가 그것이 가능하다는 것을 알게 되었다. 당연히 레이텍 컴파일에서 오류가 발생한다. 손쉬운 해법은 이렇게 캣코드를 변경하는 것이다.
{\catcode`\#=12 \includegraphics{test#abc}}
하지만 이와 같은 방법을 \includegraphics 명령을 포함하는 사용자 정의 매크로에 적용한다면 다른 오류가 발생할 것이다. StackExchange에서 찾아보니, 가장 신뢰할 만한 방법이 expl3의 정규표현식을 이용하는 것이다.
\tl_set:Nn \l_tmpa_tl { #1 }
\regex_replace_all:nnN { \cP\# } { \cO\# } \l_tmpa_tl
\mymacro{\l_tmpa_tl}
\cP\#과 \cO\#은 캣코드가 6인 #을 12인 #으로 바꾸라는 뜻이다.