Re: Definizione nuovo comando sensibile alla modalità

#14350
Up
0
Down
::

Salve a tutti,
ho la necessità di usare spesso in un documento il carattere calligrafico E del pacchetto eucal, sia in modo testo, sia in quello matematico. Per questo, ho pensato di definire un nuovo comando \E che sostituisca $\mathcal{E}$ nel primo caso e \mathcal{E} nel secondo, in base all’ambiente in cui viene istanziato, attraverso un costrutto del tipo:

`\newcommand{\E}%
{“se siamo in modo testo”$\mathcal{E}$
“se siamo in modo matematico”\mathcal{E}}`
Non so come tradurlo opportunamente in codice…

`\newcommand{\E}{\ensuremath{\mathcal{E}}`
Ma, detto come si fa, dico anche che sconsiglio l’uso di questa costruzione. I simboli matematici vanno messi dentro a $…$, per obbedire al principio di marcare logicamente il proprio documento.

Più in generale, se si vuole definire un comando che faccia cose diverse in ambienti diversi, una strada è di procurarsi uno “switch”:
`\usepackage{ifthen}
\newboolean{mioswitch}
\newcommand{\miocomando}{%
\ifthenelse{\boolean{mioswitch}}
{codice 1}{codice 0}}
\newenvironment{mioambiente}
{\setboolean{mioswitch}{true} …}
{…}`
Il comando \miocomando userà ovunque (i condizionali sono falsi, di default) tranne che in “mioambiente” dove userà .

Ci sono già alcuni “switch” disponibili, fra questi “mmode” (vero in modo matematico, falso altrove).

L’uso del pacchetto ifthen non è obbligatorio, si può ottenere lo stesso risultato con sintassi diversa:
`\newif\ifmioswitch
\newcommand{\miocomando}{%
\ifmioswitch
codice 1%
\else
codice 0%
\fi}
\newenvironment{mioambiente}
{\mioswitchtrue …}
{…}`
Il comando \ensuremath{\mathcal{E}} è equivalente a
`\relax\ifmmode\mathcal{E}\else$\mathcal{E}$\fi`
Ciao
Enrico

Go to top