TeX의 "단락이 ... 전에 끝났습니다." 오류

TeX의 "단락이 ... 전에 끝났습니다." 오류

TeX을 가지고 놀다가 이상한 오류를 발견했습니다. 이것은 내 입력 파일입니다.

\def\twice#1{#1#1}
\def\hello{Hello World.\par}

\twice{\hello} % works
\twice{Hello World. } % works
\twice{Hello World.\par} % doesn't work
\end

이것을 로 컴파일하면 pdftex다음 오류가 발생합니다.

(./hello.tex
Runaway argument?
{Hello World.
! Paragraph ended before \twice was complete.
<to be read again> 
                   \par 
l.6 \twice{Hello World.\par
                           } % doesn't work
!  ==> Fatal error occurred, no output PDF file produced!

줄을 제거하면 \twice{Hello World.\par}컴파일이 성공하고 예상한 출력을 얻습니다.

\twice{\hello}작동하지만 \twice{Hello World.\par}작동하지 않습니까?

\someMacro{someText\par}항상 작동 하도록 변경하는 일반적인 기술이 작동합니까 \def\defText{someText\par} \def\someMacro{\defText}? 일부 매크로에 대한 매개변수로 사용하려는 모든 단락에 대해 매크로를 정의하지 않는 데 도움이 될 수 있는 대안이 있습니까?

답변1

누락으로 }인해 전체 문서가 인수의 끝을 검색하는 것을 방지하기 위해 기본적으로 \par매크로 인수에는 (또는 빈 줄)이 허용되지 않습니다. 인수에 여러 단락을 허용하는 명령을 \long\def정의 하려면\def 사용하십시오 .

관련 정보