8
votes

Un moyen rapide de faire 26 macros (un pour chaque lettre)

Au lieu de faire une macro pour chaque lettre, comme dans

\def\bA{\mathbf{A}}
...
\def\bZ{\mathbf{Z}}


3 commentaires

Au fait, je cherche une réponse (LA) Tex. Actuellement, j'ai un script Bash, mais je veux une solution (LA) Tex Seule.


Je ne connais pas la latex, alors je vais simplement ajouter ceci comme un commentaire - y a-t-il une construction de script à l'intérieur de tout ce que vous utilisez pour générer les macros? Et si oui, a-t-il la capacité d'appeler quelque chose à l'effet de echo -e -n '\ x41' . En incrémentant le nombre «41», vous passeriez à travers toutes les lettres ASCII de l'alphabet (en commençant par la capitale »).


@Aronchick - C'est l'idée. La réponse d'Andrews ci-dessous le fait (mais dans Tex, nous allons faire référence directement aux caractères alphabétiques, en évitant ASCII).


4 Réponses :


4
votes

ne serait pas préférable de définir une commande xxx

et il peut être utilisé à la fois dans texte mode et math MODE. Utilisation: xxx

résultat:
f (x) = 'intégré delta (x)

f est bla bla bla et " delta 'est halb halb halb ...

Dollars extérieurs sont là pour laisser le mode math (romain) parce que \ Boldmath La commande n'a aucun effet en mode mathématique. Les internes retournent en mathématiques (audacieuses). Bretelles supplémentaires ( $ {\ boldmath ) garantit que la commande \ boldmath fonctionne uniquement avec # 1

un autre avantage de Ce code teste de nouvelles commandes pour l'existence de \ bb et \ bg . Donc, vous ne pouvez pas utiliser facilement les latex makros.

J'espère que c'est ce que vous recherchez.


2 commentaires

Si vous souhaitez avoir une macro spécialement conçue pour les lettres grecques et une autre pour les lettres latines, vous pouvez ajouter \ newcommand \ bl [1] {\ ensuremath {\ mathbf {# 1}}} dans le préambule et utilisez-le . - Cela ne fonctionnera que pour les lettres latines.


+1 Je suppose que ma question est plus académique que pratique. Votre suggestion est totalement valide. Je suppose que l'écriture \ b x au lieu de \ bx n'est pas une très grande distinction. Néanmoins, mon objectif initial est d'éviter l'espace. Votre point concernant la détention des macros existantes est particulièrement important. Il rendrait un code très confus à redéfinir \ bf par exemple.



3
votes

Je recommanderais de faire:

\documentclass{article}
\usepackage{amssymb}
\newcounter{char}
\setcounter{char}{1}

\loop\ifnum\value{char}<27
\edef\c{\Alph{char}}
\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\expandafter\def\expandafter\expandafter\expandafter\csname\expandafter\expandafter\expandafter b\expandafter\c\expandafter\endcsname\expandafter{\expandafter\mathbb\expandafter{\c}}
\addtocounter{char}{1}
\repeat

\begin{document}

\(\bZ\)
\end{document}


4 commentaires

Cela affecterait-il aussi des lettres grecques? Et pourquoi utiliser \ bh ello \ bw orld , lorsque vous pouvez utiliser \ b hello \ b world ?


+1 solution cool. Je n'ai jamais su \ eXeafter ou csname . Je pense que l'utilisation de ce dernier vous permettrait de couper un peu votre macro.


@Crowley: J'ai raté le peu de lettres grecques. On pourrait définir une version de \ Altern et \ Altern pour les lettres grecques. Overkill pour une application, mais pourrait être utile ailleurs. En ce qui concerne votre deuxième point: je suis tout à fait d'accord et je l'ai dit! Dans mes documents, j'utilise (une variante de) votre solution. Néanmoins, la question de pouvoir boucler sur l'alphabet était suffisamment intriguante que je pensais avoir une partie. J'ai essayé de frapper un ton qui montrait que je ne serais pas en fait faire cela dans la pratique. Après tout, 18 élargissements pouvaient être considérés comme un onglet excessif!


@Andrew: Nul doute que vous le savez maintenant, mais votre groupe de \ denpadifter peut être réduit un lot . \ EXELLEFTER \ EDEF \ CSNAME B \ ALPH {CHAR} \ endcsname {\ noexpand \ mathbb {\ altér {char}}} devrait faire.



8
votes
\def\mydefgreek#1{\expandafter\def\csname b#1\endcsname{\text{\boldmath$\mathbf{\csname #1\endcsname}$}}}
\def\mydefallgreek#1{\ifx\mydefallgreek#1\else\mydefgreek{#1}%
   \lowercase{\mydefgreek{#1}}\expandafter\mydefallgreek\fi}
\mydefallgreek {beta}{Gamma}{Delta}{epsilon}{etaex}{Theta}{Iota}{Lambda}{kappa}{mu}{nu}{Xi}{Pi}{rho}\mydefallgreek


$\bGamma\bDelta \bTheta \bLambda \bXi \bPi $

$\bbeta \bgamma\bdelta \bepsilon \betaex \btheta \biota \blambda \bkappa \bmu \bnu \bxi \bpi \brho$

5 commentaires

C'est bien. La ligne 2 est donc essentiellement une boucle car elle se insère avant le caractère suivant, non? La ligne 1 pourrait être insérée dans la ligne 2, mais est séparée uniquement pour la lisibilité. Une solution à deux lignes! Le seul côté bas est de taper l'alphabet.


Que diriez-vous d'une liste de lettres grecques? ( {gamma} {mu} ou \ gamma \ mu ou une autre liste raisonnable.)


Je ne comprends pas comment vous voulez écrire des lettres grecques. Vous écrivez \ ba, \ bb , etc pour a, b, ... . Qu'est-ce qui concerne le grec? \ bgamma ? \ bmmu ? Je ne comprends pas.


Oui \ bgamma ou \ bmu ou \ blambda ou \ blambda . Actuellement, j'ai juste une liste de ces commandes faites manuellement.


\ texte pour scripts: 2 ^ \ bgamma par exemple.



6
votes

Élargir sur la réponse d'Andrew, voici une solution sans \ eXeafter : xxx

ceci définira \ ba , \ bb , et ainsi de suite, pour développer à \ mathbb {a} , \ mathbb {b} , etc.


0 commentaires