
\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
#1
body
{
}
\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}
필요한 구문으로 큰 빨간색 고정 폭을 만듭니다.