2010-05-27 4 views
4

Незначительный пункт о LaTeX, который меня беспокоит. Когда один пишетЕсть ли способ переопределить ошибки LaTeX относительно двойных индексов и надстрочных индексов?

a^b^c, a_b_c 

или

a'^b 

в математическом режиме, LaTeX выдает сообщение об ошибке, жалуясь о нескольких супер/индексов. Это особенно раздражает после замены строки, содержащей супер/индекс или при использовании апострофа, '.

Есть ли способ, чтобы переопределить ошибки и иметь LaTeX просто выход

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

и так далее?

ответ

3

Это один из тех случаев, когда вы действительно должны быть предупреждены, и вам нужно поместить фигурные скобки так, как вы хотите, или написать что-либо без двойного суб/надстрочного знака, если это то, что вы имеете в виду. Как правило, когда вы используете надстрочный указатель для указания степени возведения в степень, а не индексации, a^b^c = a^{b^c}, поэтому вывод, который вы описываете, определенно некорректен в некоторых случаях. Конечно, если бы они были индексом верхнего индекса, вы могли бы означать a^{bc}, но как LaTeX знать? А для индексов, что, если вы действительно имеете в виду a_{n_k}, а не a_{nk}? (т. е. двойное индексирование по отношению к последовательности индексов)

(И, конечно, если это происходит как часть замены, вы, вероятно, можете найти способ исправить его как часть замены).

+2

Хороший вопрос - это правда, что в формулах экспоненцирование имеет забавные правила в порядке операций. Но в LaTeX соглашение состоит в том, что только первый символ после знака^считывается как верхний индекс (если нет обратного слэша или {},), поэтому логичным способом интерпретации a^b^c было бы рассматривать^c независимо из^b как верхний индекс первого порядка. Итак, хотя предупреждение за сообщением об ошибке понятно, есть ли способ заставить LaTeX игнорировать эти конкретные «ошибки» и интерпретировать их таким образом? –

+1

@ Dmitry: Нет, я так не верю. И ваши рассуждения на самом деле не полны. Точнее просто использовать одно правило: только первая * группа * после того, как '^' помещается в верхний индекс. Это означает, что реальный вопрос - ассоциативность «^»; вы можете так же легко связать 'b^c'. То, что я пытался передать в своем ответе, состоит в том, что существует так много двусмысленности, что было бы плохо, если бы язык так или иначе заставлял его так или иначе. И хотя подавление предупреждений - это одно, это сообщение об ошибке. LaTeX просто требует, чтобы синтаксис был недвусмысленным, к лучшему или худшему. – Cascabel

+0

@Dmitry: Я согласен с рассуждениями Dmity здесь. Латекс не имеет понятия выражения, вместо этого у него есть метафора «глаз-рот-живот» для обработки ввода, и предложение Дмитрия прекрасно работает с этим. –

4

Ниже то, что вы хотите

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