목차

목차

내가 달릴 때

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

빌드 출력에는 다음 줄이 포함됩니다.

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

Next Error를 클릭하면 빌드 출력에서 ​​!로 시작하는 줄을 가리킵니다. 다음 단락에서:

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

이 오류를 찾아보니 글꼴에도 비슷한 내용이 나타나는데 오류 코드가 약간 다릅니다.

내 생각엔 $\to$가 오버플로되는 것과 관련이 있는 것 같지만, 오류를 제거하기 위해 얼마나 큰 나쁜 상자인지 변경하지 않고 일부 문자를 이동할 수 있기 때문에 그게 전부는 아닙니다.

누군가 이 오류의 원인이 무엇인지 말해 줄 수 있습니까?

업데이트: 의견 중 하나에 따르면 사용 중인 프로그램에 따라 달라질 수 있습니다. TeXnicCenter 두 곳 모두에서 이 오류가 발생했으며 이 오류 코드는 TeXnicCenter에도 나타납니다.latexbase.com하지만 오류로 보고되지는 않습니다.

답변1

짧은 대답: 이것은 경고이지만 편집자(TeXnicCenter)가 이를 오류로 혼동했습니다. 더 긴 답변이 이어집니다.


(이전 질문"한 글자를 입력한 후 이해할 수 없는 오류가 발생했습니다."이 내용을 다루고 있지만 더 자세히 설명할 가치가 있다고 느꼈으므로 다시 한번 촬영해 보겠습니다.)

목차

  1. 출력이 오류로 처리되는 이유(및 수정 방법)
  2. 이 출력을 없애는 방법(경고 수정)
  3. 출력의 의미

1. 출력이 오류로 처리되는 이유

편집자를 혼란스럽게 만드는 세 가지 음모가 있습니다.

  • !␣TeX는 (a 로 시작하고 !그 뒤에 공백이 오는 새 줄에 오류 메시지를 인쇄합니다. 다음에 공백이 옵니다. 그렇지 않으면 공백을 표시하기 위해 그렇지 않으면 여기에 표시되지 않습니다.) (덧붙여서, 이것은 실제로 문서에 기록되어 있지 않습니다.TeXbook—내 생각에 Knuth는 사용자 상호 작용의 세부 사항을 지정하고 싶지 않았고 TeX 구현에 따라 변경될 것으로 예상했습니다. 하지만 6장과 27장의 예제를 참조하세요.6부 "오류 보고" §73 ~에TeX: 프로그램.)

  • TeX가 가득 찬 상자를 조판해야 할 때, 가득 찬 상자를 보여주는 진단을 인쇄합니다. (단단한 상자 등의 경우에도 마찬가지입니다.) 이 진단에는 !상자 내부에 나타나는 문자와 사용된 글꼴에 따라 와 같은 항목이 포함될 수 있습니다 .

  • TeX는 기본적으로 출력 줄을 width 로 래핑합니다 max_print_line. 이 경우 TeX 환경은 오류 출력 줄을 정확히 120자로 줄바꿈하도록 설정되어 있으며 그 결과 줄 중 하나가 (우연히) !. 이 줄바꿈을 변경할 수 있습니다.다른 답변에 설명 된대로max_print_line, 또는 ) 과 같이 쉘 환경에서 더 큰 값으로 TeX를 호출하면 됩니다 max_print_line=1000 pdflatex ....

이러한 요소들의 조합으로 우리는 가득 찬 상자 진단을 인쇄하고 120자로 포장했으며 편집자가 오류로 잘못 해석했습니다.

줄 바꿈 너비를 늘리면(예: max_print_line=10000) 이러한 혼란을 피하고 대신 가득 찬 상자가 한 줄에 완전히 표시되는(그리고 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. 출력을 없애는 방법

출력(경고)은 상자가 가득 차 있다는 것입니다. 즉, 선이 원래보다 조금 더 튀어나와 있음을 의미합니다. 얼마나 더요? 근처에 텍스트 단락을 추가하면 시각적으로 볼 수 있습니다.

선

화살표가 위의 텍스트 줄보다 더 튀어나온 것을 알 수 있습니까? 어쩌면 이것으로:

선으로

가득 찬 상자를 처리하는 경우 옵션(필요한 노력의 증가 순서 및 미적 감소의 순서)을 무시하거나, 더 많이 늘리거나, 더 많은 나누기를 허용하거나, 텍스트를 다시 작성하는 것입니다.

이 경우 보시다시피 많이 초과되지는 않습니다(경고 메시지에 1.65pt라고 표시됨). 따라서 시각적으로 거슬리지 않는 경우에는 그냥 무시하는 것이 가장 좋습니다. ( \hfuzz말을 늘리거나 더 큰 방법을 사용하여 경고가 더 이상 나타나지 않도록 할 수 있습니다 1.66pt.)

그렇지 않으면 여기에서 가장 좋은 접근 방식은(수학이 있고 수학 내부에 중단을 도입하는 것이 좋지 않을 수 있으므로) 텍스트를 다시 작성하는 것일 수 있습니다. 또는 귀찮게 하고 싶지 않다면 그냥 설정할 수도 있습니다 \sloppy(참조이 답변정확히 무엇을 \sloppy하는가) 또는 증가 \emergencystretch, 기본적으로 TeX가 편안하게 사용할 수 있는 것보다 조금 더 늘리는 비용으로 줄 바꿈을 얻으려면 다음을 수행하십시오.

스트레칭으로

(문서의 다른 단락에 영향을 주지 않으려면 그룹화를 사용하여 이 단락 의 변경 \sloppy사항 을 제한할 수 있습니다 . 예를 들어 LaTeX는 정확히 이 작업을 수행하는 환경을 제공합니다.)\emergencystretch{ … }sloppypar


3. 출력의 의미

남은 질문은가득 참 상자 진단은 다음과 같습니다. 이 출력은 무엇을 의미합니까?

이것은 기본적으로 접착제와 다른 글꼴의 문자를 포함하여 TeX가 해당 줄에 넣은 모든 항목의 목록입니다. 다양한 글꼴이 포함된 줄에서 많은 출력이 글꼴에 관한 것으로 끝날 수 있습니다.

패키지를 이용하시면 되고 fonttable,

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

출력 라인에 발생한 글꼴을 더 자세히 이해합니다. 글꼴 은 다음과 같습니다 OT1/cmr/m/n.

OT1

그리고 이건 OML/cmm/m/it:

OML

그리고 이건 OMS/cmsy/m/n:

OMS

따라서 Overfull \hbox로그 라인에서 조판된 전체 hbox가 무엇인지 인쇄할 때,

문제가 되는 상자

~처럼

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

다음과 같이 부분별로 나눌 수 있습니다.

  • []— 이것은 부모 접착제입니다.
  • \OT1/cmr/m/n/10 Aaaaaa aaaaa aa-j-caaaaaa $— 이는 단순히 글꼴의 "Aaaaaa aaaaa aajcaaaaaa"를 의미하며 OT1/cmr/m/n/10(위 참조), 에 표시된 임의의 구분 기호(잠재적인 하이픈 연결 지점) aaaaa aa-j-caaaaaa와 수학 모드의 시작을 의미합니다.
  • \OML/cmm/m/it/10 a
  • \OT1/cmr/m/n/10 :— 수학 모드에 있더라도 는 똑바로 서 있어야 하기 때문에 :OT1 글꼴에서 가져온 것입니다 .cmr
  • \OML/cmm/m/it/10 A[]— 아래 첨자 aa는 그 자체의 상자이고(제 생각에는) 여기에 간단히 다음과 같이 표시됩니다.[]
  • \OMS/cmsy/m/n/10 !!(문자 33) 은 문자 OMS/cmsy/m/n입니다 . 유니코드가 아닌 TeX 엔진(기본적으로 XeTeX 또는 LuaTeX와 반대되는 pdfTeX)에서 글꼴은 최대 256개의 글리프를 가질 수 있으므로 문자는 0-255의 특정 위치에 매핑되어야 합니다.
  • \OML/cmm/m/it/10 a[]$— 다시 아래 첨자 a는 다음과 같이 표시됩니다.[]
  • \OT1/cmr/m/n/10 a$
  • \OMS/cmsy/m/n/10 ^^U$— 여기서는 ^^U문자 21을 나타냅니다( UASCII 85이고 TeX에서는 ^^64를 더하거나 빼는 것을 의미하기 때문입니다). 해당 글꼴의 문자 21은
  • \OT1/cmr/m/n/10 aaaaaaaaaaaaaaaaaaaaaa $
  • \OML/cmm/m/it/10 a[] []
  • \OMS/cmsy/m/n/10 !$— 다시 말하지만 !여기서는 의미합니다.

(이러한 가득 찬 상자가 어떻게 표시되는지에 대한 출력은 TeX가 개발된 당시(~1980)에는 좋았고 매뉴얼을 주의 깊게 읽은 사람에게 유용했지만 오늘날에는 출력에 색상을 지정하고 문자를 변환하는 옵션이 있으면 더 좋아질 수 있습니다. 유니코드로 변환하거나 글꼴 정보를 억제/전환하지만 안타깝게도 TeX 및 TeX 사용에 대한 개선 작업은 많이 수행되지 않았습니다.post_linebreak_filter 다음 줄에 대해 좀 더 구조화된 출력을 얻을 수 있었습니다.여기. 일반적인 용도로는 너무 장황하지만 대화형 시스템에서는 확장/표시 기능을 사용하여 와 같은 혼란스러운 내용 대신 글꼴의 실제 글리프를 표시할 수 있습니다 !.)

관련 정보