\tag에는 중괄호가 필요하고 \frac에는 중괄호가 필요하지 않은 이유는 무엇입니까?

\tag에는 중괄호가 필요하고 \frac에는 중괄호가 필요하지 않은 이유는 무엇입니까?

나는 Markdown+MathJax 대신 \tag중괄호 없이 사용하는 데 익숙합니다. 여기서는 일반 LaTeX 처럼 잘 작동합니다 . 하지만 로 처리된 실제 소스에서 이 작업을 수행하려고 하면 몇 가지 오류가 발생했습니다.\tag3\tag{3}\frac12.texpdflatex

코드는 다음과 같습니다.

\documentclass[]{article}
\usepackage{amsmath}
\begin{document}

\[f(x)=\frac32\tag1\]

\end{document}

그리고 이것이 pdflatex말하는 것입니다

This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) (preloaded format=pdflatex)
 restricted \write18 enabled.
entering extended mode
(./test.tex
LaTeX2e <2017-04-15>
Babel <3.18> and hyphenation patterns for 3 language(s) loaded.
(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls
Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo))
(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty
For additional information on amsmath, use the `?' option.
(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty
(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty))
(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty)
(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty))
No file test.aux.
Runaway argument?
1\] 
! Paragraph ended before \tag was complete.
<to be read again> 
                   \par 
l.6 

중괄호로 묶으면 1정상적으로 컴파일되고 예상되는 PDF 출력을 얻습니다. 그렇다면 왜 \tag중괄호가 필요하지만 \frac그렇지 않은지 궁금합니다 . 예를 들어 \tag패키지 제공 기능인 반면 \frac언어 핵심( \usepackage적어도 필요하지 않음)에서 나온 것과 같은 객체의 "유형"에 약간의 차이가 있습니까 ?

답변1

매크로는 \frac(강력하게) 다음과 같이 정의됩니다.

\frac#1#2 -> \begingroup #1 \endgroup \@@over #2

\@@overTeX 프리미티브(복사본)는 어디에 있습니까? 따라서 이 경우에는 실제로 쓸 수 있으며 \frac12와 동일합니다 \frac{1}{2}. 저를 포함한 많은 사람들이 이렇게 하지 말라고 할 것입니다. (비록 이렇게 짧은 부분에서는 항상 내 조언을 따르지는 않지만...)

반면에, displaymath의 시작 부분에는 to 가 \tag있는데 , 그 정의는 다음과 같습니다.\let\tag@in@display

\def\tag@in@display#1#{\relax\tag@in@display@a{#1}}

까다로운 부분은 #대체 텍스트의 여는 중괄호 앞입니다. TeX는 여는 중괄호까지 첫 번째 인수를 찾습니다(나중에 이 첫 번째 인수가 star 인지 확인합니다 *). 이 메커니즘이 어떻게 작동하는지에 대한 자세한 내용은 다음 질문을 참조하십시오.#{ 매크로 인수를 가져옵니다.(특히마틴 샤러의 답변) 그리고#을 마지막 매개변수로 사용하는 매크로. 그러나 짧은 대답은 다음과 같습니다. TeX는 인수를 수집하기 위해 여는 중괄호를 검색 #1하고 어느 시점에서 허용되지 않는 빈 줄(새 문단으로 변환됨)을 발견하여 Paragraph ended오류가 발생합니다.

관련 정보