2010-05-27 18 views
4

Petit point à propos de LaTeX qui me dérange. Quand on écritExiste-t-il un moyen de contourner les erreurs de LaTeX sur les indices doubles et les indices supérieurs?

a^b^c, a_b_c 

ou

a'^b 

en mode mathématique, donne un message LaTeX d'erreur se plaindre de plusieurs super/indices. Ceci est particulièrement gênant après le remplacement d'une chaîne contenant un super/indice ou lors de l'utilisation de l'apostrophe, '.

est-il un moyen de remplacer l'erreur et ont simplement sortie LATEX

a^{bc} a_{bc} {a'}^b 

et ainsi de suite?

Répondre

3

Ceci est un de ces cas où vous devriez vraiment être averti, et devez placer les accolades comme vous le voulez - ou écrire quelque chose sans double sous-exposant, si c'est ce que vous voulez dire. Généralement, lorsque vous utilisez l'exposant pour indiquer l'exponentiation, pas l'indexation, a^b^c = a^{b^c}, la sortie que vous décrivez est définitivement incorrecte dans certains cas. Bien sûr, si ce sont des indices en exposant, vous pourriez vouloir dire a^{bc}, mais comment connaître LaTeX? Et pour les indices, que faire si vous voulez vraiment dire a_{n_k}, pas a_{nk}? (c'est-à-dire, double indexation contre une séquence d'indices)

(Et bien sûr, si cela se produit dans le cadre d'une substitution, vous pouvez probablement trouver un moyen de le réparer dans le cadre de la substitution.)

+2

Bon point - il est vrai que dans les formules exponentiation a des règles drôles dans l'ordre des opérations. Mais dans LaTeX, la convention est que seul le premier caractère après un signe^est lu en exposant (à moins qu'il n'y ait une barre oblique inverse ou {},) donc la façon logique d'interpréter un^b^c serait de traiter^c indépendamment de^b comme exposant du premier ordre. Donc, alors que l'avertissement derrière le message d'erreur est compréhensible, y a-t-il un moyen pour que LaTeX ignore ces "erreurs" particulières et les interprète de cette façon? –

+1

@Dmitry: Non, je ne le crois pas. Et votre raisonnement n'est pas vraiment complet. Il est plus juste de n'utiliser qu'une seule règle: seul le premier * groupe * après un '^' est placé en exposant. Cela signifie que la vraie question est l'associativité de '^'; vous pourriez tout aussi bien lier le 'b^c' en premier. Ce que j'essayais de faire comprendre dans ma réponse, c'est qu'il y a tellement d'ambiguïté que ce serait mauvais pour la langue de la forcer d'une façon ou d'une autre. Et tout en supprimant les avertissements est une chose, c'est un message d'erreur. LaTeX nécessite simplement que la syntaxe soit sans ambiguïté, pour le meilleur ou pour le pire. – Cascabel

+0

@Dmitry: Je suis d'accord avec le raisonnement de Dmity ici. Le latex n'a pas de concept d'expression, mais il a plutôt une métaphore des yeux, de la bouche et de l'estomac pour gérer les intrants, et la suggestion de Dmitry fonctionne bien avec cela. –

4

ce qui suit est ce que vous voulez

\catcode`\^ = 13 \def^#1{\sp{#1}{}} 
\catcode`\_ = 13 \def_#1{\sb{#1}{}}