Se você pensar bem, perceberá que a sintaxe de definição de comando de Knuth:
está intrinsecamente limitada a apenas 9 argumentos. Não há uma maneira direto para contornar isso: como você poderia expressar um 10th argumento? — e garantir que a sintaxe não engula algum outro uso válido?\def\blah#1#2 ... #9{}
Se você realmente tem que ter mais de 9 argumentos, o caminho a ser seguido é:
Esta técnica é facilmente extensível por pianistas de concerto do teclado do TeX, mas é muito difícil de ser recomendada.\def\blah#1#2 ... #9{% \def\ArgI{{#1}}% \def\ArgII{{#2}}% ... \def\ArgIX{{#9}}% \BlahRelay } \def\BlahRelay#1#2#3{% % arguments 1-9 are now in % \ArgI-\ArgIX % arguments 10-12 are in % #1-#3% }
Os usuários do LaTeX têm a pequena conveniência de simplesmente fornecer vários argumentos no \newcommand
que define cada parte do mecanismo de substituição: a restrição de Knuth se aplica ao \newcommand
da mesma forma que se aplica ao \def
. No entanto, os usuários do LaTeX também têm uma saída dessa bárbara sintaxe de comando: o pacote keyval.
com o keyval, e um pouco de programação, podem-se escrever comandos bem sofisticados, cuja invocação pode ser parecida com:
O mérito de tal verbosidade é que ela é autoexplicativa: o digitador não precisa se lembrar de que o argumento doze é o |tipo de solo|, e assim por diante: os comandos podem ser copiados de anotações de campo com rapidez e precisão.\flowerinstance{species=Primula veris, family=Primulaceae, location=Coldham's Common, locationtype=Common grazing land, date=1995/04/24, numplants=50, soiltype=alkaline }
* faq-mac-prog.tex (q-keyval): tweak words about getoptk
This question on the Web: http://latex.net.br/faq/FAQ-moren9.html
Do you have any question? Ask on: latex.net.br - we love qood questions!