vbox 불량을 일으키는 tkz 다이어그램

vbox 불량을 일으키는 tkz 다이어그램

다음에서 vbox 문제를 어떻게 중지합니까? 다이어그램의 크기를 0.3cm로 설정하고 그렇게 작게 만들고 싶지 않은 경우에만 중지됩니다. WME에는 표시되지 않지만 전체 문서에서는 다음과 같습니다. 영향을 미치는 유일한 다이어그램.

    \documentclass[12pt, a4paper, twoside, openright,fleqn, leqno, draft, ]{book}

    \usepackage{tkz-euclide}            %Tkz-Euclide diagrams
    \usepackage{amsmath,amsthm,amssymb,cancel}                  %Math packages

    %Diagram environment
    \newenvironment{diagram}
    {%
    \par\addvspace{0pt}%
    \centering
    \stepcounter{CountDiag}
    \tkzSetUpCompass[lenth=1cm]
    \begin{tikzpicture}
    }{%
    \end{tikzpicture}\par
    \vspace{-20pt}
    Diagram~\theCountDiag\par
    \addvspace{0pt}
    }
%    \newcounter{CountDiag}\counterwithin*{CountDiag}.   {section}%
    \newcounter{CountDiag}\counterwithin*{CountDiag}{section}%

    \newcommand{\Tri}[8]{%%
    \tkzDefPoint(0,0){#1}%
    \tkzDefPoint({#2,#3}){#4}%
    \tkzDefPoint({#5,#6}){#7}%
    \tkzDrawPolygon[fill=#8](#1,#4,#7)%
    \tkzLabelPoint[left](#1){$#1$}% 
    \tkzLabelPoint[below](#4){$#4$}%
    \tkzLabelPoint[above](#7){$#7$}%
    \tkzDrawPoints(#1,#4,#7)%
    }

    \begin{document}

    \begin{diagram}[scale=0.7]
    \Tri{B}{3}{0}{C}{1.5}{3}{A}{none}
        \tkzDefPointOnLine[pos=2](A,B)          \tkzGetPoint{E}
        \tkzDefPointOnLine[pos=2](A,C)          \tkzGetPoint{D}
        \tkzDefPointOnLine[pos=1.5](A,B)            \tkzGetPoint{F}
        \tkzDefPointOnLine[pos=1.5](A,C)            \tkzGetPoint{G} 
         \tkzDrawPolygon(A,B,C)
         \tkzDrawSegment(A,E)
         \tkzDrawSegment(A,D)
        \tkzLabelPoints[left](E)
        \tkzLabelPoints[right](D)
        \tkzLabelPoints[left](F)
        \tkzLabelPoints[right](G)
        \tkzMarkSegment[mark=|](A,C)
        \tkzMarkSegment[mark=|](A,B)
        \tkzMarkAngle[size=0.5](A,C,B)
        \tkzMarkAngle[size=0.5](C,B,A)
        \tkzDrawPoints[fill=gray](A,B,C,D,E,F,G)
         \tkzDrawSegment[dashed](C,F)
     \end{tikzpicture}
    \hspace{0.3cm}
    \begin{tikzpicture}[scale=0.7]
       \Tri{B}{3}{0}{C}{1.5}{3}{A}{none}
       \tkzDefPointOnLine[pos=2](A,B)           \tkzGetPoint{E}
    \tkzDefPointOnLine[pos=2](A,C)      \tkzGetPoint{D}
        \tkzDefPointOnLine[pos=1.5](A,B)            \tkzGetPoint{F}
        \tkzDefPointOnLine[pos=1.5](A,C)            \tkzGetPoint{G} 
        \tkzDrawPolygon(A,B,C)
        \tkzDrawSegment(A,E)
        \tkzDrawSegment(A,D)
        \tkzLabelPoints[left](E)
        \tkzLabelPoints[right](D)
        \tkzLabelPoints[left](F)
        \tkzLabelPoints[right](G)       
        \tkzMarkSegment[mark=|](A,C)
        \tkzMarkSegment[mark=|](A,B)
        \tkzMarkAngle[size=0.5](A,C,B)
        \tkzMarkAngle[size=0.5](C,B,A)
        \tkzDrawSegment[dashed](B,G)
        \tkzDrawPoints[fill=gray](A,B,C,D,E,F,G)
    \end{tikzpicture}
    \hspace{0.3cm}
    \begin{tikzpicture}[scale=0.7]
       \Tri{B}{3}{0}{C}{1.5}{3}{A}{none}
          \tkzDefPointOnLine[pos=2](A,B)            \tkzGetPoint{E}
        \tkzDefPointOnLine[pos=2](A,C)          \tkzGetPoint{D}
        \tkzDefPointOnLine[pos=1.5](A,B)            \tkzGetPoint{F}
        \tkzDefPointOnLine[pos=1.5](A,C)            \tkzGetPoint{G} 
        \tkzDrawPolygon(A,B,C)
        \tkzDrawSegment(A,E)
        \tkzDrawSegment(A,D)
        \tkzLabelPoints[left](E)
        \tkzLabelPoints[right](D)
        \tkzLabelPoints[left](F)
        \tkzLabelPoints[right](G)       
        \tkzMarkSegment[mark=|](A,C)
        \tkzMarkSegment[mark=|](A,B)
        \tkzMarkAngle[size=0.5](A,C,B)
        \tkzMarkAngle[size=0.5](C,B,A)
        \tkzDrawSegment[dashed](B,G)
          \tkzDrawSegment[dashed](C,F)
        \tkzDrawPoints[fill=gray](A,B,C,D,E,F,G)
    \end{diagram}
    \end{document}

코드가 길어서 죄송합니다. 하지만 주로 다이어그램 관련 내용입니다.

스크린샷:

결과

답변1

표시된 코드에는 언더풀한 vbox가 없지만, 언더풀한 페이지를 생성하는 페이지 나누기에 참여할 수 있습니다. ( \rule{5pt}{4cm}중요한 것은 다이어그램의 수직 크기이므로 모든 tikz를 다음으로 바꾸는 예제를 단순화할 수 있습니다 .)

문제의 예는 다음과 같습니다.

여기에 이미지 설명을 입력하세요

\documentclass[12pt, a4paper, twoside, openright,fleqn, leqno, draft, ]{book}

    \usepackage{tkz-euclide}            %Tkz-Euclide diagrams
    \usepackage{amsmath,amsthm,amssymb,cancel}                  %Math packages

    %Diagram environment
    \newenvironment{diagram}
    {%
    \par\addvspace{0pt}%
    \centering
    \stepcounter{CountDiag}
    \tkzSetUpCompass[lenth=1cm]
    \begin{tikzpicture}
    }{%
    \end{tikzpicture}\par
    \vspace{-20pt}
    Diagram~\theCountDiag\par
    \addvspace{0pt}
    }
%    \newcounter{CountDiag}\counterwithin*{CountDiag}.   {section}%
    \newcounter{CountDiag}\counterwithin*{CountDiag}{section}%

    \newcommand{\Tri}[8]{%%
    \tkzDefPoint(0,0){#1}%
    \tkzDefPoint({#2,#3}){#4}%
    \tkzDefPoint({#5,#6}){#7}%
    \tkzDrawPolygon[fill=#8](#1,#4,#7)%
    \tkzLabelPoint[left](#1){$#1$}% 
    \tkzLabelPoint[below](#4){$#4$}%
    \tkzLabelPoint[above](#7){$#7$}%
    \tkzDrawPoints(#1,#4,#7)%
    }

    \begin{document}

    \begin{diagram}[scale=0.7]
    \Tri{B}{3}{0}{C}{1.5}{3}{A}{none}
        \tkzDefPointOnLine[pos=2](A,B)          \tkzGetPoint{E}
        \tkzDefPointOnLine[pos=2](A,C)          \tkzGetPoint{D}
        \tkzDefPointOnLine[pos=1.5](A,B)            \tkzGetPoint{F}
        \tkzDefPointOnLine[pos=1.5](A,C)            \tkzGetPoint{G} 
         \tkzDrawPolygon(A,B,C)
         \tkzDrawSegment(A,E)
         \tkzDrawSegment(A,D)
        \tkzLabelPoints[left](E)
        \tkzLabelPoints[right](D)
        \tkzLabelPoints[left](F)
        \tkzLabelPoints[right](G)
        \tkzMarkSegment[mark=|](A,C)
        \tkzMarkSegment[mark=|](A,B)
        \tkzMarkAngle[size=0.5](A,C,B)
        \tkzMarkAngle[size=0.5](C,B,A)
        \tkzDrawPoints[fill=gray](A,B,C,D,E,F,G)
         \tkzDrawSegment[dashed](C,F)
     \end{tikzpicture}
    \hspace{0.3cm}
    \begin{tikzpicture}[scale=0.7]
       \Tri{B}{3}{0}{C}{1.5}{3}{A}{none}
       \tkzDefPointOnLine[pos=2](A,B)           \tkzGetPoint{E}
    \tkzDefPointOnLine[pos=2](A,C)      \tkzGetPoint{D}
        \tkzDefPointOnLine[pos=1.5](A,B)            \tkzGetPoint{F}
        \tkzDefPointOnLine[pos=1.5](A,C)            \tkzGetPoint{G} 
        \tkzDrawPolygon(A,B,C)
        \tkzDrawSegment(A,E)
        \tkzDrawSegment(A,D)
        \tkzLabelPoints[left](E)
        \tkzLabelPoints[right](D)
        \tkzLabelPoints[left](F)
        \tkzLabelPoints[right](G)       
        \tkzMarkSegment[mark=|](A,C)
        \tkzMarkSegment[mark=|](A,B)
        \tkzMarkAngle[size=0.5](A,C,B)
        \tkzMarkAngle[size=0.5](C,B,A)
        \tkzDrawSegment[dashed](B,G)
        \tkzDrawPoints[fill=gray](A,B,C,D,E,F,G)
    \end{tikzpicture}
    \hspace{0.3cm}
    \begin{tikzpicture}[scale=0.7]
       \Tri{B}{3}{0}{C}{1.5}{3}{A}{none}
          \tkzDefPointOnLine[pos=2](A,B)            \tkzGetPoint{E}
        \tkzDefPointOnLine[pos=2](A,C)          \tkzGetPoint{D}
        \tkzDefPointOnLine[pos=1.5](A,B)            \tkzGetPoint{F}
        \tkzDefPointOnLine[pos=1.5](A,C)            \tkzGetPoint{G} 
        \tkzDrawPolygon(A,B,C)
        \tkzDrawSegment(A,E)
        \tkzDrawSegment(A,D)
        \tkzLabelPoints[left](E)
        \tkzLabelPoints[right](D)
        \tkzLabelPoints[left](F)
        \tkzLabelPoints[right](G)       
        \tkzMarkSegment[mark=|](A,C)
        \tkzMarkSegment[mark=|](A,B)
        \tkzMarkAngle[size=0.5](A,C,B)
        \tkzMarkAngle[size=0.5](C,B,A)
        \tkzDrawSegment[dashed](B,G)
          \tkzDrawSegment[dashed](C,F)
        \tkzDrawPoints[fill=gray](A,B,C,D,E,F,G)
    \end{diagram}


    \section{aaaaaa}
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    \section{aaaaaa}
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    \section{aaaaaa}
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx    xxxx xxxx
    \end{document}

생산하는

Underfull \vbox (badness 4108) has occurred while \output is active

book클래스가 기본적으로 설정되어 있지만 \flushbottom섹션 제목 바로 다음에 페이지 나누기가 불가능하므로 섹션 0.3 전체가 다음 페이지로 이동해야 하며, 페이지 1의 하단에 도달할 만큼 유연한 접착제나 텍스트가 충분하지 않습니다. 공백을 늘려서 경고합니다.

더 많은 텍스트를 작성하여 공간을 채우거나 \vfill다이어그램 뒤에 추가하여 더 많은 공백을 허용하거나 \clearpage섹션 3 앞에 사용하여 짧은 페이지를 강제할 수 있습니다.

관련 정보