tkz 圖導致 vbox 不良

tkz 圖導致 vbox 不良

我如何停止下面的 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,儘管它可能參與分頁,產生欠滿的頁面。 (您可以簡化範例,將所有 tikz 替換為,\rule{5pt}{4cm}因為重要的是圖表的垂直尺寸。)

你的問題的一個例子是

在此輸入影像描述

\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 部分之前使用以強制使用短頁。

相關內容