>From 6ad4c736867394d765a4b50aba907ef0dd8420ba Mon Sep 17 00:00:00 2001 From: Akira Yokosawa <akiyks@xxxxxxxxx> Date: Thu, 6 Feb 2020 22:16:28 +0900 Subject: [PATCH] Permit occasional orphans Recent update of upstream LaTeX caused excessively wide spaces between paragraphs in 2c layout similar to the issue mentioned in the change log of commit 4c6ee39761a0 ("Remove required version of 'epigraph'") at the beginning of Chapter 6. The root cause of the unstable behavior is the constraints imposed by the unfortunate combination of a fairly tall unbreakable block (consisting of a section heading, a section epigraph, a paragraph of only 3 lines), a footnote, and a floating figure. Note that the "nowidow" package requires at least 4 lines for a paragraph to be broken. An orphan line (first line of a paragraph at the bottom of a page/column) looks less ugly than a widow line (final line of a paragraph at the top of a page/column) does. As a band-aid patch, this commit permits an orphan at the problematic paragraph by the \noclub command provided by the "nowidow" package and avoids such ugly wide spaces. Another approach would be to add some words to the paragraph and make it 4 lines or more. By this change, TeX Live 2015/Debian (on Ubuntu Xenial) with the up-to-date "epigraph" can also produce the (mostly) same output. Do similar tweaks to avoid wide vertical spaces in a couple of other chapters. Signed-off-by: Akira Yokosawa <akiyks@xxxxxxxxx> --- Hi Paul, As mentioned in the change log, if you add some words to the paragraph in partexercises.tex, the \noclub[1] can be removed. In the other places, the problem is not the length of the paragraph and you need different tweaks to avoid orphans. Let me see what the tweaks would be. Thanks, Akira SMPdesign/partexercises.tex | 1 + debugging/debugging.tex | 1 + locking/locking.tex | 1 + 3 files changed, 3 insertions(+) diff --git a/SMPdesign/partexercises.tex b/SMPdesign/partexercises.tex index 9cebe6b7..1708da93 100644 --- a/SMPdesign/partexercises.tex +++ b/SMPdesign/partexercises.tex @@ -12,6 +12,7 @@ This section uses a pair of exercises (the classic Dining Philosophers problem and a double-ended queue) to demonstrate the value of partitioning. +\noclub[1] \subsection{Dining Philosophers Problem} \label{sec:SMPdesign:Dining Philosophers Problem} diff --git a/debugging/debugging.tex b/debugging/debugging.tex index 286f6df7..07350fe1 100644 --- a/debugging/debugging.tex +++ b/debugging/debugging.tex @@ -2256,6 +2256,7 @@ Section~\ref{sec:debugging:Detecting Interference Via Measurement} describes methods of rejection involving additional measurements, while Section~\ref{sec:debugging:Detecting Interference Via Statistics} describes statistics-based rejection. +\noclub[1] \subsubsection{Detecting Interference Via Measurement} \label{sec:debugging:Detecting Interference Via Measurement} diff --git a/locking/locking.tex b/locking/locking.tex index 3c2949fa..8a1a3101 100644 --- a/locking/locking.tex +++ b/locking/locking.tex @@ -1010,6 +1010,7 @@ Therefore CPU~1 will likely acquire the lock. If CPU~1 holds the lock long enough for CPU~0 to be requesting the lock by the time CPU~1 releases it and vice versa, the lock can shuttle between CPUs~0 and~1, bypassing CPUs~2--7. +\noclub[1] \QuickQuiz{} Wouldn't it be better just to use a good parallel design -- 2.17.1