Q&A 마당은 텍 관련 질문/답변을 위해 만들었습니다.

  • 로그인 없이 자유롭게 글을 읽고 쓸 수 있는 철학은 처음과 같이 계속됩니다.
  • 질문 전에 아래를 읽어 보세요. 좋은 질문이 좋은 답을 받을 수 있는 좋은 방법입니다.
    • 질문에 맞는 제목을 붙이세요. 질문의 내용과 관련없는 "고수님", "긴급질문", "도와주세요"와 같은 제목은 답이 잘 올라오지 않습니다. 이 게시판에 올라오는 모든 글은 질문입니다. 굳이 [질문], [Q]를 적으실 필요도 없습니다.
    • 내용을 충실히 적어 주시고, 같은 상황을 재현할 수 있는 최소한의 예제가 같이 있어야 합니다.
    • 최소 예제는 "Minimal working example"을 읽어 보세요.
  • 파일을 첨부하실 때에는 가능한 압축하여 파일 크기를 줄여서 올려주시길 바랍니다.
  • 개인적으로 사용하신 글꼴이 들어 있는 경우, preparefont.sty에 관한 답변을 참조하세요.
  • 스팸 글을 막기 위하여 짧은 시간 내에 다시 글이 등록되는 IP를 막거나, 광고 글을 막기 위하여 금지어로 .com, .net 등을 설정하고 있습니다. 다소간의 불편함이 있으시더라도 양해 바랍니다.
    • 금지어에서 stackexchange, stackoverflow, ctan, overleaf, , github, google.com, gmail.com, .org, .io, sil.org, wiki.com, tistory.com등은 해제하였습니다.
  • MathJax를 이용한 수식조판을 사용하실 수 있습니다. 여기를 참조하세요.
  • 사용하는 편집기는 CKeditor입니다.
    • 편집기에서 [enter]를 누르면 <p> 태그가 들어가고, 문단으로 생각하고 한 줄을 비웁니다.
    • 글줄만 바꾸려면 [shift-enter]를 누르면 <BR> 태그가 들어가므로 용도에 맞게 나누어 쓸 수 있습니다.
    • 수식를 문서내에 삽입하시려면 에디터를 툴바에서 [소스]를 눌러 HTML로 입력할 수 있게 바꾸신 후 <pre> </pre> tag를 사용하셔서 <pre> 여러 줄의 수식 </pre>처럼 입력하시면 좋습니다.

noname

... 그리고 잠시후...

3: f확장의 가장 큰 효용(장점)은 주어진 위치에서 하나의 매크로만 x확장할 수 있다는 것입니다. x확장을 쓰지 않는 이유는 \cs_split_function:N의 인자로 주어지는 function을 "실행"하지 않기 위해서입니다. \exp_last_unbraced:Nf \use_i:nnn 다음에 매크로가 연이어 두 개 나오는데, f확장은 \cs_split_function:N은 "확장"되고 그 뒤에 나오는 매크로는 확장되지 않습니다. 함수의 정의에 따라 그 뒤에 나오는 N 하나를 이 함수의 인자로 처리합니다. x확장을 하면 주어진 위치의 함수가 취하는 N인자까지도 확장할 것이므로 이 맥락에서는 에러가 뜨겠죠.

"두 인자를 묶어야 하지 않나요?"에 대해서는, 만약 그렇게 줄 것이라면 \exp_last_unbraced:가 아니라 \exp_args로 하는 게 낫겠습니다. 이 경우라면 두 개가 큰 차이 없이 실행될 듯도 합니다만.

\cs_split_function:N은 인자로 주어지는 함수를 (1) 함수 이름 (2) 인자지시부 (3) 임의의 토큰(스페이스)으로 나누기 때문에 (임의의 토큰은 \endcsname을 의미하는 space이거나, 혹은 있을지도 모르는 콜론입니다), 보통의 매크로라면 first of three로 이름을 얻을 수 있습니다. \use_i:nnn은 \@firstofthree와 거의 같습니다.

4: 3에서 대략 설명이 된 듯합니다.

5: 만약 여기서 :Nn으로 한다면 \l__delim_tl에는 {\exp_last_unbraced:Nf ... }하는 매크로들이 그대로 들어가 있습니다. 이것을 x확장해주어야 이 매크로가 모두 실행된 결과인 value가 \l__delim_tl에 들어가게 되겠죠. #1이 있는데 왜 괜찮은가 하면, \tl_gset:이 불리기 전에, 즉 이 명령(\SetDelim)이 불리는 시점에 #1은 이미 교체되어 있기 때문입니다. 아무튼

\SetDelim{\in}

이라고 하면, 결과적으로 

\l__delim_tl ===> {in}

이 되게 하기 위한 것입니다.

===

중요한 것은 아니지만 \l__delim_tl은 \g__delim_tl이 나은 명명이었을까요?

 




XE Login