
Como posso criar um novo comando, cuja sintaxe é provavelmente o comando \sffamily
ou \ttfamily
. Por exemplo:
{\mycommand xxxxx}
Informações básicas: a opção font=
do nó TikZ não permite comandos como \mycommand{}
. Isso funciona bem:
\tikzstyle{JSToken} = [shape=rounded rectangle,font={\ttfamily}]
Mas isso não funciona
\tikzstyle{JSToken} = [shape=rounded rectangle,font={\texttt}]
E preciso de um comando \myfancyformat
para customizar o formato de texto de uma classe de nós, para que eu possa utilizá-lo desta forma:
{\myfancyformat Stupid Text needs Fancy Format}
Tem a mesma sintaxe de \sffamily
:
{\sffamily Some Sans Serif formated Text}
Espero poder expressar minha ideia.
Responder1
Se uma sequência de controle \foo
tiver uso {\foo something}
, então é quase certo que seja uma macro sem parâmetro que normalmente se expande para um conjunto de configurações internas de registros TeX e/ou seleção de fonte. TeX possui registros internos, seu valor influencia algoritmos internos do TeX: largura do parágrafo, tamanho do salto de linha de base, etc. O {
início do grupo e }
o fim do grupo neste caso e as configurações dos registros ou seleção de fonte são locais neste grupo. Isso significa que os valores dos parâmetros anteriores são restaurados quando o grupo termina, ou seja, em }
.
Se uma sequência de controle \foo
tiver uso \foo{something}
, então é quase certamente uma macro com um único parâmetro (definido por \def\foo#1{body}
) e se expande para body
onde seu parâmetro é formalmente marcado como #1
e pode ser usado por comandos de body
qualquer forma. Observe que {
e }
no contexto \foo{something}
não são grupos de início/fim neste caso, mas são apenas delimitadores de parâmetros. Eles desempenham outro papel aqui. TeX é um intérprete dependente do contexto.
Se você tiver uma macro \foo
sem parâmetro com o uso {\foo something}
, poderá definir uma nova macro \newfoo
com a sintaxe \newfoo{something}
como esta:
\def\newfoo#1{{\foo #1}}
Observe que o primeiro {
aqui abre o corpo da macro (faz parte da regra de sintaxe quando \def
o primitivo TeX é usado) e o segundo {
abre um grupo quando \newfoo
é expandido. Em seguida, \foo
define alguns parâmetros do TeX, então um parâmetro #1
é impresso e então o grupo é fechado devido ao primeiro }
. A segunda }
faz parte de uma regra de sintaxe \def
primitiva.
O caminho inverso: de \foo{something}
sintaxe para {\newfoo something}
sintaxe às vezes é possível, mas é mais complicado e você tem mais um início/fim de grupo do que se puro \foo{something}
fosse usado:
\def\newfooA#1{\foo{#1}\egroup}
\def\newfoo{\expandafter\newfooA\expandafter{\iffalse}\fi}
Responder2
Você parece ter a falsa ideia de que a sintaxe \ttfamily
inclui colchetes. Isso não acontece, simplesmente altera a fonte naquele ponto, assim como \color{red}
altera a cor naquele ponto ou \large
altera o tamanho da fonte naquele ponto.
Portanto, não há nada de especial que você precise fazer em relação à sintaxe: se você definir
\newcommand\mycommand{\color{red}\large\ttfamily}
ele criará um grande monoespaço vermelho com a sintaxe necessária.