첫 번째 등호 앞과 뒤의 내용 구분

첫 번째 등호 앞과 뒤의 내용 구분

첫 번째 등호 앞과 뒤의 내용을 분리하는 데 다음 방법이 올바른 방법입니까?

\documentclass{article}

\ExplSyntaxOn

\cs_new:Npn\getbefore:w#1=#2\q_stop{#1}
\cs_new:Npn\getafter:w#1=#2\q_stop{#2}

\NewDocumentCommand\beforeafter{m}{
    \getbefore:w#1\q_stop
    \par
    \getafter:w#1\q_stop
}
\ExplSyntaxOff

\begin{document}

\beforeafter{a=2+3}

\end{document}

추신: 실제로 두 부분 모두 추가 처리를 위해 토큰 목록 변수에 저장됩니다.

답변1

이 접근 방식은 L3를 사용하지 않고 listofitems파서를 사용합니다. 가장 최근 구문 분석의 개별 조각은 \gotten[1], \gotten[2]등을 통해 얻을 수 있습니다. 전체 조각 수는 를 통해 액세스할 수 있습니다 \listlen\gotten[].

\documentclass{article}
\usepackage{listofitems}
\setsepchar{=}
\newcommand\beforeafter[1]{%
  \readlist*\gotten{#1}%
  \foreachitem\z\in\gotten[]{%
    \ifnum\zcnt=1\else\par\fi
    $\z$%
  }
}
\begin{document}
\beforeafter{a=2+3}

With 3 pieces:

\beforeafter{a = 2+3 = z_1}
\end{document}

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

답변2

이것은 바퀴를 재발명하지 않고도 말도 안되는 방법입니다.

\seq_set_split:Nnn \l_tmpa_seq { = } { #1 }
\tl_set:Ne \l_tmpa_tl { \seq_item:Nn \l_tmpa_seq { 1 } }
\tl_set:Ne \l_tmpb_tl { \seq_item:Nn \l_tmpa_seq { 2 } }

토큰이 두 개 이상인 경우에는 어떻게 되나요 =?

보관 공간을 분할하고 =나중에 토큰을 복원할 수 있습니다.

\seq_set_split_keep_spaces:Nnn \l_tmpa_seq { = } { #1 }
\seq_pop_left:NN \l_tmpa_seq \l_tmpa_tl
\tl_set:Ne \l_tmpa_tl { \tl_trim_spaces:V \l_tmpa_tl }
\tl_set:Ne \l_tmpb_tl { \seq_use:Nn \l_tmpa_seq { = } }
\tl_set:Ne \l_tmpb_tl { \tl_trim_spaces:V \l_tmpb_tl }

첫 번째 항목 왼쪽에 있는 항목 주변의 공간이 =잘리고 나머지 주변의 공간도 잘립니다.

관련 정보