입력을 순차 번호로 변환하는 명령

입력을 순차 번호로 변환하는 명령

입력을 일련 번호로 변환할 수 있는 명령이 있습니까(그리고 해당 입력이 다시 사용될 때 명령은 이전에 할당된 번호를 불러옵니다)?

맥락: 저는 다양한 과학 실험에 대해 논의했습니다. 소스 TEX 파일에서는 내 연구 노트를 참조한 실험 번호를 사용하고 있지만 최종 PDF에서는 순차적으로 번호를 매겼으면 합니다. 분명히 동일한 실험에 동일한 숫자가 사용되기를 바랍니다. 실험이 처음 언급되면 새로운 프로그레시브 번호를 받아야 하며, 그렇지 않으면 해당 실험에 할당된 번호를 기억해야 합니다.

% the \magicnumbering is a command name that I invented for this purpose!

\documentclass{report}

\begin{document}

I did \magicnumbering{experimentA} before \magicnumbering{experimentB}, but \magicnumbering{experimentC} was done even before \magicnumbering{experimentA}.

\end{document}

이 MWE를 인쇄하고 싶습니다.

2번 전에 1번을 했는데 1번 전에도 3번을 했어요.

내가 찾을 수 없는 매우 간단한 해결책이 있다고 확신합니다. 제가 무지해서 죄송합니다. 도움이 되셨으면 좋겠습니다.

답변1

다음은 속성 목록에 키를 저장하여( 사용 expl3) 이를 수행합니다. 출력 형식을 변경하려면 의 정의를 변경하면 됩니다 \magicnumbering_output:n.

\documentclass[]{report}

\ExplSyntaxOn
\prop_new:N \g_magicnumbering_numbers_prop
\int_new:N \g_magicnumbering_current_int
\tl_new:N \l_magicnumbering_output_tl
\cs_new_protected:Npn \magicnumbering_output:n #1
  {
    #1
  }
\cs_generate_variant:Nn \magicnumbering_output:n { V }
\cs_new_protected:Npn \magicnumbering_parse:n #1
  {
    \prop_get:NnNTF
      \g_magicnumbering_numbers_prop {#1} \l_magicnumbering_output_tl
      { \magicnumbering_output:V \l_magicnumbering_output_tl }
      {
        \int_gincr:N \g_magicnumbering_current_int
        \prop_put:NnV
          \g_magicnumbering_numbers_prop {#1} \g_magicnumbering_current_int
        \magicnumbering_output:V \g_magicnumbering_current_int
      }
  }
\NewDocumentCommand \magicnumbering { m } { \magicnumbering_parse:n {#1} }
\ExplSyntaxOff

\begin{document}
I did \magicnumbering{experimentA} before \magicnumbering{experimentB}, but
\magicnumbering{experimentC} was done even before
\magicnumbering{experimentA}.
\end{document}

여기에 이미지 설명을 입력하세요

관련 정보