if-then-else 내부의 특수 기호에서 VerbatimOut이 충돌합니다.

if-then-else 내부의 특수 기호에서 VerbatimOut이 충돌합니다.

이 코드는 lualatex, xelatex 및 pdflatex와 잘 컴파일됩니다.

\documentclass{article}
\usepackage{fancyvrb}
\begin{document}
\begin{VerbatimOut}{x.txt}
^^_
\end{VerbatimOut}
\end{document}

그러나 이것은 pdflatex로만 컴파일되고 lualatex 및 xelatex에서는 실패합니다.

\documentclass{article}
\usepackage{fancyvrb}
\begin{document}
\openin 15=x.txt
\ifeof 15
\begin{VerbatimOut}{x.txt}
^^_
\end{VerbatimOut}
\fi
\end{document}

이것이 내가 얻는 것입니다:

! Text line contains an invalid character.
l.7 ^^_

어떻게 컴파일하게 만들 수 있나요?모두라텍스?

답변1

그런데 여기에 약간의 문제가 있습니다. ^^_luatex의 입력이 유효하지 않으며 이를 발견하면 불평할 것입니다. 문제는 가 아니지만 이미 존재하는 \VerbatimOut경우 잘못된 분기에 있는 경우 x.txtluatex는 내용을 건너뛰지만 그럼에도 불구하고 ^^_.

예를 들어 여기서는 문제 없이 컴파일됩니다.

\documentclass{article}

\begin{document}
{
\iftrue 
\catcode`\^=11
\catcode`\_=11
^^_
\fi
}

\end{document}

하지만 변경하면 \iffalse오류가 발생합니다.

\documentclass{article}

\begin{document}
{
\iffalse 
\catcode`\^=11
\catcode`\_=11
^^_
\fi
}

\end{document}

그리고 귀하의 예에서는 파일 쓰기와 확인이 모두 작동합니다.

\documentclass{article}
\usepackage{fancyvrb}
\begin{document}
\begin{VerbatimOut}{x.txt}
^^_
\end{VerbatimOut}
\openin 15=x.txt
\ifeof 15
aaa
\fi
\end{document}

aaa그러나 그것을 교체하자마자 ^^_오류가 발생합니다. 따라서 잘못된 분기에서 이러한 입력을 피해야 합니다.

관련 정보