Índice

Índice

Quando eu corro

\documentclass{article}
\begin{document}
Aaaaaa aaaaa aajcaaaaaa $a:A_{aa}\to a_a$a$\ge$ aaaaaaaaaaaaaaaaaaaaaa 
$a_a\dots\to$
\end{document}

a saída da compilação contém a seguinte linha:

LaTeX-Result: 1 Error(s), 0 Warning(s), 1 Bad Box(es), 1 Page(s)

Quando clico em Próximo erro, ele aponta na saída do build para a linha que começa com! no parágrafo seguinte:

Overfull \hbox (1.65294pt too wide) in paragraph at lines 3--4
[]\OT1/cmr/m/n/10 Aaaaaa aaaaa aa-j-caaaaaa $\OML/cmm/m/it/10 a \OT1/cmr/m/n/10 : \OML/cmm/m/it/10 A[] \OMS/cmsy/m/n/10 
! \OML/cmm/m/it/10 a[]$\OT1/cmr/m/n/10 a$\OMS/cmsy/m/n/10 $ \OT1/cmr/m/n/10 aaaaaaaaaaaaaaaaaaaaaa $\OML/cmm/m/it/10 a[
] [] \OMS/cmsy/m/n/10 !$ 
 []

Procurando esse erro, vejo que algo semelhante aparece com as fontes, mas o código do erro é um pouco diferente.

Meu palpite é que tem algo a ver com o $\to$ no final sendo estourado, mas isso não é tudo porque posso mover algumas das letras sem alterar o tamanho da caixa ruim para remover o erro.

Alguém pode me dizer qual é a causa desse erro?

ATUALIZAÇÃO: De acordo com um dos comentários, pode depender de qual programa está sendo utilizado. Recebi esse erro no TeXnicCenter, e esse código de erro também aparece nolatexbase. commas não é relatado como um erro.

Responder1

Resposta curta: Este é um aviso, mas seu editor (TeXnicCenter) confundiu-o com um erro. Segue uma resposta mais longa.


(Uma pergunta anterior“Erro ininteligível após digitar uma única letra”cobre isso, mas achei que valia a pena entrar em mais detalhes, então tente novamente.)

Índice

  1. Por que a saída é tratada como um erro (e como corrigir isso)
  2. Como fazer com que essa saída desapareça (corrigindo o aviso)
  3. O que a saída significa

1. Por que a saída é tratada como um erro

Há três coisas que conspiram aqui para confundir seu editor:

  • TeX imprime mensagens de erro em uma nova linha, começando com !␣(a !seguido por um espaço; apenas usando para denotar um espaço porque caso contrário não será visível aqui). (Aliás, isso não está realmente documentado emO TeXbook—Acho que Knuth não queria especificar detalhes da interação do usuário e esperava que eles mudassem com a implementação do TeX — mas veja os exemplos nos Capítulos 6 e 27, e tambémParte 6 “Relatando Erros” §73 emTeX: O Programa.)

  • Quando o TeX é forçado a compor uma caixa cheia demais, ele imprime um diagnóstico mostrando a caixa que estava cheia demais. (Da mesma forma com caixas apertadas, etc.) Este diagnóstico pode conter coisas como !, dependendo dos caracteres que ocorrem dentro da caixa e das fontes utilizadas.

  • O TeX agrupa as linhas de saída por padrão, em width max_print_line. Nesse caso, parece que seu ambiente TeX foi configurado para agrupar linhas de saída de erro com exatamente 120 caracteres, e como resultado uma das linhas (coincidentemente) começa com !. Você pode alterar esta quebra de linhaconforme descrito na outra resposta, ou simplesmente invocando o TeX com um valor maior max_print_lineno ambiente shell, como max_print_line=1000 pdflatex ...).

Como uma combinação desses fatores, temos um diagnóstico de caixa superlotada impresso, agrupado em 120 caracteres e interpretado erroneamente pelo seu editor como um erro.

Se você aumentar a largura da quebra de linha (por exemplo, max_print_line=10000), evitará essa confusão e obterá uma saída como esta, com a caixa cheia demais exibida inteiramente em uma linha (e nenhuma linha começando com a !):

Overfull \hbox (1.65294pt too wide) in paragraph at lines 3--5
[]\OT1/cmr/m/n/10 Aaaaaa aaaaa aa-j-caaaaaa $\OML/cmm/m/it/10 a \OT1/cmr/m/n/10 : \OML/cmm/m/it/10 A[] \OMS/cmsy/m/n/10 ! \OML/cmm/m/it/10 a[]$\OT1/cmr/m/n/10 a$\OMS/cmsy/m/n/10 ^^U$ \OT1/cmr/m/n/10 aaaaaaaaaaaaaaaaaaaaaa $\OML/cmm/m/it/10 a[] [] \OMS/cmsy/m/n/10 !$ 

2. Como fazer com que a saída desapareça

A saída (aviso) é sobre uma caixa cheia demais, o que significa uma linha saindo um pouco mais do que deveria. Quanto mais? Podemos ver isso visualmente adicionando um parágrafo de texto próximo a ele:

linha

Você consegue perceber que a seta se destaca mais do que as linhas de texto acima? Talvez com isso:

com linhas

Para lidar com caixas muito cheias, suas opções (em ordem crescente de esforço necessário e ordem decrescente de estética) são ignorá-las, permitir mais alongamento, permitir mais pausas ou reescrever o texto.

Neste caso, como você pode ver, não está muito cheio (a mensagem de aviso diz 1,65 pt). Portanto, se você não achar isso visualmente chocante, a melhor coisa será simplesmente ignorá-lo. (Você pode fazer com que o aviso não apareça mais, aumentando \hfuzzpara dizer 1.66ptou algo maior.)

Caso contrário, a melhor abordagem aqui (já que há matemática e introduzir quebras na matemática pode ser ruim) pode ser reescrever o texto. Ou se você não quiser se preocupar, você pode simplesmente definir \sloppy(vejaesta respostapara o que exatamente \sloppyfaz) ou aumento \emergencystretch, para obter uma quebra de linha ao custo de um pouco mais de alongamento do que o TeX se sente confortável por padrão:

com estiramento

(Para evitar afetar outros parágrafos do documento, você pode restringir as alterações de \sloppye/ou \emergencystretchapenas a este parágrafo, usando { … }agrupamento, por exemplo, o LaTeX fornece um sloppyparambiente que faz exatamente isso.)


3. O que significa a saída

A questão restante épor queo diagnóstico de caixa excessivamente cheia tem a aparência que tem: O que essa saída significa?

É basicamente uma lista de tudo que o TeX colocou naquela linha, incluindo cola e caracteres de diferentes fontes. Em uma linha contendo muitas fontes diferentes, grande parte da saída pode acabar sendo sobre as fontes.

Você pode usar o pacote fonttablee

\xfonttable{OT1}{cmr}{m}{n}
\xfonttable{OML}{cmm}{m}{it}
\xfonttable{OMS}{cmsy}{m}{n}

para entender com mais detalhes as fontes que ocorreram na linha de saída. Esta é a OT1/cmr/m/nfonte:

AT1

e isso é OML/cmm/m/it:

OML

e isso é OMS/cmsy/m/n:

seguro médico obrigatório

Então, na Overfull \hboxlinha de log, quando ele imprime qual foi o hbox cheio demais que foi digitado,

caixa ofensiva

como

[]\OT1/cmr/m/n/10 Aaaaaa aaaaa aa-j-caaaaaa $\OML/cmm/m/it/10 a \OT1/cmr/m/n/10 : \OML/cmm/m/it/10 A[] \OMS/cmsy/m/n/10 ! \OML/cmm/m/it/10 a[]$\OT1/cmr/m/n/10 a$\OMS/cmsy/m/n/10 ^^U$ \OT1/cmr/m/n/10 aaaaaaaaaaaaaaaaaaaaaa $\OML/cmm/m/it/10 a[] [] \OMS/cmsy/m/n/10 !$ 

podemos dividi-lo por partes como:

  • []- esta é a cola parindent
  • \OT1/cmr/m/n/10 Aaaaaa aaaaa aa-j-caaaaaa $— significa simplesmente “Aaaaaa aaaaa aajcaaaaaa” na fonte OT1/cmr/m/n/10(veja acima), com quebras discricionárias (potenciais pontos de hifenização) conforme indicado em aaaaa aa-j-caaaaaa, seguido pelo início do modo matemático.
  • \OML/cmm/m/it/10 a
  • \OT1/cmr/m/n/10 :- observe que mesmo estando no modo matemático, o :vem da cmrfonte OT1, porque deveria estar na vertical, etc.
  • \OML/cmm/m/it/10 A[]- o subscrito aaé sua própria caixa (eu acho), e é simplesmente mostrado aqui como[]
  • \OMS/cmsy/m/n/10 !- observe que !(personagem 33) in OMS/cmsy/m/né o personagem. Em mecanismos TeX não Unicode (basicamente pdfTeX em oposição a XeTeX ou LuaTeX) as fontes podem ter no máximo 256 glifos, portanto caracteres como devem ser mapeados para alguma posição entre 0–255.
  • \OML/cmm/m/it/10 a[]$- novamente o subscrito aé denotado apenas por[]
  • \OT1/cmr/m/n/10 a$
  • \OMS/cmsy/m/n/10 ^^U$- aqui ^^Udenota o caractere 21 (porque Ué ASCII 85 e em TeX ^^significa adicionar ou subtrair 64), e o caractere 21 nessa fonte é
  • \OT1/cmr/m/n/10 aaaaaaaaaaaaaaaaaaaaaa $
  • \OML/cmm/m/it/10 a[] []
  • \OMS/cmsy/m/n/10 !$- novamente, !aqui significa

(É claro que o resultado de como essas caixas cheias são mostradas, embora seja bom para a época em que o TeX foi desenvolvido (~1980) e útil para alguém que leu o manual com atenção, poderia ser melhorado hoje, por exemplo, tendo opções para colorir a saída, converter caracteres para Unicode ou suprimir/alternar informações de fonte, mas infelizmente não foi feito muito trabalho nessas melhorias no TeX. Usando LuaTeX e post_linebreak_filter, consegui obter uma saída um pouco mais estruturada para a linha:aqui. Isso é muito detalhado para usos típicos, mas um sistema interativo poderia ter expansão/exibição, mostrando os glifos reais das fontes em vez de confundir coisas como !, etc.)

informação relacionada