Tabla de contenido

Tabla de contenido

cuando corro

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

el resultado de la compilación contiene la siguiente línea:

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

Cuando hago clic en Siguiente error, en el resultado de la compilación apunta a la línea que comienza con ! en el siguiente párrafo:

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 !$ 
 []

Al buscar este error, veo que aparece algo similar con las fuentes, pero el código de error es ligeramente diferente.

Supongo que tiene algo que ver con el desbordamiento de $\to$ al final, pero eso no es todo porque puedo mover algunas de las letras sin cambiar el tamaño del cuadro defectuoso para eliminar el error.

¿Alguien puede decirme cuál es la causa de este error?

ACTUALIZACIÓN: Según uno de los comentarios, puede depender de qué programa se esté utilizando. Recibí este error en TeXnicCenter y este código de error también aparece enlátexbase.compero no se informa como un error.

Respuesta1

Respuesta corta: Esta es una advertencia, pero su editor (TeXnicCenter) la ha confundido con un error. Sigue una respuesta más larga.


(Una pregunta anterior“Error ininteligible después de escribir una sola letra”cubre esto, pero sentí que valía la pena entrar en más detalles, así que tomé otra oportunidad).

Tabla de contenido

  1. Por qué la salida se trata como un error (y cómo solucionarlo)
  2. Cómo hacer que este resultado desaparezca (arreglando la advertencia)
  3. Qué significa la salida

1. Por qué la salida se trata como un error

Hay tres cosas que conspiran aquí para confundir a su editor:

  • TeX imprime mensajes de error en una nueva línea, comenzando con !␣(a !seguido de un espacio; simplemente usando para indicar un espacio porque de lo contrario no es visible aquí). (Por cierto, esto no está realmente documentado enEl libro de texto—Creo que Knuth no quería especificar detalles de la interacción del usuario y esperaba que cambiaran con la implementación de TeX—pero vea los ejemplos en los Capítulos 6 y 27, y tambiénParte 6 “Informar de errores” §73 enTeX: el programa.)

  • Cuando TeX se ve obligado a componer una casilla demasiado llena, imprime un diagnóstico que muestra la casilla que estaba demasiado llena. (De manera similar con cuadros ajustados, etc.) Este diagnóstico puede contener cosas como !, dependiendo de los caracteres que aparecen dentro del cuadro y las fuentes utilizadas.

  • TeX ajusta las líneas de salida de forma predeterminada, al anchomax_print_line . En este caso, parece que su entorno TeX ha sido configurado para ajustar las líneas de salida de error en exactamente 120 caracteres, como resultado de lo cual una de las líneas (casualmente) comienza con un !. Puedes cambiar este ajuste de líneacomo se describe en la otra respuesta, o simplemente invocando TeX con un valor mayor de max_print_lineen el entorno de shell, como max_print_line=1000 pdflatex ...).

Como combinación de estos factores, tenemos un diagnóstico de caja demasiado llena impreso, ajustado a 120 caracteres y su editor lo interpreta erróneamente como un error.

Si aumenta el ancho de ajuste de línea (p. ej. max_print_line=10000), evitará esta confusión y obtendrá un resultado como este, con el cuadro demasiado lleno mostrado completamente en una línea (y ninguna línea que comience con 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. Cómo hacer que desaparezca el resultado

El resultado (advertencia) es sobre una caja demasiado llena, lo que significa que una línea sobresale un poco más de lo que debería. ¿Cuánto más? Podemos verlo visualmente agregando un párrafo de texto cerca de él:

línea

¿Puedes notar que la flecha sobresale más que las líneas de texto de arriba? Quizás con esto:

con lineas

Para lidiar con cuadros demasiado llenos, sus opciones (en orden creciente de esfuerzo requerido y orden decreciente de estética) son ignorarlo, permitir más estiramiento, permitir más pausas o reescribir el texto.

En este caso, como puedes ver, no está demasiado lleno (el mensaje de advertencia dice 1,65 pt). Entonces, si no lo encuentra visualmente discordante, lo mejor puede ser simplemente ignorarlo. (Puede hacer que la advertencia ya no aparezca aumentando \hfuzzpara decir 1.66pto algo más).

De lo contrario, el mejor enfoque aquí (ya que hay matemáticas y la introducción de pausas dentro de las matemáticas puede ser malo) puede ser reescribir el texto. O si no quieres molestarte, puedes simplemente configurar\sloppy (veresta respuestapara saber qué hace exactamente \sloppy) o aumentar \emergencystretch, para obtener un salto de línea a costa de un poco más de estiramiento del que TeX se siente cómodo de forma predeterminada:

con estiramiento

(Para evitar afectar otros párrafos del documento, puede restringir los cambios de \sloppyy/o \emergencystretchsolo a este párrafo mediante { … }agrupación; por ejemplo, LaTeX proporciona un sloppyparentorno que hace exactamente esto).


3. Qué significa la salida

La pregunta restante espor quéel diagnóstico de caja demasiado llena se ve así: ¿Qué significa este resultado?

Básicamente es una lista de todo lo que TeX puso en esa línea, incluido el pegamento y los caracteres de diferentes fuentes. En una línea que contiene muchas fuentes diferentes, gran parte del resultado puede terminar siendo sobre las fuentes.

Puedes usar el paquete fonttabley

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

para comprender con más detalle las fuentes que aparecieron en la línea de salida. Esta es la OT1/cmr/m/nfuente:

OT1

y esto es OML/cmm/m/it:

OML

y esto es OMS/cmsy/m/n:

OMS

Entonces, en la Overfull \hboxlínea de registro, cuando imprime cuál fue el hbox demasiado lleno que se compuso,

caja 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 dividirlo por partes como:

  • []— este es el pegamento familiar
  • \OT1/cmr/m/n/10 Aaaaaa aaaaa aa-j-caaaaaa $- esto simplemente significa "Aaaaaa aaaaa aajcaaaaaa" en la fuente OT1/cmr/m/n/10(ver arriba), con pausas discrecionales (posibles puntos de separación de palabras) como se indica en aaaaa aa-j-caaaaaa, seguido del inicio del modo matemático.
  • \OML/cmm/m/it/10 a
  • \OT1/cmr/m/n/10 :— tenga en cuenta que, aunque estamos en modo matemático, :proviene de la fuente OT1 cmr, porque se supone que debe estar en posición vertical, etc.
  • \OML/cmm/m/it/10 A[]- el subíndice aaes su propio cuadro (creo) y aquí simplemente se muestra como[]
  • \OMS/cmsy/m/n/10 !— tenga en cuenta que !(carácter 33) OMS/cmsy/m/nes el personaje. En motores TeX que no son Unicode (básicamente pdfTeX a diferencia de XeTeX o LuaTeX), las fuentes pueden tener como máximo 256 glifos, por lo que los caracteres como deben asignarse a alguna posición entre 0 y 255.
  • \OML/cmm/m/it/10 a[]$- nuevamente el subíndice ase denota simplemente por[]
  • \OT1/cmr/m/n/10 a$
  • \OMS/cmsy/m/n/10 ^^U$— aquí, ^^Udenota el carácter 21 (porque Ues ASCII 85, y en TeX ^^significa sumar o restar 64), y el carácter 21 en esa fuente es
  • \OT1/cmr/m/n/10 aaaaaaaaaaaaaaaaaaaaaa $
  • \OML/cmm/m/it/10 a[] []
  • \OMS/cmsy/m/n/10 !$— nuevamente, !aquí significa

(Claramente, el resultado de cómo se muestran estos cuadros llenos, aunque bueno para la época en que se desarrolló TeX (~1980) y útil para alguien que haya leído el manual detenidamente, podría mejorarse hoy en día, por ejemplo, teniendo opciones para colorear el resultado, convertir caracteres a Unicode, o suprimir/alternar información de fuente, pero desafortunadamente no se ha trabajado mucho en dichas mejoras en TeX y LuaTeX.post_linebreak_filter pude obtener un resultado un poco más estructurado para la línea:aquí. Eso es demasiado detallado para usos típicos, pero un sistema interactivo podría expandirse/mostrar, mostrando los glifos reales de las fuentes en lugar de cosas confusas como !, etc.)

información relacionada