2008-12-31 7 views
3

Je suis nouveau à LaTeX et je dois dire que je suis vraiment aux prises avec ça. J'ai découvert la commande \ newcommand qui ressemble à une fonction/méthode dans les langages de programmation courants. Vous pouvez lui donner des arguments et tout. Je me demandais cependant, puis-je en quelque sorte itérer dans LaTeX? Fondamentalement, ce que je voudrais faire est de créer une table avec N + 1 colonnes où la première rangée contient juste une cellule vide et puis les nombres 1, 2, ..., N dans les autres colonnes. Je veux seulement donner N comme argument à cette 'fonction' (nouvelle commande).Pouvez-vous itérer dans LaTeX?

Voici un exemple de quelque chose qui pourrait ressembler à ce que je suis à la recherche (bien évidemment, cela ne fonctionnera pas):

\newcommand{\mytable}[2]{ 
\begin{tabular}{l|*{#1}{c|}} % table with first argument+1 columns 
    for(int i = 1; i <= #1; i++) "& i" % 'output' numbers in different columns 
    \\\hline 
    letters & #2 % second argument should contain actual content for row 
    \\\hline 
\end{tabular} 
}

Appelez avec:

\mytable{3}{a & b & c}

sortie devrait être:

  | 1 | 2 | 3 | 
--------+---+---+---+ 
letters | a | b | c | 
--------+---+---+---+

Est-ce que quelqu'un sait si quelque chose comme ceci est possible?

Merci!

+0

comme LaTeX est un ensemble de macros pour TeX et TeX est Turing-complet, il devrait être possible, même si vous besoin d'une TeX grave piratage – bandi

+0

duplication possible de [itération en latex] (http://stackoverflow.com/questions/2561791/iteration-in-latex) – Gilles

Répondre

3

Auntie Google indique yes.

+0

Je suis un tel imbécile ... J'ai cherché "itérer", mais pas des choses évidentes comme "pour" et "boucle". Merci! – Jordi

+0

Ce code nécessite que l'utilisateur nomme le compteur, ce qui signifie que les boucles d'imbrication sont fragiles. – DanielSank

2

Bien sûr que c'est possible. Vous pouvez également répéter. eplain a des macros d'itération, voir, par exemple, here.

3

Vous pouvez utiliser les jetons \ loop ou \ repeat. Ou le paquet multido.

3

Il suffit de faire ce qui suit dans une nouvelle commande et assurez-vous d'utiliser le paquet ifthen.

\begin{tabular}{l|*{10}{c|}} 
\newcounter{count} 
\whiledo{\value{count}<10}{ 
\ifthenelse{\value{count}=0}{}{\the\value{count}} 
\ifthenelse{\value{count}<9}{&}{\\} 
\stepcounter{count} 
} 
letters&a&b&c&d&e&f&g&h&i\\ 
\end{tabular} 
2

Une autre possibilité (si vous êtes paresseux comme moi) est perltex