diff options
Diffstat (limited to 'Master/texmf-doc/doc/english/FAQ-en/html/FAQ-overfull.html')
-rw-r--r-- | Master/texmf-doc/doc/english/FAQ-en/html/FAQ-overfull.html | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/Master/texmf-doc/doc/english/FAQ-en/html/FAQ-overfull.html b/Master/texmf-doc/doc/english/FAQ-en/html/FAQ-overfull.html new file mode 100644 index 00000000000..af1cc71416d --- /dev/null +++ b/Master/texmf-doc/doc/english/FAQ-en/html/FAQ-overfull.html @@ -0,0 +1,106 @@ +<head> +<title>UK TeX FAQ -- question label overfull</title> +</head><body> +<h3>(La)TeX makes overfull lines</h3> +<p>When TeX is building a paragraph, it can make several attempts to +get the line-breaking right; on each attempt it runs the same +algorithm, but gives it different parameters. You can affect the way +TeX's line breaking works by adjusting the parameters: this answer +deals with the "tolerance" and stretchability parameters. The other +vital 'parameter' is the set of hyphenations to be applied: see +"<a href="FAQ-nohyph.html">my words aren't being hyphenated</a>" +(and the questions it references) for advice. +<p>If you're getting an undesired "overfull box", what has happened is +that TeX has given up: the parameters you gave it don't allow it to +produce a result that <em>doesn't</em> overfill. In this circumstance, +Knuth decided the best thing to do was to produce a warning, and to +allow the user to solve the problem. (The alternative, silently to go +beyond the envelope of "good taste" defined for this run of TeX, +would be distasteful to any discerning typographer.) The user can +almost always address the problem by rewriting the text that's +provoking the problem - but that's not always possible, and in some +cases it's impossible to solve the problem without adjusting the +parameters. This answer discusses the approaches one might take to +resolution of the problem, on the assumption that you've got the +hyphenation correct. +<p>The simplest case is where a 'small' word fails to break at the end of +a line; pushing the entire word to a new line isn't going to make much +difference, but it might make things just bad enough that TeX won't +do it by default. In such a case on can <em>try</em> the LaTeX +<code>\</code><code>linebreak</code> command: it may solve the problem, and if it does, it +will save an awful lot of fiddling. Otherwise, one needs to adjust +parameters: to do that we need to recap the details of TeX's line +breaking mechanisms. +<p>TeX's first attempt at breaking lines is performed without even +trying hyphenation: TeX sets its "tolerance" of line breaking +oddities to the internal value <code>\</code><code>pretolerance</code>, and sees what +happens. If it can't get an acceptable break, TeX adds the +hyphenation points allowed by the current patterns, and tries again +using the internal <code>\</code><code>tolerance</code> value. If this pass also fails, and +the internal <code>\</code><code>emergencystretch</code> value is positive, TeX will try +a pass that allows <code>\</code><code>emergencystretch</code> worth of extra stretchability +to the spaces in each line. +<p>In principle, therefore, there are three parameters (other than +hyphenation) that you can change: <code>\</code><code>pretolerance</code>, <code>\</code><code>tolerance</code> +and <code>\</code><code>emergencystretch</code>. Both the <code>tolerance</code> values are +simple numbers, and should be set by TeX primitive count +assignment - for example +<blockquote> +<pre> +\pretolerance=150 +</pre> +</blockquote> +For both, an "infinite" tolerance is represented by the value +<code>10</code><code>000</code>, but infinite tolerance is rarely +appropriate, since it can lead to very bad line breaks indeed. +<p><code>\</code><code>emergencystretch</code> is a TeX-internal 'dimen' register, and can +be set as normal for dimens in Plain TeX; in LaTeX, use +<code>\</code><code>setlength</code> - for example: +<blockquote> +<pre> +\setlength{\emergencystretch}{3em} +</pre> +</blockquote> +<p>The choice of method has time implications - each of the +passes takes time, so adding a pass (by changing +<code>\</code><code>emergencystretch</code>) is less desirable than suppressing one (by +changing <code>\</code><code>pretolerance</code>). However, it's unusual nowadays to find a +computer that's slow enough that the extra passes are really +troublesome. +<p>In practice, <code>\</code><code>pretolerance</code> is rarely used other than to manipulate +the use of hyphenation; Plain TeX and LaTeX both set its value +to <code>100</code>. To suppress the first scan of paragraphs, set +<code>\</code><code>pretolerance</code> to <code>-1</code>. +<p><code>\</code><code>tolerance</code> is often a good method for adjusting spacing; +Plain TeX and LaTeX both set its value to <code>200</code>. LaTeX's +<code>\</code><code>sloppy</code> command sets it to <code>9999</code>, as does the +<code>sloppypar</code> environment. This value is the largest +available, this side of infinity, and can allow pretty poor-looking +breaks (this author rarely uses <code>\</code><code>sloppy</code> "bare", though he does +occasionally use <code>sloppypar</code> - that way, the change of +<code>\</code><code>tolerance</code> is confined to the environment). More satisfactory is +to make small changes to <code>\</code><code>tolerance</code>, incrementally, and then to look to +see how the change affects the result; very small increases can often +do what's necessary. Remember that <code>\</code><code>tolerance</code> is a paragraph +parameter, so you need to ensure it's actually applied - see +"<a href="FAQ-paraparam.html">ignoring paragraph parameters</a>". +LaTeX users could use an environment like: +<blockquote> +<pre> +\newenvironment{tolerant}[1]{% + \par\tolerance=#1\relax +}{% + \par +} +</pre> +</blockquote> +enclosing entire paragraphs (or set of paragraphs) in it. +<p><code>\</code><code>emergencystretch</code> is a slightly trickier customer to understand. +The example above set it to <code>3em</code>; the Computer Modern fonts +ordinarily fit three space skips to the em, so the change would +allow anything up to the equivalent of nine extra spaces in each +line. In a line with lots of spaces, this could be reasonable, but +with (say) only three spaces on the line, each could stretch to four +times its natural width. +<p><p>This question on the Web: <a href="http://www.tex.ac.uk/cgi-bin/texfaq2html?label=overfull">http://www.tex.ac.uk/cgi-bin/texfaq2html?label=overfull</a> +</body> |