\end{filecontents}와 \input{}은 같은 줄에 있습니다.

\end{filecontents}와 \input{}은 같은 줄에 있습니다.

이 코드는 다음의 내용을 보여주는 출력을 생성합니다.excerpt1.tex

\documentclass{article}
\usepackage{filecontents}

\begin{document}
Pragraph is starting.
\begin{filecontents}{excerpt1.tex}
Part that must be in two documents.
\end{filecontents}
\input{excerpt1.tex}
Paragraph ends.
\end{document}

이 코드는 다음의 내용을 보여주는 출력을 생성하지 않습니다.excerpt1.tex

\documentclass{article}
\usepackage{filecontents}

\begin{document}
Pragraph is starting.
\begin{filecontents}{excerpt1.tex}
Part that must be in two documents.
\end{filecontents}\input{excerpt1.tex}
Paragraph ends.
\end{document}

이런 상황이 발생한 이유가 궁금합니다. 나는 매우 중요한 문서에서 이 변칙적인 현상을 발견했습니다. 복구할 수 없는 오류가 발생하기 전에 고려해야 할 주의 사항 목록이 있습니까?

답변1

주석에 언급된 대로 \end{filecontents}줄 끝까지의 텍스트는 무시됩니다. 따라서 발췌 앞의 공백은 \input다음 줄에 있기 때문에 발생하지 않습니다. 실제로 발췌 앞의 공백은 '단락이 시작됩니다.' 이후의 줄 바꿈으로 인해 발생합니다. 이를 제거하는 가장 간단한 방법은 줄 끝에 백분율 기호를 사용하는 것입니다. 마찬가지로 '두 문서' 뒤에는 백분율이 필요합니다. \input{excerpt1.tex}발췌문 뒤에 공백이 생기지 않도록 합니다 .

\documentclass{article}
\usepackage{filecontents}
\begin{document}
Paragraph is starting.%
\begin{filecontents}{excerpt1.tex}
Part that must be in two documents.% 
\end{filecontents}
\input{excerpt1.tex}%
Paragraph ends.
\end{document}

이들 중 하나는 를 사용하여 자동화할 수 있습니다 \ignorespaces.

\documentclass{article}
\usepackage{filecontents}
\newcommand\myinput[1]{\input{#1}\ignorespaces} 
Paragraph is starting.%  
\begin{filecontents}{excerpt1.tex}
Part that must be in two documents.% 
\end{filecontents}
\myinput{excerpt1.tex}
Paragraph ends.
\end{document}

관련 정보