
我如何停止下面的 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 部分之前使用以強制使用短頁。