expl3 파 및 시퀀스

expl3 파 및 시퀀스

expl3을 탐색하면서 일부 코드를 업데이트했는데, 예상하지 못했던 흥미로운 문제에 직면했습니다.

여러 단락을 순서대로 저장하려고 하면 이상한 오류가 발생합니다. 인터페이스3 매뉴얼에서 아무것도 찾지 못했습니다. 이 문제를 해결할 수 있는 방법을 아는 사람이 있습니까?

관심있는 분들을 위해 가변저장에 대한 기존 방식과 새로운 트레일 방식을 아래에 올려 놓았습니다.

여기 내 이전 코드가 있습니다.

\newcommand{\@supernote}{}
\newcommand{\supernote}[1]{\renewcommand\@supernote{#1}}

그리고 여기 내 새 코드가 있습니다.

\seq_new:N \itemsupernote
\NewDocumentCommand{\supernote}{sm} {
    \seq_put_right:Nn \itemsupernote {#2}
}

함수 호출은 두 경우 모두 동일한 방식으로 작동합니다.

\supernote{Here is my example

and here is the other half}

도움이 될 경우를 대비해 새 방법에 대한 내 오류는 다음과 같습니다.

runaway argument? {here is my example Paragraph ended before \supernote was omplete.
<to be read again> \par l.109 

답변1

문제는 코드 레이어(모두 '긴')에 있는 것이 아니라 인터페이스 설정에 있습니다. 문서 명령의 보다 일반적인 경우는 짧은 텍스트 조각만 가져와야 하는 것이므로 xparse'짧은' 명령을 표준으로 생성합니다. 인수를 '길게' 만들려면 인수를 다음과 같이 표시해야 합니다.+

\NewDocumentCommand \supernote { s +m }
  {
    \seq_put_right:Nn \itemsupernote {#2}
  }

xparse한 번에 모든 인수를 전환하는 대신 인수별로 긴/짧은 인수를 처리한다는 점에 유의하세요 .

관련 정보