
¿Cómo puedo crear un nuevo comando, cuya sintaxis probablemente sea el comando \sffamily
o ? \ttfamily
Por ejemplo:
{\mycommand xxxxx}
Información general: la opción font=
de TikZ Node no permite comandos como \mycommand{}
. Esto funciona bien:
\tikzstyle{JSToken} = [shape=rounded rectangle,font={\ttfamily}]
Pero esto no funciona
\tikzstyle{JSToken} = [shape=rounded rectangle,font={\texttt}]
Y necesito un comando \myfancyformat
para personalizar el formato de texto de una clase de nodos, para poder usarlo de esta forma:
{\myfancyformat Stupid Text needs Fancy Format}
Tiene la misma sintaxis que \sffamily
:
{\sffamily Some Sans Serif formated Text}
Espero poder expresar mi idea.
Respuesta1
\foo
Si se utiliza una secuencia de control {\foo something}
, es casi seguro que se trata de una macro sin parámetros que normalmente se expande a un conjunto de configuraciones internas de registros TeX y/o selección de fuentes. TeX tiene registros internos, su valor influye en los algoritmos internos de TeX: ancho del párrafo, tamaño de salto de línea base, etc. El {
inicio y }
el final del grupo en este caso y la configuración de los registros o la selección de fuente es local en este grupo. Significa que los valores de los parámetros anteriores se restauran cuando finaliza el grupo, es decir, en }
.
Si una secuencia de control \foo
tiene uso \foo{something}
, entonces es casi seguro que es una macro con un solo parámetro (definido por \def\foo#1{body}
) y se expande hasta body
donde su parámetro está formalmente marcado #1
y puede ser utilizado por comandos de body
cualquier manera. Tenga en cuenta que {
y }
en el contexto \foo{something}
no son grupos de inicio/fin en este caso, sino que son solo delimitadores de parámetros. Aquí juegan otro papel. TeX es un intérprete dependiente del contexto.
Si tiene una macro \foo
sin parámetro con el uso {\foo something}
, entonces puede definir una nueva macro \newfoo
con la sintaxis \newfoo{something}
como esta:
\def\newfoo#1{{\foo #1}}
Tenga en cuenta que el primero {
aquí abre el cuerpo de la macro (es parte de la regla de sintaxis cuando \def
se usa la primitiva TeX) y el segundo {
abre un grupo cuando \newfoo
se expande. Luego \foo
establece algunos parámetros TeX, luego #1
se imprime un parámetro y luego el grupo se cierra debido al primer archivo }
. El segundo }
es parte de una regla de sintaxis de \def
primitivo.
A veces es posible el modo inverso: de \foo{something}
sintaxis en {\newfoo something}
sintaxis, pero es más complicado y tienes un inicio/fin de grupo más que si \foo{something}
se usa puro:
\def\newfooA#1{\foo{#1}\egroup}
\def\newfoo{\expandafter\newfooA\expandafter{\iffalse}\fi}
Respuesta2
Parece tener la idea falsa de que la sintaxis de \ttfamily
incluye llaves. No es así, simplemente cambia la fuente en ese punto, al igual que \color{red}
cambia el color en ese punto o \large
cambia el tamaño de fuente en ese punto.
Así que no hay nada especial que debas hacer con la sintaxis: si defines
\newcommand\mycommand{\color{red}\large\ttfamily}
creará un gran monoespacio rojo con la sintaxis requerida.