2009-01-07 9 views
2

J'ai quelques textes standard, mais une partie est différente. Mais de ces différentes parties seulement quelques-uns existent.Comment définir une sortie en fonction d'une variable avec un statut dans LaTeX?

Par exemple, je veux:

\mytext{...}{a} 

\mytext{...}{b} 

qui produit:

\section{Item: ...}\label{item...} 
This is a standard item. Items of type a are very precious. 

\section{Item: ...}\label{item...} 
This is a standard item. Items of type b are cheap. 

Une solution simple à ce serait de définir des commandes mytexta et mytextb, mais comme je l'ai plus d'options que je veux quelque chose de plus comme si ou basculer dans les langages de programmation. Quelqu'un at-il une solution à ce problème?

+0

BTW il devrait dire "Ceci est * un * élément standard", pas * un * :-) – ShreevatsaR

+0

Merci, je l'ai corrigé. Je ne suis pas une personne parlant anglais. – Mnementh

Répondre

3

Le paquet ifthen (qui est inclus dans une installation standard de LaTeX) définit une commande \ifthenelse, qui est utilisé comme ceci:

\usepackage{ifthen} 
\ifthenelse{test}{then-code}{else-code} 

vous pourriez donc faire quelque chose de similaire à:

\newcommand\mytext[1]{% 
    \ifthenelse{\equal{#1}{a}}{very precious}{% 
    \ifthenelse{\equal{#1}{b}}{cheap}{unknown}}} 

Pour la programmation LaTeX, je vous recommande d'obtenir une copie de The LaTeX Companion. C'est une très bonne référence pour ce genre de choses.

2

Vous pouvez utiliser \ newif \ iffoo pour déclarer une nouvelle condition. Puis \ footrue ou \ foofalse le définit sur true ou false, et vous pouvez l'utiliser avec \ iffoo ... \ else ... \ fi.

Il existe d'autres conditions, voir pages 209ff du TeXbook.

Questions connexes