Come definire l'output in base a una variabile con uno stato in LaTeX?
-
05-07-2019 - |
Domanda
Ho alcuni testi standard, ma una parte di esso è diversa. Ma di queste diverse parti ne esistono solo alcune.
Ad esempio, voglio:
\mytext{...}{a}
\mytext{...}{b}
Questo produce:
\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.
Una semplice soluzione a ciò sarebbe quella di definire i comandi mytexta e mytextb, ma poiché ho più opzioni voglio più qualcosa come un if o cambiare i linguaggi di programmazione. Qualcuno ha una soluzione per questo problema?
Soluzione
Il pacchetto ifthen
(che è incluso in un'installazione standard di LaTeX) definisce un comando \ ifthenelse
, che viene utilizzato in questo modo:
\usepackage{ifthen}
\ifthenelse{test}{then-code}{else-code}
in modo da poter fare qualcosa di simile a:
\newcommand\mytext[1]{%
\ifthenelse{\equal{#1}{a}}{very precious}{%
\ifthenelse{\equal{#1}{b}}{cheap}{unknown}}}
Per la programmazione LaTeX, consiglierei di ottenere una copia di The LaTeX Companion . È un ottimo riferimento per questa roba.
Altri suggerimenti
Puoi usare \ newif \ iffoo per dichiarare una nuova condizione. Quindi \ footrue o \ foofalse lo imposta su vero o falso, e puoi usarlo da \ iffoo ... \ else ... \ fi.
Ci sono più condizionali, vedi pagine 209ff nel TeXbook.