구문 접두사 명령 만들기

구문 접두사 명령 만들기

\sffamily구문이 or 명령 일 가능성이 있는 새 명령을 생성하려면 어떻게 해야 합니까 \ttfamily? 예를 들어:

{\mycommand xxxxx}

배경 정보: font=TikZ 노드 옵션은 \mycommand{}. 이것은 잘 작동합니다:

\tikzstyle{JSToken} = [shape=rounded rectangle,font={\ttfamily}]

그러나 이것은 작동하지 않습니다

\tikzstyle{JSToken} = [shape=rounded rectangle,font={\texttt}]

\myfancyformat그리고 다음 형식으로 사용할 수 있도록 노드 클래스의 텍스트 형식을 사용자 정의하는 명령이 필요합니다 .

{\myfancyformat Stupid Text needs Fancy Format}

다음과 동일한 구문을 갖습니다 \sffamily.

{\sffamily Some Sans Serif formated Text}

내 생각을 표현할 수 있기를 바랍니다.

답변1

제어 시퀀스 \foo에 사용되는 경우 {\foo something}일반적으로 TeX 레지스터 및/또는 글꼴 선택의 내부 설정 집합으로 확장되는 매개변수 없는 매크로인 것이 거의 확실합니다. TeX에는 내부 레지스터가 있으며 그 값은 내부 TeX 알고리즘(문단 너비, 기준선 건너뛰기 크기 등)에 영향을 줍니다. 이 경우 {그룹 시작 및 }그룹 끝이며 레지스터 설정이나 글꼴 선택은 이 그룹에서 로컬입니다. 이는 그룹이 종료될 때, 즉 에서 이전 매개변수 값이 복원된다는 의미입니다 }.

제어 시퀀스에 \foo사용법이 있는 경우 \foo{something}이는 단일 매개변수( 로 정의됨)가 있는 매크로임이 거의 확실하며 해당 매개변수가 공식적으로 표시되는 곳 \def\foo#1{body}으로 확장되고 어떤 방식으로든 명령에 의해 사용될 수 있습니다 . 이 경우 컨텍스트 의 및는 시작/끝 그룹이 아니지만 매개변수 구분 기호일 뿐입니다. 그들은 여기서 또 다른 역할을 합니다. TeX은 상황에 따른 해석기입니다.body#1body{}\foo{something}

\foo매개변수 없이 사용법이 포함된 매크로가 있는 경우 다음과 같은 구문을 사용하여 {\foo something}새 매크로를 정의할 수 있습니다 .\newfoo\newfoo{something}

\def\newfoo#1{{\foo #1}}

여기에서 첫 번째는 {매크로 본문을 열고(TeX 프리미티브가 사용될 때 구문 규칙의 일부임 \def) 두 번째는 확장될 {때 그룹을 엽니다 \newfoo. 그런 다음 \foo일부 TeX 매개변수를 설정하고 매개변수 #1가 인쇄된 다음 첫 번째 }. 두 번째는 프리미티브 }의 구문 규칙의 일부입니다 \def.

반대 방법: \foo{something}구문 에서 {\newfoo something}구문으로 가는 것이 때때로 가능하지만 더 까다롭고 pure를 사용하는 경우보다 시작/끝 그룹이 하나 더 많습니다 \foo{something}.

\def\newfooA#1{\foo{#1}\egroup}
\def\newfoo{\expandafter\newfooA\expandafter{\iffalse}\fi}

답변2

구문에 중괄호가 포함된다는 잘못된 생각을 갖고 있는 것 같습니다 \ttfamily. 그렇지 않습니다. \color{red}해당 지점에서 색상을 변경 하거나 \large해당 지점에서 글꼴 크기를 변경하는 것처럼 단순히 해당 지점에서 글꼴을 변경합니다.

따라서 구문에 대해 특별히 수행해야 할 작업은 없습니다.

\newcommand\mycommand{\color{red}\large\ttfamily}

필요한 구문으로 큰 빨간색 고정 폭을 만듭니다.

관련 정보