Consequências práticas do uso de \over vs. \frac?

Consequências práticas do uso de \over vs. \frac?

Essa questãoexplica a diferença entre \overe \frace parece que os membros mais experientes concordam unanimemente que isso \overé inferior (se não algo para ser totalmente lamentado); no entanto, o exemplo de egreg, embora ilustrativo de um problema potencial, não é suficiente para me impedir da praticidade de \over.

Acabei de descobrir esse comando e ainda não o implementei em lugar nenhum, mas encontro um fascínio substancial na praticidade de não ter que usar delimitadores em todos os lugares (especialmente porque faço uma extensa codificação por cores de expressões, o que também multiplica os delimitadores).

Confio na experiência desta comunidade, mas gostaria, se possível, de entender que tipo depráticoquestões que corro o risco de encontrar ao usar ocasionalmente \overao lidar com expressões simples?

Porquepráticoé subjetivo, tentarei ilustrar a medida pretendida com o exemplo de egreg: ele ilustrou a diferença na tradução entre:

\[
  \fam0 a \over b
\]

e

\[
 \frac{\fam0 a}{b}
\]

Para meus propósitos, caso tal problema surja, ele será facilmente resolvido usando \frace assim, embora este exemplo ilustre umdeficiência e \overa necessidade de algo mais robusto, não me ilustra nenhuma razão para evitar \overquando produz o resultado desejado.

Responder1

EmO ajuste do TeX de 2014(TUGboat, Volume 35 (2014), No. 1), que discute todas as alterações feitas no TeX com base nos comentários recebidos nos anos 2008–2013 (todas as alterações = uma única alteração:veja esta pergunta), Donald Knuth responde a uma pergunta sobre \overversus \frace semelhante:

Perguntas e respostas Barbara [Beeton] também me pediu para responder a três perguntas, que ela disse “continuam aparecendo em vários fóruns”, para que ela pudesse indicar as respostas às pessoas se essas perguntas surgissem novamente.

[…]

(2) Se você estivesse projetando o TeX hoje, você ainda usaria \overand friends, em vez de algo como \frac{...}{...}, quando este último evitaria a necessidade de \mathchoiceand \mathpalette?

Esta pergunta, de tex.stackexchange.com, também citada na página 151 de [O TeXbook]:

\mathchoiceé um pouco caro em termos de tempo e espaço, e você só deve usá-lo quando estiver disposto a pagar o preço.

E bem, acho que essa citação implica minha resposta. Pois eu estava claramente disposto a pagar o preço em 1982, por isso estou certamente disposto a pagar zero hoje!

Suponho que existam algumas pessoas no mundo que preferem expressões como 'soma(2, 3)' a '2 + 3'; mas certamente não estou entre eles. Desde que o TeX nasceu, fico enormemente satisfeito com a capacidade de escrever ' 2\over3' ou ' n\choose k' ou ' p\atop q' ou ···, em vez de ser forçado a escrever algo como ' frac{2}{3}' que teria desviado minha atenção da tarefa em mão.

O questionador parece querer impor encargos a todos os usuários, e não às costas de alguns macrodesenvolvedores.

Se você olhar a definição de LaTeX \frac(você pode invocar texdoc source2epara lê-la), verá que é:

definição de <code>\frac</code>

(Você também pode encontrar esta definição

\def\frac#1#2{{\begingroup#1\endgroup\over#2}}

em texmf-dist/source/latex/base/ltmath.dtx, ou com \show, ou qualquer outra coisa.)

Portanto, sempre que você digita \frac{a}{b}um documento, é exatamente como se você tivesse digitado:

{\begingroup a \endgroup\over b}

Não há nada mais, ou mágico, em usar \frac. E se em um determinado contexto (típico) os \begingroupe \endgroupnão forem necessários (ou seja, a mesma saída é produzida sem eles), você pode eliminá-los, e da mesma forma para os colchetes externos, de modo que seria equivalente a escrever a \over bnesse caso.

Então, no que diz respeito à sua pergunta:

Para meus propósitos, caso tal problema surja, ele será facilmente resolvido usando \frace assim, embora este exemplo ilustre umdeficiênciae \overa necessidade de algo mais robusto, não me ilustra nenhuma razão para evitar \overquando produz o resultado desejado.

simplesmente não há diferença prática do tipo que você está procurando: quando \overproduz o resultado desejado, eles são equivalentes; o único ponto de uso \fracé que às vezes eles não são equivalentes e \overpodem fornecer resultados indesejados.

Então, para resumir: sua escolha se resume em duas opções:

  1. Você gosta da \fracsintaxe. Em seguida, use-o e parabenize-se por não precisar se preocupar em obter acidentalmente a saída errada e em ser "consistente" com as convenções de sintaxe detalhadas do LaTeX.

  2. Você gosta da \oversintaxe. Em seguida, use-o e parabenize-se pela sintaxe mais simples (preferida por Knuth também), e se você acidentalmente obtiver a saída errada, apenas observe e corrija, dizendo a si mesmo que não é grande coisa.

Quando você pede “consequências práticas” e diz que

não consigo imaginar um contexto onde o uso \overcausaria um problema que não poderia ser resolvido apenas usando \fracpara aquela instância

Não sei que tipo de resposta você está procurando, porque não existe tal contexto,por definição(de \frac): se em algum contexto \overfornecer a saída errada, você sempre poderá corrigi-la adicionando colchetes ou grupos e, de fato, usando \frac. É para isso que serve.

Responder2

Não há vantagens em usar \overum documento LaTeX.

Um dos principais objetivos do LaTeX é fornecer uma sintaxe consistente para uma marcação baseada em tex, com argumentos obrigatórios em argumentos {}opcionais em []etc. Usando pausas completamente.\rule{2pt}{3pt}\hrule width 2pt height 3pt\over

Se você usar \overcom amsmathcarregado você receberá o aviso

Package amsmath Warning: Foreign command \over;
(amsmath)                \frac or \genfrac should be used instead
(amsmath)                 on input line 6.

Em muitos aspectos, é uma pena que seja apenas um aviso e não um erro, nós e a AMS simplesmente não fomos corajosos o suficiente na época :-)

Praticamente falando, é claro que dentro do TeX \overfuncionará na maioria dos casos, a menos que algum pacote seja mais corajoso e o indefina, porém o fato de não obedecer às mesmas regras de sintaxe tem um custo, principalmente no TeX para html e outros conversores. Sem usar um mecanismo de execução TeX completo é muito difícil saber quais são os argumentos \overe isso complica o trabalho dos conversores que podem não suportá-lo ou apenas suportar casos simples.

Se você acha que a \oversintaxe é mais simples, responda à seguinte pergunta antes de executar o exemplo.

Qual é a fração em cada um desses casos?

\documentclass{article}



\begin{document}
$  1 + \begingroup a \over b \endgroup + 2$

$  1 + \bgroup a \over b \egroup + 2$

$  1 + { a \over b \egroup + 2$


$  1 + \bgroup a \over b } + 2$

\end{document}

informação relacionada