
LaTeX에서는 와 같은 표현식을 작성하는 것이 가능하며 \frac12
이는 와 같은 표현식과 동일해야 합니다 \frac{1}{2}
. 첫 번째 형태의 표기법에 대한 공식적인 용어가 있나요?
답변1
아니요.
이는 TeX가 구분되지 않은 매크로 인수를 흡수하는 일반적인 방식의 일부일 뿐입니다. 정의한다면
\def\foo#1{Something using #1 (or not).}
또는 동등하게
\newcommand\foo[1]{Something using #1 (or not).}
확장 되면 입력 스트림의 다음 토큰 또는 균형 그룹을 인수로 흡수합니다( 정의에서 \foo
사용 가능 ). #1
일반 카테고리 코드를 가정
- 토큰은 단일 문자(
\
,{
,}
또는%
공백 또는 개행 제외(무시되므로)) 또는 명령 시퀀스( 로 시작하는 것\
)입니다. - 균형 잡힌 그룹은 다른 그룹(나중에 시작된)에 속하지 않는
{
첫 번째 그룹으로 시작하고 끝납니다 .}
버팀대는 흡수 시 그룹에서 제거됩니다(즉,#1
포함하지 않음).
이것이 \foo x
and \foo{x}
, \newcommand{\foo}
and \newcommand\foo
or \frac 12
, \frac{1}{2}
및 \frac{1}2
가 \frac1 2
동일한 이유입니다.
가장 명확한 버전을 선택하는 것이 좋습니다. 이는 일반적으로 그룹을 사용하는 것을 의미합니다. 개인적으로 나는 다음과 같은 경우에는 명시적으로 그룹을 생략합니다.~해야 한다와 같은 단일 토큰을 입력합니다 \newcommand\foo
.
답변2
단일 토큰 인수와 중괄호 안의 인수를 구별하는 것이 LaTeX3/ 에서 더 명확하다는 점을 추가할 가치가 있습니다 expl3
. 관례적으로, 모든 expl3
매크로 이름은 인수 지정자라고 불리는 일련의 문자로 끝나야 하며 :
, 각 문자는 해당 인수의 유형을 반영합니다.
다른 많은 것 외에도 우리는
n
중괄호 그룹 또는 단일 토큰 인수의 경우N
단일 토큰 인수의 경우 일반적으로 매크로/함수 이름 또는 변수 이름입니다.
이러한 지정자는 (La)TeX가 개별 인수를 처리하는 방식을 여전히 변경하지 않지만 매크로 내에서 인수가 사용되는 방법에 대한 힌트를 사용자에게 제공합니다.
예를 들어 l3tl
패키지는 두 가지 기능을 제공 합니다 \tl_if_empty:nTF
. \tl_if_empty:NTF
두 함수 모두 토큰 목록이 비어 있는지 확인하고 조건에 따라 코드를 실행하는 반면, 전자는 중괄호로 묶인 토큰 그룹과 함께 호출될 것으로 예상되며, 후자는 해당 콘텐츠에 대한 테스트가 수행되기 전에 먼저 확장되는 토큰 목록 변수를 예상합니다.