diff options
Diffstat (limited to 'Master/texmf-dist/doc/generic/FAQ-en/archive-version/faq-wdidt.tex')
-rw-r--r-- | Master/texmf-dist/doc/generic/FAQ-en/archive-version/faq-wdidt.tex | 1995 |
1 files changed, 0 insertions, 1995 deletions
diff --git a/Master/texmf-dist/doc/generic/FAQ-en/archive-version/faq-wdidt.tex b/Master/texmf-dist/doc/generic/FAQ-en/archive-version/faq-wdidt.tex deleted file mode 100644 index ac786c10aab..00000000000 --- a/Master/texmf-dist/doc/generic/FAQ-en/archive-version/faq-wdidt.tex +++ /dev/null @@ -1,1995 +0,0 @@ -% $Id: faq-wdidt.tex,v 1.23 2012/11/24 10:56:03 rf10 Exp $ - -\section{Why does it \emph{do} that?} - -\subsection{Common errors} - -\Question[Q-crossref]{\LaTeX{} gets cross-references wrong} - -Sometimes, however many times you run \LaTeX{}, the cross-references -are just wrong. A likely reason is that you have placed the label -before the data for the label was set; if the label is recording a -\csx{caption} command, the \csx{label} command must appear -\emph{after} the \csx{caption} command, or be part of it. For example: -\begin{quote} -\begin{verbatim} -\begin{figure} - <the illustration itself> - \caption{My figure} - \label{myfig} -\end{figure} -\end{verbatim} -\end{quote} -is correct, as is -\begin{quote} -\begin{verbatim} -\begin{figure} - <the illustration itself> - \caption{My figure% - \label{myfig}} -\end{figure} -\end{verbatim} -\end{quote} -whereas, in -\begin{quote} -\begin{verbatim} -\begin{figure} - <the illustration itself> - \label{myfig} - \caption{My figure} -\end{figure} -\end{verbatim} -\end{quote} -the label will report the number of the section (or whatever) in which -the surrounding text resides, or the like. - -You can, with the same malign effect, shield the \csx{caption} command -from its associated \csx{label} command, by enclosing the caption in an -environment of its own. This effect will be seen with: -\begin{quote} -\begin{verbatim} -\begin{figure} - <the illustration itself> - \caption{A Figure} -\end{figure} -\label{myfig} -\end{verbatim} -\end{quote} -where the \csx{label} definitely \emph{is} after the \csx{caption}, -but because the \environment{figure} environment closed before the -\csx{label} command, the \csx{caption} is no longer ``visible''. - -In summary, the \csx{label} must be \emph{after} the command that -defines it (e.g., \csx{caption}), and if the \csx{caption} is inside -an environment, the \csx{label} must be in there too. -\LastEdit{2012-02-07} - -\Question[Q-newlineargs]{Start of line goes awry} -\keywords{asterisk square bracket start line} - -This answer concerns two sorts of problems: errors of the form -\begin{quote} -\begin{verbatim} -! Missing number, treated as zero. -<to be read again> - p -<*> [perhaps] -\end{verbatim} -\end{quote} -and errors where a single asterisk at the start of a line mysteriously -fails to appear in the typeset output. - -Both problems arise because \texttt{\bsbs } takes optional arguments. The -command \texttt{\bsbs *} means ``break the line here, and inhibit page break -following the line break''; the command \texttt{\bsbs [}\meta{dimen}\texttt{]} -means ``break the line here and add \meta{dimen} extra vertical space -afterwards''. - -The problem arises because \texttt{\bsbs } looks for the next -non-blank thing; the test it uses ignores the end of the line in -your input text, so that \texttt{\bsbs } comes to imagine that you -were giving it a `modifier'. - -An obvious solution is to enclose the stuff at the start of the new -line in braces, typing: -\begin{quote} -\begin{verbatim} -{\ttfamily - /* C-language comment\\ - {[perhaps]} this could be done better\\ - {*}/ -} -\end{verbatim} -\end{quote} -This particular example could be coded (without any problems) in -verbatim, but the behaviour does confuse people. - -The problem also appears in maths mode, in arrays and so on. In this -case, large-scale bracketing of things is \emph{not} a good idea; the -\TeX{} primitive \csx{relax} (which does nothing except to block -searches of this nature) may be used. From another -\Newsgroup{comp.text.tex} example: -\begin{quote} -\begin{verbatim} -\begin{eqnarray} - [a] &=& b \\ - \relax[a] &=& b -\end{eqnarray} -\end{verbatim} -\end{quote} -which is a usage this \acro{FAQ} would not recommend, anyway: refer -to the \Qref*{reason not to use \environment{eqnarray}}{Q-eqnarray}. - -Note that the \Package{amsmath} package modifies the behaviour of -\texttt{\bsbs } in maths. With \Package{amsmath}, the -\environment{eqnarray} example doesn't need any special action -(\csx{relax} or braces). -\LastEdit{2012-09-02} - -\Question[Q-verbwithin]{Why doesn't verbatim work within\,\dots{}?} - -The \LaTeX{} verbatim commands work by changing category codes. Knuth -says of this sort of thing ``Some care is needed to get the timing -right\dots{}'', since once the category code has been assigned to a -character, it doesn't change. So \csx{verb} and -\cmdinvoke{begin}{verbatim} have to assume that they are getting the -first look at the parameter text; if they aren't, \TeX{} has already -assigned category codes so that the verbatim command doesn't have a -chance. For example: -\begin{quote} -\begin{verbatim} -\verb+\error+ -\end{verbatim} -\end{quote} -will work (typesetting `\csx{error}'), but -\begin{quote} -\begin{verbatim} -\newcommand{\unbrace}[1]{#1} -\unbrace{\verb+\error+} -\end{verbatim} -\end{quote} -will not (it will attempt to execute \csx{error}). Other errors one -may encounter are `\csx{verb} ended by end of line', or even the -rather more helpful `\csx{verb} illegal in command argument'. The -same sorts of thing happen with \cmdinvoke{begin}{verbatim} \dots{} -\cmdinvoke{end}{verbatim}: -\begin{quote} -\begin{quoteverbatim} -\ifthenelse{\boolean{foo}}{% -\begin{verbatim} -foobar -\end{verbatim} -}{% -\begin{verbatim} -barfoo -\end{verbatim} -} -\end{quoteverbatim} -\end{quote} -provokes errors like `File ended while scanning use of -\csx{@xverbatim}', as \cmdinvoke{begin}{verbatim} fails to see its -matching \cmdinvoke{end}{verbatim}. - -This is why the \LaTeX{} book insists that verbatim -commands must not appear in the argument of any other command; they -aren't just fragile, they're quite unusable in any ``normal'' command -parameter, -regardless of \Qref*{\csx{protect}ion}{Q-protect}. (The \csx{verb} -command tries hard to detect if you're misusing it; unfortunately, it -can't always do so, and the error message is therefore not reliable as an -indication of problems.) - -The first question to ask yourself is: ``is \csx{verb} actually -necessary?''. -\begin{itemize} -\item If \cmdinvoke{texttt}{\emph{your text}} produces the same result - as \csx{verb}\texttt{+\emph{your text}+}, then there's no need of - \csx{verb} in the first place. -\item If you're using \csx{verb} to typeset a \acro{URL} or email - address or the like, then the \csx{url} command from the - \Package{url} will help: it doesn't suffer from all the problems of - \csx{verb}, though it's still not robust; % ! line break - ``\Qref*{typesetting \acro{URL}s}{Q-setURL}'' offers advice here. -\item If you're putting \csx{verb} into the argument of a boxing - command (such as \csx{fbox}), consider using the \environment{lrbox} - environmen)t: -\begin{quote} -\begin{verbatim} -\newsavebox{\mybox} -... -\begin{lrbox}{\mybox} - \verb!VerbatimStuff! -\end{lrbox} -\fbox{\usebox{\mybox}} -\end{verbatim} -\end{quote} -\end{itemize} - -If you can't avoid verbatim, the \csx{cprotect} command (from the -package \Package{cprotect}) might help. The package manages to make a -macro read a verbatim argument in a ``sanitised'' way by the simple -medium of prefixing the macro with \csx{cprotect}: -\begin{quote} -\begin{verbatim} -\cprotect\section{Using \verb|verbatim|} -\end{verbatim} -\end{quote} -The package (at the time this author tested it) was still under -development (though it \emph{does} work in this simple case) and -deserves consideration in most cases; the package documentation gives -more details. - -Another way out is to use one of ``argument types'' of the -\csx{NewDocumentCommand} command in the experimental \latex{}3 package -\Package{xparse}: -\begin{quote} -\begin{verbatim} -\NewDocumentCommand\cmd{ m v m }{#1 `#2' #3} -\cmd{Command }|\furble|{ isn't defined} -\end{verbatim} -\end{quote} -Which gives us: -\begin{quote} - Command \csx{furble} isn't defined -\end{quote} -The ``\texttt{m}'' tag argument specifies a normal mandatory argument, -and the ``\texttt{v}'' specifies one of these verbatim arguments. -As you see, it's implanting a \csx{verb}-style command argument in the -argument sequence of an otherwise ``normal'' sort of command; that -\begin{typesetversion} - `\texttt{\char`\|}' -\end{typesetversion} -\begin{htmlversion} - `\texttt{|}' -\end{htmlversion} -may be any old character that doesn't -conflict with the content of the argument. - -This is pretty neat (even if the verbatim is in an argument of its -own) but the downside is that \Package{xparse} pulls in -the experimental \latex{}3 programming environment -(\Package{l3kernel}) which is pretty big. - -Other than the \Package{cprotect} package, there are three partial -solutions to the problem: -\begin{itemize} -\item Some packages have macros which are designed to be responsive - to verbatim text in their arguments. For example, - the \Package{fancyvrb} package defines a command - \csx{VerbatimFootnotes}, which redefines the \csx{footnotetext} - command, and hence also the behaviour of the \csx{footnote}) - command, in such a way that you can include \csx{verb} commands in - its argument. This approach could in principle be extended to the - arguments of other commands, but it can clash with other packages: - for example, \csx{VerbatimFootnotes} interacts poorly with the - \pkgoption{para} option of the \Package{footmisc} package. - - The \Class{memoir} class defines its \csx{footnote} command so that - it will accept verbatim in its arguments, without any supporting package. -\item The \Package{fancyvrb} package defines a command \csx{SaveVerb}, - with a corresponding \csx{UseVerb} command, that allow you to save - and then to reuse the content of its argument; for details of this - extremely powerful facility, see the package documentation. - - Rather simpler is the \Package{verbdef} package, whose \csx{verbdef} - command defines a (robust) command which expands to the verbatim - argument given. -\item If you have a single character that is giving trouble (in - its absence you could simply use \csx{texttt}), consider using - \csx{string}. \cmdinvoke{texttt}{my\csx{string}\_name} - typesets the same as - \csx{verb+my\_name+}, and will work in the argument of a command. It - won't, however, work in a moving argument, and no amount of - \Qref*{\csx{protect}ion}{Q-protect} will make it work in - such a case. - - A robust alternative is: -\begin{quote} -\begin{verbatim} -\chardef\us=`\_ -... -\section{... \texttt{my\us name}} -\end{verbatim} -\end{quote} - Such a definition is `naturally' robust; the construction - ``\meta{back-tick}\csx{\meta{char}}'' may be used for any - troublesome character (though it's plainly not necessary for things - like percent signs for which \AllTeX{} already provides - robust macros). -\end{itemize} -\begin{ctanrefs} -\item[cprotect.sty]\CTANref{cprotect} -\item[fancyvrb.sty]\CTANref{fancyvrb} -\item[l3kernel \nothtml{\rmfamily}bundle]\CTANref{l3kernel} -\item[memoir.cls]\CTANref{memoir} -\item[url.sty]\CTANref{url} -\item[verbdef.sty]\CTANref{verbdef} -\item[xparse.sty]Distributed as part of \CTANref{l3packages}[xparse] -\end{ctanrefs} -\LastEdit{2013-02-15} - -\Question[Q-noline]{``No line here to end''} - -The error -\begin{quote} -\begin{wideversion} -\begin{verbatim} -! LaTeX Error: There's no line here to end. - -See the LaTeX manual or LaTeX Companion for explanation. -\end{verbatim} -\end{wideversion} -\begin{narrowversion} -\begin{verbatim} -! LaTeX Error: There's no line here to end. - -See the LaTeX manual or LaTeX Companion -... for explanation. -\end{verbatim} -\end{narrowversion} -\end{quote} -comes in reaction to you giving \LaTeX{} a \texttt{\bsbs } command at a time -when it's not expecting it. The commonest case is where you've -decided you want the label of a list item to be on a line of its own, -so you've written (for example): -\begin{quote} -\begin{verbatim} -\begin{description} -\item[Very long label] \\ - Text... -\end{description} -\end{verbatim} -\end{quote} -% ridiculous coding for sanitize.pl -- careful! -\bsbs {} is actually a rather bad command to use in this case (even if -it worked), since it would force the `paragraph' that's made up of the -text of the item to terminate a line which has nothing on it but the -label. This would lead to an ``\texttt{Underfull }\csx{hbox}'' warning message -(usually with `infinite' badness of 10000); while this message doesn't -do any actual harm other than slowing down your \LaTeX{} run, any -message that doesn't convey any information distracts for no useful -purpose. - -The proper solution to the problem is to write a new sort of -\environment{description} environment, that does just what you're after. (The -\nothtml{\emph{\LaTeX{} Companion}~--- see }% ! line wrap, and next line -\Qref[question]{\emph{\LaTeX{} Companion}}{Q-latex-books}\nothtml{~---} -offers a rather wide selection of variants of these things.) - -The quick-and-easy solution, which avoids the warning, is to write: -\begin{quote} -\begin{verbatim} -\begin{description} -\item[Very long label] \hspace*{\fill} \\ - Text... -\end{description} -\end{verbatim} -\end{quote} -which fills out the under-full line before forcing its closure. The -\Package{expdlist} package provides the same functionality with its -\csx{breaklabel} command, and \Package{mdwlist} provides it via its -\csx{desclabelstyle} command. - -The other common occasion for the message is when you're using the -\texttt{center} (or \environment{flushleft} or \environment{flushright}) -environment, and have decided you need extra separation between lines -in the environment: -\begin{quote} -\begin{verbatim} -\begin{center} - First (heading) line\\ - \\ - body of the centred text... -\end{center} -\end{verbatim} -\end{quote} -The solution here is plain: use the \texttt{\bsbs } command in the way it's -supposed to be used, to provide more than just a single line break -space. \texttt{\bsbs } takes an optional argument, which specifies -how much extra space to add; the required effect in the text above can -be had by saying: -\begin{quote} -\begin{verbatim} -\begin{center} - First (heading) line\\[\baselineskip] - body of the centred text... -\end{center} -\end{verbatim} -\end{quote} -\begin{ctanrefs} -\item[expdlist.sty]\CTANref{expdlist} -\item[mdwlist.sty]Distributed as part of \CTANref{mdwtools}[mdwlist] -\end{ctanrefs} -\LastEdit{2011-06-01} - -% other instances: \[no]linebreak in vertical mode - -\Question[Q-vertspacefloat]{Extra vertical space in floats} - -A common complaint is that extra vertical space has crept into -\environment{figure} or \environment{table} floating environments. -More common still are users who post code that introduces this extra -space, and \emph{haven't noticed the problem}! - -The trouble arises from the fact that the \environment{center} -environment (and its siblings \environment{flushleft} and -\environment{flushright}) are actually based on \LaTeX{}'s -list-handling code; and lists always separate themselves from the -material around them. Meanwhile, there are parameters provided to -adjust the spacing between floating environments and their -surroundings; so if we have: -\begin{quote} -\begin{verbatim} -\begin{figure} - \begin{center} - \includegraphics{...} - \caption{...} - \end{center} -\end{figure} -\end{verbatim} -\end{quote} -\nothtml{\noindent}or worse still: -\begin{quote} -\begin{verbatim} -\begin{figure} - \begin{center} - \includegraphics{...} - \end{center} - \caption{...} -\end{figure} -\end{verbatim} -\end{quote} -unwarranted vertical space is going to appear. - -The solution is to let the float and the objects in it position -themselves, and to use ``generic'' layout commands rather than their -list-based encapsulations. -\begin{quote} -\begin{verbatim} -\begin{figure} - \centering - \includegraphics{...} - \caption{...} -\end{figure} -\end{verbatim} -\end{quote} -(which even involves less typing). - -This alternative code will work with any \LaTeX{} package. It will -not work with obsolete (pre-\LaTeXe{}) packages such as -\Package{psfig} or \Package{epsf}~--- see % beware line break -\Qref[question]{graphics inclusion}{Q-impgraph} for discussion of the -genesis of \csx{includegraphics}. -\LastEdit{2012-11-16} - -\Question[Q-2colfltorder]{Two-column float numbers out of order} - -When \LaTeX{} can't place a float immediately, it places it on one of -several ``defer'' lists. If another float of the same type comes -along, and the ``defer'' list for that type still has something in it, -the later float has to wait for everything earlier in the list. - -Now, standard \LaTeX{} has different lists for single-column floats, -and double-column floats; this means that single-column figures can -overtake double-column figures (or vice-versa), and you observe later -figures appear in the document before early ones. The same is true, -of course, for tables, or for any user-defined float. - -The \LaTeX{} team recognise the problem, and provides a package -(\Package{fixltx2e}) to deal with it. \Package{Fixltx2e} amalgamates -the two defer lists, so that floats don't get out of order. - -For those who are still running an older \LaTeX{} distribution, the -package \Package{fix2col} should serve. This package (also by a -member of the \LaTeX{} team) was the basis of the relevant part of -\Package{fixltx2e}. The functionality has also been included in -\Package{dblfloatfix}, which also has code to place full-width floats -at \Qref*{\texttt{[b]} placement}{Q-2colfloat}. - -Once you have loaded the package, no more remains to be done: the -whole requirement is to patch the output routine; no extra commands -are needed. -\begin{ctanrefs} -\item[dblfloatfix.sty]\CTANref{dblfloatfix} -\item[fix2col.sty]\CTANref{fix2col} -\item[fixltx2e.sty]Part of the \LaTeX{} distribution -\end{ctanrefs} - -\Question[Q-tabacc]{Accents misbehave in \environment{tabbing}} - -So you are constructing a \environment{tabbing} environment, and you -have the need of some diacriticised text~--- perhaps something as simple -as \cmdinvoke{'}{e}~--- and the accent disappears because it has been -interpreted as a \environment{tabbing} command, and everything goes -wrong. - -This is really a rather ghastly feature of the \environment{tabbing} -environment; in order to type accented characters you need to use the -\csx{a} kludge: so \cmdinvoke{a'}{e} inside \environment{tabbing} for -\cmdinvoke{'}{e} outside, and similarly \csx{a`} for \csx{`} and \csx{a=} -for \csx{=}. This whole procedure is of course hideous and -error-prone. - -The simplest alternative is to type in an encoding that has the -diacriticised characters in it, and to use an appropriate encoding -definition file in the \Package{inputenc} package. So for example, -type: -\begin{quote} - \cmdinvoke{usepackage}[latin1]{inputenc}\\ - \texttt{...}\\ - \cmdinvoke{begin}{tabbing}\\ - \texttt{...}\\ - \texttt{...} \csx{>} \texttt{voil\`a} \csx{>} \texttt{...} -\end{quote} -for: -\begin{quote} - \dots{}\quad voil\`a\quad \dots{} -\end{quote} -and the internal mechanisms of the \Package{inputenc} package will put -the right version of the accent command in there. - -A witty reversal of the r\^oles is introduced by the package -\Package{Tabbing} (note the capital ``T''): it provides a -\environment{Tabbing} environment which duplicates -\environment{tabbing}, but all the single-character commands become -complicated objects. So \environment{tabbing}'s \csx{>} becomes -\csx{TAB>}, \csx{=} becomes \csx{TAB=}, and so on. The above trivial -example would therefore become: -\begin{quote} -\begin{verbatim} -\usepackage{Tabbing} -... -\begin{Tabbing} - ... ... \TAB> voil\`a \TAB> ... -\end{verbatim} -\end{quote} -\begin{ctanrefs} -\item[Tabbing.sty]\CTANref{Tabbing} -\end{ctanrefs} - -\Question[Q-alreadydef]{Package reports ``command already defined''} - -You load a pair of packages, and the second reports that one of the -commands it defines is already present. For example, both the -\Package{txfonts} and \Package{amsmath} define a command \csx{iint} -(and \csx{iiint} and so on); so -\begin{quote} -\begin{verbatim} -... -\usepackage{txfonts} -\usepackage{amsmath} -\end{verbatim} -\end{quote} -produces a string of error messages of the form: -\begin{quote} -\begin{wideversion} -\begin{verbatim} -! LaTeX Error: Command \iint already defined. - Or name \end... illegal, see p.192 of the manual. -\end{verbatim} -\end{wideversion} -\begin{narrowversion} -\begin{verbatim} -! LaTeX Error: Command \iint already - defined. Or name \end... illegal, - see p.192 of the manual. -\end{verbatim} -\end{narrowversion} -\end{quote} -As a general rule, things that \Package{amsmath} defines, it defines -well; however, there is a good case for using the \Package{txfonts} -version of \csx{iint}~--- the associated \FontName{tx} fonts have a -double integral symbol that doesn't need to be ``faked'' in the way -\Package{amsmath} does. In the case that you are loading several -symbol packages, every one of which defines the same symbol, you are -likely to experience the problem in a big way (\csx{euro} is a common -victim). - -There are similar cases where one package redefines another's command, -but no error occurs because the redefining package doesn't use -\csx{newcommand}. Often, in such a case, you only notice the change -because you assume the definition given by the first package. The -\Package{amsmath}--\Package{txfonts} packages are just such a pair; -\Package{txfonts} doesn't provoke errors. - -You may deal with the problem by saving and restoring the command. -Macro programmers may care to do this for themselves; for the rest of -us, there's the package \Package{savesym}. The sequence: -\begin{quote} -\begin{verbatim} -\usepackage{savesym} -\usepackage{amsmath} -\savesymbol{iint} -\usepackage{txfonts} -\restoresymbol{TXF}{iint} -\end{verbatim} -\end{quote} -does the job; restoring the \Package{amsmath} version of the command, -and making the \Package{txfonts} version of the command available as -\csx{TXFiint}. - -Documentation of \Package{savesym} doesn't amount to much: the only -commands are \csx{savesymbol} and \csx{restoresymbol}, as noted above. -\begin{ctanrefs} -\item[amsmath.sty]Part of \CTANref{amslatex} -\item[savesym.sty]\CTANref{savesym} -\item[txfonts.sty]Part of \CTANref{txfonts} -\end{ctanrefs} - -\Question[Q-zerochap]{Why are my sections numbered 0.1\,\dots{}?} - -This happens when your document is using the standard \Class{book} or -\Class{report} class (or one similar), and you've got a \csx{section} -before your first \csx{chapter}. - -What happens is, that the class numbers sections as % ! line break -``\meta{chapter no}.\meta{section no}'', and until the first -\csx{chapter} has appeared, the chapter number is 0. (If you -use\csx{chapter*}, which doesn't number the chapter it produces, the -problem still arises.) - -If you're doing this, it's possible that the \Class{article} class -is for you; try it and see. Otherwise, put a \csx{chapter} before -your sections, or do away with section numbering by using -\csx{section*} instead. An alternative way of avoiding numbering is -discussed in % ! line break -``\Qref*{unnumbered sections in the table of contents}{Q-secnumdep}''. - -\Question[Q-breaklinks]{Link text doesn't break at end line} -\keywords{hyperref overfull link} - -When using the \Package{hyperref} package, you make a block of text -``active'' when you define a hyper-link (when the user clicks on -that text, the reader program will divert to the \emph{target} of the -link). - -The \Package{hyperref} package uses a \emph{driver} (in the same way -as the \Package{graphics} package does), to determine how to implement -all that hyper-stuff. - -If you use the driver for \ProgName{dvips} output (presumably you want -to distill the resulting \PS{}), limitations in the way \ProgName{dvips} -deals with the \csx{special} commands mean that \Package{hyperref} -must prevent link anchors from breaking at the end of lines. Other -drivers (notably those for \PDFTeX{} and for \ProgName{dvipdfm}) don't -suffer from this problem. - -The problem may occur in a number of different circumstances. For a -couple of them, there are work-arounds: - -First, if you have an \acro{URL} which is active (so that clicking on -it will activate your web browser to ``go to'' the \acro{URL}). In -this case \Package{hyperref} employs the \Package{url} package to -split up the \acro{URL} (as described in % ! line break -\Qref[question]{typesetting \acro{URL}s}{Q-setURL}), but the -\ProgName{dvips} driver then suppresses the breaks. The way out is -the \Package{breakurl} package, which modifies the \csx{url} command -to produce several smaller pieces, between each of which a line break -is permitted. Each group of pieces, that ends up together in one -line, is converted to a single clickable link. - -Second, if you have a table of contents, list of figure or tables, or -the like, \Package{hyperref} will ordinarily make the titles in the -table of contents, or captions in the lists, active. If the title or -caption is long, it will need to break within the table, but the -\ProgName{dvips} driver will prevent that. In this case, load -\Package{hyperref} with the option \pkgoption{linktocpage}, and only -the page number will be made active. - -Otherwise, if you have a lengthy piece of text that you want active, -you have at present no simple solution: you have to rewrite your text, -or to use a different \acro{PDF} generation mechanism. -\begin{ctanrefs} -\item[breakurl.sty]\CTANref{breakurl} -\end{ctanrefs} - -\Question[Q-wrongpn]{Page number is wrong at start of page} - -This is a long story, whose sources are deep inside the workings of -\TeX{} itself; it all derives from the \TeX{}'s striving to generate -the best possible output. - -The page number is conventionally stored in \csx{count0}; \LaTeX{} -users see this as the counter \texttt{page}, and may typeset its value -using \csx{thepage}. - -The number (that is to say, \csx{count0}) is only updated when \TeX{} -actually outputs a page. \TeX{} only even tries to do this when it -detects a hint that it may be a good thing to do. From \TeX{}'s point -of view, the end of a paragraph is a good time to consider outputting -a page; it will output a page if it has \emph{more} than a page's -worth of material to output. (Ensuring it always has something in -hand makes some optimisations possible.) As a result, \csx{count0} -(\csx{thepage}) is almost always wrong in the first paragraph of a -page (the exception is where the page number has been ``forcibly'' -changed, either by changing its value directly, or by breaking the -page where \TeX{} wouldn't necessarily have chosen to break). - -\LaTeX{} provides a safe way of referring to the page number, by using -label references. So, rather than writing: -\begin{quote} -\begin{verbatim} -Here is page \thepage{}. -\end{verbatim} -\end{quote} -you should write: -\begin{quote} -\begin{verbatim} -Here is page \pageref{here}\label{here}. -\end{verbatim} -\end{quote} -(note: no space between the \csx{pageref} and the \csx{label}, since -that could potentially end up as a page-break space itself, which -rather defeats the purpose of the exercise!). - -\Question[Q-matchbrak]{My brackets don't match} - -\AllTeX{} has a low-level mechanism for matching braces in document -text. This means you can type something like: -\begin{quote} -\begin{verbatim} -\section{All \emph{OK} now.} -\end{verbatim} -\end{quote} -and know that the first brace (for the argument of \csx{section}) will -be matched with the last brace, and the internal pair of braces (for -the argument of \csx{emph}) will be matched with each other. It's all -very simple. - -However, \LaTeX{} has a convention of enclosing optional arguments in -brackets, as in: -\begin{quote} -\begin{verbatim} -\section[OK]{All \emph{OK} now.} -\end{verbatim} -\end{quote} -These brackets are not matched by \TeX{} mechanisms, despite the -superficial similarity of their use. As a result, -straightforward-looking usages like: -\begin{quote} -\begin{verbatim} -\section[All [OK] now]{All \emph{OK} now.} -\end{verbatim} -\end{quote} -aren't \acro{OK} at all~--- the optional argument comes to consist of -``All [OK'', and \csx{section} takes the single character ``n'' (of -the first ``now'') as its argument. - -Fortunately, \TeX{}'s scanning mechanisms helps us by accepting the -syntax ``\texttt{\{]\}}'' to `hide' the closing bracket from the -scanning mechanism that \LaTeX{} uses. In practice, the commonest way -to use this facility is: -\begin{quote} -\begin{verbatim} -\section[All {[OK]} now]{All \emph{OK} now.} -\end{verbatim} -\end{quote} -since bracing the bracket on its own ``looks odd''. - -\LaTeX{} has another argument syntax, even less regular, where the -argument is enclosed in parentheses, as in: -\begin{quote} -\begin{verbatim} -\put(1,2){foo} -\end{verbatim} -\end{quote} -(a picture environment command). - -This mechanism is also prone to problems with matching closing -parentheses, but the issue seldom arises since such arguments rarely -contain text. If it were to arise, the same solution (enclosing the -confused characters in braces) would solve the problem. - -\Question[Q-pdf-fig-chars]{Characters disappear from figures in \PDFTeX{}} - -You have a \acro{PDF} figure, which you want to use in your -\PDFLaTeX{} document. When you compile the document, \PDFTeX{} -complains about ``missing glyphs'', and some (or all) of the labelling -text or symbols in the original figure is no longer visible. - -What has happened is: -\begin{enumerate} -\item Your figure file (say \File{fig.pdf}) has a font \File{font.pfb} - embedded in it. -\item \PDFTeX{} notes that it has \File{font.pfb} on disc, and loads - that in place of the copy in \File{fig.pdf}. -\item It turns out that the copy in \File{fig.pdf} has glyphs that - aren't in \File{font.pfb} on disc, so that you get errors while - compiling and you see that characters are missing when you view the - output. (\PDFTeX{} can't know that the fonts are different, since - they have the same name.) -\end{enumerate} -Which is all very undesirable. - -\PDFTeX{} does this to keep file sizes down: suppose you have a -document that loads figures \File{fig1.pdf} and \File{fig2.pdf}; both -of those use font \File{font.pfb}. If \PDFTeX{} takes no action, -there will be \emph{two} copies of \File{font.pfb} in the output. -(If your document also uses the font, there could be three copies.) - -A real case is the \acro{URW} font \File{NimbusRomNo9L-Regu} (a clone -of Times Roman), which is available in a version with Cyrillic -letters, while the version in \TeX{} distributions doesn't have those -letters. Both versions, as distributed, have the same name. - -The simple (``quick and dirty'') solution is to add the command -\begin{quote} - \csx{pdfinclusioncopyfonts}\texttt{=1} -\end{quote} -to the preamble of your document. - -The ``real'' solution is that one or other font should be renamed. In -either case, this would require that you reconfigure some program's -(\TeX{}'s or your drawing package's) font tables~--- inevitably a -tiresome job. - -\Question[Q-emptynum]{I asked for ``empty'', but the page is numbered} - -If you use \cmdinvoke{pagestyle}{empty} and you find some pages are -numbered anyway, you are probably encountering one of the style -decisions built into the standard \LaTeX{} classes: that certain -special pages should always appear with \cmdinvoke{pagestyle}{plain}, -with a page number at the centre of the page foot. The special pages -in question are those (in \Class{article} class) containing a -\csx{maketitle}, or (in \Class{book} and \Class{report} classes) -\csx{chapter} or \csx{part} commands. - -The simple solution is to reissue the page style \emph{after} the -command, with effect for a single page, as, for example (in -\Class{article}): -\begin{quote} -\begin{verbatim} -\maketitle -\thispagestyle{empty} -\end{verbatim} -\end{quote} -or (in \Class{book} or \Class{report}) -\begin{quote} -\begin{verbatim} -\chapter{foo bar} -\thispagestyle{empty} -\end{verbatim} -\end{quote} -A similar technique doesn't work for a \Class{book} or \Class{report} -\csx{part} command pages. For that, and for other detail, take look -at ``\Qref*{getting rid of page numbers}{Q-nopageno}''. - -\subsection{Common misunderstandings} - -\Question[Q-include]{What's going on in my \csx{include} commands?} - -The original \LaTeX{} provided the \csx{include} command to address the -problem of long documents: with the relatively slow computers of the -time, the companion \csx{includeonly} facility was a boon. With the -vast increase in computer speed, \csx{includeonly} is less valuable -(though it still has its place in some very large projects). -Nevertheless, the facility is retained in current \LaTeX{}, and causes -some confusion to those who misunderstand it. - -In order for \csx{includeonly} to work, \csx{include} makes a separate -\extension{aux} file for each included file, and makes a `checkpoint' of -important parameters (such as page, figure, table and footnote -numbers). As a direct result, it \emph{must} clear the current page -both before and after the \csx{include} command. (The requirement -derives from the difficulties of % ! line break -\begin{hyperversion} - \Qref*{observing page numbers}{Q-wrongpn}.) -\end{hyperversion} -\begin{flatversion} - observing page numbers~--- see \Qref{}{Q-wrongpn}.) -\end{flatversion} -What's more, this mechanism doesn't work if a \csx{include} command -appears in a file that was \csx{include}d itself: \LaTeX{} diagnoses -this as an error. - -So, we can now answer the two commonest questions about \csx{include}: -\begin{itemize} -\item Why does \LaTeX{} throw a page before and after \csx{include} - commands? - - Answer: because it has to. If you don't like it, replace the - \csx{include} command with \csx{input}~--- you won't be able to use - \csx{includeonly} any more, but you probably don't need it anyway, so - don't worry. -\begin{htmlversion} - -\end{htmlversion} -\item Why can't I nest \csx{include}d files?~--- I always used to be - able to under \LaTeXo{}. - - Answer: in fact, you couldn't, even under \LaTeXo{}, but the failure - wasn't diagnosed. However, since you were happy with the behaviour - under \LaTeXo{}, replace the \csx{include} commands with \csx{input} - commands (with \csx{clearpage} as appropriate). -\end{itemize} - - -\Question[Q-paraparam]{Why does it ignore paragraph parameters?} - -When \TeX{} is laying out text, it doesn't work from word to word, or -from line to line; the smallest complete unit it formats is the -paragraph. The paragraph is laid down in a buffer, as it appears, and -isn't touched further until the end-paragraph marker is processed. -It's at this point that the paragraph parameters have effect; and it's -because of this sequence that one often makes mistakes that lead to -the paragraph parameters not doing what one would have hoped (or -expected). - -Consider the following sequence of \LaTeX{}: -\begin{quote} -\begin{verbatim} -{\raggedright % declaration for ragged text -Here's text to be ranged left in our output, -but it's the only such paragraph, so we now -end the group.} - -Here's more that needn't be ragged... -\end{verbatim} -\end{quote} -\TeX{} will open a group, and impose the ragged-setting parameters within -that group; it will then save a couple of sentences of text and -close the group (thus restoring the previous value of the -parameters that \csx{raggedright} set). Then \TeX{} encounters a blank -line, which it knows to treat as a \csx{par} token, so it typesets the -two sentences; but because the enclosing group has now been closed, -the parameter settings have been lost, and the paragraph will be -typeset normally. - -The solution is simple: close the paragraph inside the group, so that -the setting parameters remain in place. An appropriate way of doing -that is to replace the last three lines above with: -\begin{quote} -\begin{verbatim} -end the group.\par} -Here's more that needn't be ragged... -\end{verbatim} -\end{quote} -In this way, the paragraph is completed while \csx{raggedright}'s -parameters are still in force within the enclosing group. - -Another alternative is to define an environment that does the -appropriate job for you. For the above example, \LaTeX{} already -defines an appropriate one: -\begin{quote} -\begin{verbatim} -\begin{flushleft} -Here's text to be ranged left... -\end{flushleft} -\end{verbatim} -\end{quote} - -In fact, there are a number of parameters for which \TeX{} only -maintains one value per paragraph. A tiresome one is the set of upper -case/lower case translations, which (oddly enough) constrains -hyphenation of mutilingual texts. Another that regularly creates -confusion is \Qref*{\csx{baselineskip}}{Q-baselinepar}. - -\Question[Q-casechange]{Case-changing oddities} - -\TeX{} provides two primitive commands \csx{uppercase} and -\csx{lowercase} to change the case of text; they're not much used, but -are capable creating confusion. - -The two commands do not expand the text that is their parameter~--- -the result of \cmdinvoke{uppercase}{abc} is `\texttt{ABC}', but -\cmdinvoke{uppercase}{\csx{abc}} is always `\csx{abc}', whatever the -meaning of \csx{abc}. The commands are simply interpreting a table of -equivalences between upper- and lowercase characters. -They have (for example) no mathematical sense, and -\begin{quote} -\begin{verbatim} -\uppercase{About $y=f(x)$} -\end{verbatim} -\end{quote} -will produce -\begin{quote} -\begin{verbatim} -ABOUT $Y=F(X)$ -\end{verbatim} -\end{quote} -which is probably not what is wanted. - -In addition, \csx{uppercase} and \csx{lowercase} do not deal very well -with non-American characters, for example -\cmdinvoke{uppercase}{\csx{ae}} is the same as \csx{ae}. - -\LaTeX{} provides commands \csx{MakeUppercase} and \csx{MakeLowercase} -which fixes the latter problem. These commands are used in the -standard classes to produce upper case running heads for chapters -and sections. - -Unfortunately \csx{MakeUppercase} and \csx{MakeLowercase} do not solve -the other problems with \csx{uppercase}, so for example a section -title containing \cmdinvoke{begin}{tabular} \dots{} -\cmdinvoke{end}{tabular} will produce a running head containing -\cmdinvoke{begin}{TABULAR}. The simplest solution to this problem is -using a user-defined command, for example: -\begin{quote} -\begin{verbatim} -\newcommand{\mytable}{\begin{tabular}... - \end{tabular}} -\section{A section title \protect\mytable{} - with a table} -\end{verbatim} -\end{quote} -Note that \csx{mytable} has to be protected, otherwise it will be -expanded and made upper case; you can achieve the same result by -declaring it with \csx{DeclareRobustCommand}, in which case the -\csx{protect} won't be necessary. - -David Carlisle's \Package{textcase} package -addresses many of these problems in a transparent way. It defines -commands \csx{MakeTextUppercase} and \csx{MakeTextLowercase} which do -upper- or lowercase, with the fancier features of the \LaTeX{} -standard \csx{Make*}-commands but without the problems -mentioned above. Load the package with -\cmdinvoke{usepackage}[overload]{textcase}, and it will redefine the \LaTeX{} -commands (\emph{not} the \TeX{} primitive commands \csx{uppercase} and -\csx{lowercase}), so that section headings and the like don't produce -broken page headings. -\begin{ctanrefs} -\item[textcase.sty]\CTANref{textcase} -\end{ctanrefs} - -\Question[Q-splitfoot]{Why does \LaTeX{} split footnotes across pages?} - -\LaTeX{} splits footnotes when it can think of nothing better to do. -Typically, when this happens, the footnote mark is at the bottom of -the page, and the complete footnote would overfill the page. \LaTeX{} -could try to salvage this problem by making the page short of both the -footnote and the line with the footnote mark, but its priorities told -it that splitting the footnote would be preferable. - -As always, the best solution is to change your text so that the -problem doesn't occur in the first place. Consider whether the text -that bears the footnote could move earlier in the current page, or on -to the next page. - -If this isn't possible, you might want to change \LaTeX{}'s perception -of its priorities: they're controlled by -\csx{interfootnotelinepenalty}~--- the larger it is, the less willing -\LaTeX{} is to split footnotes. - -Setting -\begin{quote} -\begin{verbatim} -\interfootnotelinepenalty=10000 -\end{verbatim} -\end{quote} -inhibits split footnotes altogether, which will cause `\texttt{Underfull} -\csx{vbox}' messages unless you also specify \csx{raggedbottom}. The -default value of the penalty is \texttt{100}, which is rather mild. - -An alternative technique is to juggle with the actual size of the -pages. \csx{enlargethispage} changes the size of the current page by -its argument (for example, you might say -\cmdinvoke{enlargethispage}{\csx{baselineskip}} to add a single line -to the page, but you can use any ordinary \TeX{} length such as -\texttt{15mm} or \texttt{-20pt} as argument). Reducing the size of -the current page could force the offending text to the next page; -increasing the size of the page may allow the footnote to be included -in its entirety. It may be necessary to change the size of more than -one page. - -The \Package{fnbreak} package detects (and generates warnings about) -split footnotes. -\begin{ctanrefs} -\item[fnbreak.sty]\CTANref{fnbreak} -\end{ctanrefs} - -\Question[Q-marginparside]{Getting \csx{marginpar} on the right side} - -In an ideal world, marginal notes would be in ``analogous'' places on -every page: notes on an even-side page would be in the left margin, -while those on an odd-side page would be in the right margin. A -moment's thought shows that a marginal note on the left needs to be -typeset differently from a marginal note on the right. The \LaTeX{} -\csx{marginpar} command therefore takes two arguments in a -\texttt{twoside} documents: % beware line break -\cmdinvoke*{marginpar}[left text]{right text}. \LaTeX{} uses the -``obvious'' test to -get the \csx{marginpar}s in the correct margin, but a booby-trap arises -because \TeX{} runs its page maker asynchronously. If a -\csx{marginpar} is processed while page \ensuremath{n} is being built, but -doesn't get used until page \ensuremath{n}+1, then the \csx{marginpar} will turn -up on the wrong side of the page. This is an instance of a general -problem: see -% beware line break -``\Qref*{finding if you're on an odd or an even page}{Q-oddpage}''. - -The solution to the problem is for \LaTeX{} to `remember' which side -of the page each \csx{marginpar} \emph{should} be on. The -\Package{mparhack} package does this, using label-like marks stored in -the \extension{aux} file; the \Class{memoir} class does likewise. -\begin{ctanrefs} -\item[memoir.cls]\CTANref{memoir} -\item[mparhack.sty]\CTANref{mparhack} -\end{ctanrefs} - -\Question[Q-misschar]{Where have my characters gone?} - -You've typed some apparently reasonable text and processed it, but the -result contains no sign of some of the characters you typed. A likely -reason is that the font you selected just doesn't have a -representation for the character in question. - -For example, if I type ``that will be \pounds{}44.00'' into an ordinary -\AllTeX{} document, or if I select the font \texttt{rsfs10} (which contains -uppercase letters only) and type pretty much anything, the \pounds{} -sign, or any lowercase letters or digits will not appear in the -output. There's no actual error message, either: you have to read the -log file, where you'll find cryptic little messages like -\begin{quote} -\begin{wideversion} -\begin{verbatim} -Missing character: There is no ^^a3 in font cmr10! -Missing character: There is no 3 in font rsfs10! -\end{verbatim} -\end{wideversion} -\begin{narrowversion} -\begin{verbatim} -Missing character: - There is no ^^a3 in font cmr10! -Missing character: - There is no 3 in font rsfs10! -\end{verbatim} -\end{narrowversion} -\end{quote} -(the former demonstrating my \TeX{}'s unwillingness to deal in characters -which have the eighth bit set, while the \texttt{rsfs10} example shows that -\TeX{} will log the actual character in error, if it thinks it's -possible). - -Somewhat more understandable are the diagnostics you may get from -\Package{dvips} when using the \acro{OT}1 and \acro{T}1 versions of -fonts that were supplied in Adobe standard encoding: -\begin{quote} -\begin{verbatim} -dvips: Warning: missing glyph `Delta' -\end{verbatim} -\end{quote} -The process that generates the metrics for using the fonts generates -an instruction to \Package{dvips} to produce these diagnostics, so -that their non-appearance in the printed output is less surprising -than it might be. Quite a few glyphs provided in Knuth's text -encodings and in the Cork encoding are not available in the Adobe -fonts. In these cases, there \emph{is} a typeset sign of the -character: \ProgName{dvips} produces a black rectangle of whatever -size the concocted font file has specified. - -\Question[Q-rerun]{``Rerun'' messages won't go away} - -The \LaTeX{} message ``Rerun to get crossreferences right'' is -supposed to warn the user that the job needs to be processed again, -since labels seem to have changed since the previous run. (\LaTeX{} -compares the labels it has created this time round with what it found -from the previous run when it started; it does this comparison at -\cmdinvoke{end}{document}.) - -Sometimes, the message won't go away: however often you reprocess your -document, \LaTeX{} still tells you that ``Label(s) may have -changed''. This can sometimes be caused by a broken package: both -\Package{footmisc} (with the \pkgoption{perpage} option) and \Package{hyperref} -have been known to give trouble, in the past: if you are using either, -check you have the latest version, and upgrade if possible. - -However, there \emph{is} a rare occasion when this error can happen -as a result of pathological structure of the document itself. Suppose -you have pages numbered in roman, and you add a reference to a label -on page ``ix'' (9). The presence of the reference pushes the thing -referred to onto page ``x'' (10), but since that's a shorter reference -the label moves back to page ``ix'' at the next run. Such a sequence -can obviously not terminate. - -The only solution to this problem is to make a small change to your -document (something as small as adding or deleting a comma will often -be enough). -\begin{ctanrefs} -\item[footmisc.sty]\CTANref{footmisc} -\item[hyperref.sty]\CTANref{hyperref} -\end{ctanrefs} - -\Question[Q-xspace]{Commands gobble following space} - -People are forever surprised that simple commands gobble the space -after them: this is just the way it is. The effect arises from the -way \TeX{} works, and Lamport describes a solution (place a pair of braces -after a command's invocation) in the description of \LaTeX{} syntax. -Thus the requirement is in effect part of the definition of \LaTeX{}. - -This \acro{FAQ}, -for example, is written with definitions that \emph{require} one to -type \cmdinvoke{fred}{\relax} % the \relax prevents {} being gobbled - % in html production (sigh) -for almost all macro invocations, regardless -of whether the following space is required: however, this \acro{FAQ} -is written by highly dedicated (and, some would say, eccentric) -people. Many users find all those braces become very tedious very -quickly, and would really rather not type them all. - -An alternative structure, that doesn't violate the design of \LaTeX{}, -is to say \csx{fred}\csx{ }~--- the \csx{ } command is ``self -terminating'' (like \texttt{\bsbs }) and you don't need braces after -\emph{it}. Thus one can reduce to one the extra characters one needs -to type. - -If even that one character is too many, the package \Package{xspace} -defines a command \csx{xspace} that guesses whether there should have -been a space after it, and if so introduces that space. So -% beware line wrap -``\texttt{fred\csx{xspace} jim}'' produces ``fred jim'', while -``\texttt{fred\csx{xspace}.\@ jim}'' produces ``fred. jim''. Which -usage would of course be completely pointless; but you can incorporate -\csx{xspace} in your own macros: -\begin{quote} -\begin{wideversion} -\begin{verbatim} -\usepackage{xspace} -... -\newcommand{\restenergy}{\ensuremath{mc^2}\xspace} -... -and we find \restenergy available to us... -\end{verbatim} -\end{wideversion} -\begin{narrowversion} -\begin{verbatim} -\usepackage{xspace} -... -\newcommand{\restenergy}% - {\ensuremath{mc^2}\xspace} -... -and we find \restenergy available to us... -\end{verbatim} -\end{narrowversion} -\end{quote} -The \csx{xspace} command must be the last thing in your macro -definition (as in the example); it's not completely foolproof, but it -copes with most obvious situations in running text. - -The \Package{xspace} package doesn't save you anything if you only use -a modified macro once or twice within your document. In any case, be -careful with usage of \csx{xspace}~--- it changes your input syntax, -which can be confusing, notably to a collaborating author -(particularly if you create some commands which use it and some which -don't). Of course, no command built into \LaTeX{} or into any -``standard'' class or package will use \csx{xspace}. -\begin{ctanrefs} -\item[xspace.sty]Distributed as part of \CTANref{2etools}[xspace] -\end{ctanrefs} - -\Question[Q-overfull]{\AllTeX{} makes overfull lines} - -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 -``\Qref*[question]{my words aren't being hyphenated}{Q-nohyph}'' -(and the questions it references) for advice. - -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 \emph{doesn't} 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. - -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 \emph{try} the \LaTeX{} -\csx{linebreak} 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. - -\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 \csx{pretolerance}, 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 \csx{tolerance} value. If this pass also fails, and -the internal \csx{emergencystretch} value is positive, \TeX{} will try -a pass that allows \csx{emergencystretch} worth of extra stretchability -to the spaces in each line. - -In principle, therefore, there are three parameters (other than -hyphenation) that you can change: \csx{pretolerance}, \csx{tolerance} -and \csx{emergencystretch}. Both the \texttt{tolerance} values are -simple numbers, and should be set by \TeX{} primitive count -assignment~--- for example -\begin{quote} -\begin{verbatim} -\pretolerance=150 -\end{verbatim} -\end{quote} -For both, an ``infinite'' tolerance is represented by the value -\texttt{10}\nothtml{\,}\texttt{000}, but infinite tolerance is rarely -appropriate, since it can lead to very bad line breaks indeed. - -\csx{emergencystretch} is a \TeX{}-internal `dimen' register, and can -be set as normal for dimens in \plaintex{}; in \LaTeX{}, use -\csx{setlength}~--- for example: -\begin{quote} -\begin{verbatim} -\setlength{\emergencystretch}{3em} -\end{verbatim} -\end{quote} - -The choice of method has time implications~--- each of the -passes takes time, so adding a pass (by changing -\csx{emergencystretch}) is less desirable than suppressing one (by -changing \csx{pretolerance}). However, it's unusual nowadays to find a -computer that's slow enough that the extra passes are really -troublesome. - -In practice, \csx{pretolerance} is rarely used other than to manipulate -the use of hyphenation; \plaintex{} and \LaTeX{} both set its value -to \texttt{100}. To suppress the first scan of paragraphs, set -\csx{pretolerance} to \texttt{-1}. - -\csx{tolerance} is often a good method for adjusting spacing; -\plaintex{} and \LaTeX{} both set its value to \texttt{200}. \LaTeX{}'s -\csx{sloppy} command sets it to \texttt{9999}, as does the -\environment{sloppypar} environment. This value is the largest -available, this side of infinity, and can allow pretty poor-looking -breaks (this author rarely uses \csx{sloppy} ``bare'', though he does -occasionally use \environment{sloppypar}~--- that way, the change of -\csx{tolerance} is confined to the environment). More satisfactory is -to make small changes to \csx{tolerance}, incrementally, and then to look to -see how the change affects the result; very small increases can often -do what's necessary. Remember that \csx{tolerance} is a paragraph -parameter, so you need to ensure it's actually applied~--- see -``\Qref*[question]{ignoring paragraph parameters}{Q-paraparam}''. -\LaTeX{} users could use an environment like: -\begin{quote} -\begin{verbatim} -\newenvironment{tolerant}[1]{% - \par\tolerance=#1\relax -}{% - \par -} -\end{verbatim} -\end{quote} -enclosing entire paragraphs (or set of paragraphs) in it. - -The value of \csx{emergencystretch} is added to the assumed -stretchability of each line of a paragraph, in a further run of the -paragraph formatter in case that the paragraph can't be made to look -right any other way. (The extra scan happens if -\csx{emergencystretch\textgreater0pt}~--- if it's zero or negative, no gain -could be had from rerunning the paragraph setter.) The example above -set it to \texttt{3em}; the Computer Modern fonts ordinarily fit three -space skips to the \texttt{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. It is therefore clear that \csx{emergencystretch} needs to be -treated with a degree of caution. - -More subtle (but more tricky to manage) are the microtypographic -extensions provided by \PDFTeX{}. Since \PDFTeX{} is the default -`engine' for \LaTeX{} and \CONTeXT{} work in all distributions, -nowadays, the extensions are available to all. There are two -extensions, margin kerning and font expansion; margin kerning only -affects the visual effect of the typeset page, and has little effect -on the ability of the paragraph setter to ``get things right''. -Font expansion works like a subtler version of the trick that -\csx{emergencystretch} plays: \PDFTeX{} `knows' that your current font -may be stretched (or shrunk) to a certain extent, and will do that -``on the fly'' to optimise the setting of a paragraph. This is a -powerful tool in the armoury of the typesetter. - -As mentioned above, the microtypographic extensions are tricky beasts -to control; however, the \Package{microtype} package relieves the user -of the tedious work of specifying how to perform margin adjustments -and how much to scale each font~\dots{}\@ for the fonts the package -knows about; it's a good tool, and users who can take on the -specification of adjustments for yet more fonts are always welcome. -\begin{ctanrefs} -\item[microtype.sty]\CTANref{microtype} -\end{ctanrefs} - -\Question[Q-exscale]{Maths symbols don't scale up} - -By default, the ``large'' maths symbols stay at the same size -regardless of the font size of the text of the document. There's good -reason for this: the \FontName{cmex} fonts aren't really designed to -scale, so that \TeX{}'s maths placement algorithms don't perform as -well as they might when the fonts are scaled. - -However, this behaviour confounds user expectations, and can lead to -slightly odd-looking documents. If you want the fonts to scale, -despite the warning above, use the \Package{exscale} package~--- just -loading it is enough. -%% -%% (Note: if you are using bitmap versions of the \FontName{cmex} fonts, -%% you will find extra bitmaps are generated. The extended sizes are not -%% ordinarily generated for any other purpose.) -\begin{ctanrefs} -\item[exscale.sty]Part of the \LaTeX{} distribution. -\end{ctanrefs} - -\Question[Q-linespread]{Why doesn't \csx{linespread} work?} - -The command \cmdinvoke*{linespread}{factor} is supposed to multiply -the current \csx{baselineskip} by \meta{factor}; but, to all -appearances, it doesn't. - -In fact, the command is equivalent to -\cmdinvoke{renewcommand}{\csx{baselinestretch}}{factor}: written that -way, it somehow feels less surprising that the effect isn't immediate. -The \csx{baselinestretch} factor is only used when a font is selected; -a mere change of \csx{baselinestretch} doesn't change the font, any -more than does the command -\cmdinvoke*{fontsize}{size}{baselineskip}~--- you have to follow -either command with \csx{selectfont}. So: -\begin{quote} -\begin{verbatim} -\fontsize{10}{12}% -\selectfont -\end{verbatim} -\end{quote} -or: -\begin{quote} -\begin{verbatim} -\linespread{1.2}% -\selectfont -\end{verbatim} -\end{quote} -Of course, a package such as \Package{setspace}, whose job is to -manage the baseline, will deal with all this stuff~--- see -``\Qref*[question]{managing double-spaced documents}{Q-linespace}''. If -you want to avoid \Package{setspace}, beware the behaviour of -linespread changes within a paragraph: read % ! line break -``\Qref*[question]{\csx{baselineskip} is a paragraph parameter}{Q-baselinepar}''. -\begin{ctanrefs} -\item[setspace.sty]\CTANref{setspace} -\end{ctanrefs} - -\Question[Q-baselinepar]{Only one \csx{baselineskip} per paragraph} - -The \csx{baselineskip}, which determines the space between lines, is -not (as one might hope) a property of a line, but of a paragraph. As -a result, in a \texttt{10pt} (nominal) document (with a default -\csx{baselineskip} of \texttt{12pt}), a single character with a larger -size, as: -\begin{quote} -\begin{verbatim} -{\Huge A} -\end{verbatim} -\end{quote} -will be squashed into the paragraph: \TeX{} will make sure it doesn't -scrape up against the line above, but won't give it ``room to -breathe'', as it does the text at standard size; that is, its size -(\texttt{24.88pt}) is taken account of, but its \csx{baselineskip} -(\texttt{30pt}) isn't. This problem may be solved by a \emph{strut}: -the name comes from movable metal typography, and refers to a spacer -that held the boxes (that contained the metal character shapes) apart. -Every time you change font size, \LaTeX{} redefines the command -\csx{strut} to provide the equivalent of a metal-type strut for the -size chosen. So for the example above, we would type -\begin{quote} -\begin{verbatim} -Paragraph text ... - {\Huge A\strut} - ... paragraph continues ... -\end{verbatim} -\end{quote} -This technique \emph{only} works for such very short intrusions; if -you need several lines, you should convert your intrusion into a -\environment{quote} environment, since it's not possible to provide a -\csx{strut} command for every line of the intrusion, in a sensible -way, so proceed by: -\begin{quote} -\begin{verbatim} -\begin{quote} - \Huge A LENGTHY TEXT ... - SHOUTING AT THE READER! -\end{quote} -\end{verbatim} -\end{quote} - -The contrary case: -\begin{quote} -\begin{verbatim} -Paragraph text ... -{\footnotesize Extended interjection ... - ... into the paragraph.} - ... paragraph continues ... -\end{verbatim} -\end{quote} -will look wrong, since the \texttt{8pt} interjection will -end up set on the \texttt{12pt} \csx{baselineskip} of the paragraph, -rather than its preferred \texttt{8.5pt}. A \csx{strut} here is no -help: there is no such thing as a ``negative strut'', that draws lines -together, so once more, one falls back on the \environment{quote} to -separate the interjection: -\begin{quote} -\begin{verbatim} -Paragraph text ... -\begin{quote} - \footnotesize Extended interjection ... - ... into the paragraph. -\end{quote} -... paragraph continues ... -\end{verbatim} -\end{quote} - -The same effect is at work when we have something like: -\begin{quote} -\begin{verbatim} -Paragraph text ... - ... paragraph body ends. -{\footnotesize Comment on the paragraph.} - -Next paragraph starts... -\end{verbatim} -\end{quote} -which will set the body of the first paragraph on the constricted -\csx{baselineskip} of the \csx{footnotesize} comment. Solve this -problem by ending the initial paragraph before starting the comment: -\begin{quote} -\begin{verbatim} -Paragraph text ... - ... paragraph body ends. -\par\noindent -{\footnotesize Comment on the paragraph.} - -Next paragraph starts... -\end{verbatim} -\end{quote} -(We suggest \csx{noindent} to make the comment look as if it is part -of the paragraph it discusses; omit \csx{noindent} if that is inappropriate.) - -A variation of the previous issue arises from a paragraph whose size -is different from those around it: -\begin{quote} -\begin{verbatim} -{\Large (Extended) IMPORTANT DETAILS ...} - -Main body of text... -\end{verbatim} -\end{quote} -Again, the problem is solved by ending the paragraph in the same group -as the text with a different size: -\begin{quote} -\begin{verbatim} -{\Large (Extended) IMPORTANT DETAILS ...\par} - -Main body of text... -\end{verbatim} -\end{quote} - -\Question[Q-tocloftwrong]{Numbers too large in table of contents, etc.} - -\LaTeX{} constructs the table of contents, list of figures, tables, -and similar tables, on the basis of a layout specified in the class. -As a result, they do \emph{not} react to the sizes of things in them, -as they would if a \environment{tabular} environment (or something -similar) was used. - -This arrangement can provoke problems, most commonly with deep section -nesting or very large page numbers: the numbers in question just don't -fit in the space allowed for them in the class. - -A separate answer discusses % ! line break -\nothtml{re-designing the tables ---} % ! line break -\Qref{re-designing the tables}{Q-tocloft}\nothtml{ ---} -and those techniques can be employed to make the numbers fit. - -\Question[Q-gutter]{Why is the inside margin so narrow?} - -If you give the standard classes the \pkgoption{twoside} option, the -class sets the margins narrow on the left of odd-numbered pages, and -on the right of even-numbered pages. This is often thought to look -odd, but it is quite right. - -The idea is that the typographic urge for symmetry should also apply -to margins: if you lay an even numbered page to the left of an -odd-numbered one, you will see that you've three equal chunks of -un-printed paper: the left margin of the even page, the right margin -of the odd page, and the two abutting margins together. - -This is all very fine in the abstract, but in practical book(let) -production it only works ``sometimes''. - -If your booklet is produced on double-width paper and stapled, the -effect will be good; if your book(let) is produced using a so-called -``perfect'' binding, the effect will again be good. - -However, almost any ``quality'' book-binder will need some of your -paper to grab hold of, and a book bound in such a way won't exhibit -the treasured symmetry unless you've done something about the margin -settings. - -The packages recommended in % ! line break -``\Qref*{setting up margins}{Q-marginpkgs}'' mostly have provision for -a ``binding offset'' or a ``binding correction''~--- search for -``binding'' in the manuals (\Package{vmargin} doesn't help, here). - -If you're doing the job by hand (see % ! line break -\Qref[question]{manual margin setup}{Q-marginmanual}), the trick is to -calculate your page and margin dimensions as normal, and then: -\begin{itemize} -\item subtract the binding offset from \csx{evensidemargin}, and -\item add the binding offset to \csx{oddsidemargin}. -\end{itemize} -which can be achieved by: -\begin{quote} -\begin{verbatim} -\addtolength{\evensidemargin}{-offset} -\addtolength{\oddsidemargin}{offset} -\end{verbatim} -\end{quote} -(substituting something sensible like ``\texttt{5mm}'' for -``\texttt{offset}'', above). - -The above may not be the best you can do: you may well choose to -change the \csx{textwidth} in the presence of the binding offset; but -the changes do work for constant \csx{textwidth}. - -\subsection{Why shouldn't I?} - -\Question[Q-t1enc]{Why use \Package{fontenc} rather than \Package{t1enc}?} - -In the very earliest days of \LaTeXe{}, the only way to use the -\acro{T}1 encoding was \Package{t1enc}; with the summer 1994 -``production'' release, the \Package{fontenc} package appeared, and -provided comprehensive support for use of the encoding. - -Nevertheless, the \Package{t1enc} package remains (as part of the -\LaTeXo{} compatibility code), but it does very little: it merely -selects font encoding \acro{T}1, and leaves to the user the business -of generating the character codes required. - -Generating such character codes could be a simple matter, \emph{if} -the \acro{T}1 encoding matched any widely-supported encoding standard, -since in that case, one might expect one's keyboard to generate the -character codes. However, the \acro{T}1 encoding is a mix of several -standard encodings, and includes code points in areas of the table -which standard encodings specifically exclude, so no \acro{T}1 -keyboards have been (or ever will be) manufactured. - -By contrast, the \Package{fontenc} package generates the \acro{T}1 -code points from ordinary \LaTeX{} commands (e.g., it generates the -\texttt{\'e} character codepoint from the command \csx{'}\texttt{e}). -So, unless you have program-generated \acro{T}1 input (which is almost -inconceivable), use \cmdinvoke{usepackage}[T1]{fontenc} rather than -\cmdinvoke{usepackage}{t1enc}. - -\Question[Q-why-inp-font]{Why bother with \Package{inputenc} and \Package{fontenc}?} - -The standard input encoding for Western Europe (pending the arrival of -Unicode) is \acro{ISO}~8859--1 (commonly known by the standard's -subtitle `Latin-1'). Latin-1 is remarkably close, in the codepoints -it covers, to the \AllTeX{} \acro{T}1 encoding. - -In this circumstance, why should one bother with \Package{inputenc} -and \Package{fontenc}? Since they're pretty exactly mirroring each -other, one could do away with both, and use just \Package{t1enc}, -despite its \Qref*{shortcomings}{Q-t1enc}. - -One doesn't do this for a variety of small reasons: -\begin{description} -\item[Confusion] You've been happily working in this mode, and for - some reason find you're to switch to writing in German: the effect - of using ``\texttt{\ss }'' is somewhat startling, since \acro{T}1 - and Latin-1 treat the codepoint differently. -\item[Compatibility] You find yourself needing to work with a - colleague in Eastern Europe: their keyboard is likely to be set to - produce Latin-2, so that the simple mapping doesn't work. -\item[Traditional \LaTeX{}] You lapse and write something like - \cmdinvoke{'}{e} rather than typing \texttt{\'e}; only \Package{fontenc} - has the means to convert this \LaTeX{} sequence into the \acro{T}1 - character, so an \csx{accent} primitive slips through into the - output, and hyphenation is in danger. -\end{description} -The \Package{inputenc}--\Package{fontenc} combination seems slow and -cumbersome, but it's safe. - -\Question[Q-eqnarray]{Why not use \environment{eqnarray}?} - -The environment \environment{eqnarray} is attractive for the -occasional user of mathematics in \LaTeX{} documents: it seems to -allow aligned systems of equations. Indeed it \emph{does} supply such -things, but it makes a serious mess of spacing. In the system: -\begin{quote} -\begin{verbatim} -\begin{eqnarray} - a & = & b + c \\ - x & = & y - z -\end{eqnarray} -\end{verbatim} -\end{quote} -the spacing around the ``='' signs is \emph{not} that defined in the -metrics for the font from which the glyph comes~--- it's -\csx{arraycolsep}, which may be set to some very odd value for reasons -associated with real arrays elsewhere in the document. - -The user is far better served by the \AMSLaTeX{} bundle, which -provides an \environment{align} environment, which is designed with -the needs of mathematicians in mind (as opposed to the convenience of -\LaTeX{} programmers). For this simple case (\environment{align} and -other \AMSLaTeX{} alignment environments are capable of far greater -things), code as: -\begin{quote} -\begin{verbatim} -\begin{align} - a & = b + c \\ - x & = y - z -\end{align} -\end{verbatim} -\end{quote} -The matter is discussed in more detail in a % ! line break -\href{http://tug.org/pracjourn/2006-4/madsen/madsen.pdf}{Prac\TeX{} journal paper} -by Lars Madsen; Stefan Kottwitz offers a % ! line break -\href{http://texblog.net/latex-archive/maths/eqnarray-align-environment/}{\tex{} blog entry} -which includes screen shots of the output, convincingly demonstrating -the problem. -\begin{ctanrefs} -\item[AMSLaTeX]\CTANref{amslatex} -\end{ctanrefs} - -\Question[Q-dolldoll]{Why use \csx{[}\,\dots{}\csx{]} in place of \texttt{\$\$}\,\dots{}\texttt{\$\$}?} - -\LaTeX{} defines inline- and display-maths commands, apparently -duplicating those that derive from the \TeX{} primitive maths -sequences, that maths commands with single (or pairs of) dollar signs. - -As it turns out, \LaTeX{}'s inline maths grouping, % !line break -\csx{(}\texttt{ ... }\csx{)}, has precisely the same effect as the -\TeX{} primitive version \texttt{\$ ... \$}. (Except that -the \LaTeX{} version checks to ensure you don't put \csx{(} and -\csx{)} the wrong way round; this does occasionally detect errors\dots{}.) - -Since this is the case, one often finds \LaTeX{} users, who have some -experience of using \plaintex{}, merely assuming that \LaTeX{}'s -display maths grouping \csx{[}\texttt{ ... }\csx{]} may be replaced by -the \TeX{} primitive display maths \texttt{\$\$ ... \$\$}. Some -people ``go the whole hog'' and use \cmdinvoke{begin}{displaymath} -\dots{} \cmdinvoke{end}{displaymath} (which ``looks nicer'', in some -sense, and actually \emph{describes} what's being done. - -Unfortunately, they are wrong: if \LaTeX{} code is going to patch display -maths, it can only do so by patching \csx{[} and \csx{]}. The most -obvious way this turns up, is that the class option \pkgoption{fleqn} -simply does not work for equations coded using % ! line break -\texttt{\$\$ ... \$\$}, whether you're using the standard classes -alone, or using package \Package{amsmath}. Also, the \csx{[} and -\csx{]} construct has code for rationalising vertical spacing in some extreme -cases; that code is not provided \texttt{\$\$ ... \$\$}, so if you -use the non-standard version, you may occasionally observe -inconsistent vertical spacing. Similar behaviour can bite if you are -writing a \emph{proof}; placing the ``\acro{QED} symbol'' doesn't work -if it is in \texttt{\$\$}-displayed maths. - -There are more subtle effects (especially with package -\Package{amsmath}), and the simple rule is ``use % ! line break -\csx{[}\texttt{ ... }\csx{]} (at least) whenever displayed maths is -needed in \LaTeX{}''. -\LastEdit{2013-02-20} - -\Question[Q-2letterfontcmd]{What's wrong with \csx{bf}, \csx{it}, etc.?} - -The font-selection commands of \LaTeXo{} were \csx{rm}, \csx{sf}, -\csx{tt}, \csx{it}, \csx{sl}, \csx{em} and \csx{bf}; they were modal -commands, so you used them as: -\begin{quote} -\begin{verbatim} -{\bf Fred} was {\it here\/}}. -\end{verbatim} -\end{quote} -with the font change enclosed in a group, so as to limit its effect; -note the italic correction command \csx{/} that was necessary at the -end of a section in italics. - -At the release of \LaTeXe{} in summer 1994, these simple commands were -deprecated, but recognising that their use is deeply embedded in the -brains of \LaTeX{} users, the commands themselves remain in \LaTeX{}, -\emph{with their \LaTeXo{} semantics}. Those semantics were part of -the reason they were deprecated: each \csx{\emph{xx}} overrides -any other font settings, keeping only the size. So, for example, -\begin{quote} -\begin{verbatim} -{\bf\it Here we are again\/} -\end{verbatim} -\end{quote} -ignores \csx{bf} and produces text in italic, medium weight (and the -italic correction has a real effect), whereas -\begin{quote} -\begin{verbatim} -{\it\bf happy as can be\/} -\end{verbatim} -\end{quote} -ignores \csx{it} and produces upright text at bold weight (and the -italic correction has nothing to do). The same holds if you mix -\LaTeXe{} font selections with the old style commands: -\begin{quote} -\begin{verbatim} -\textbf{\tt all good friends} -\end{verbatim} -\end{quote} -ignores the \csx{textbf} that encloses the text, and produces -typewriter text at medium weight. - -So why are these commands deprecated?~--- it is because of confusions -such as that in the last example. The alternative (\LaTeXe{}) -commands are discussed in the rest of this answer. - -\LaTeXe{}'s font commands come in two forms: modal commands and -text-block commands. The default set of modal commands offers weights -\csx{mdseries} and \csx{bfseries}, shapes \csx{upshape}, -\csx{itshape}, \csx{scshape} and \csx{slshape}, and families -\csx{rmfamily}, \csx{sffamily} and \csx{ttfamily}. A font selection -requires a family, a shape and a series (as well as a size, of -course). A few examples -\begin{quote} -\begin{narrowversion} -\begin{verbatim} -{\bfseries\ttfamily - and jolly good company!} -\end{verbatim} -\end{narrowversion} -\begin{wideversion} -\begin{verbatim} -{\bfseries\ttfamily and jolly good company!} -\end{verbatim} -\end{wideversion} -\end{quote} -produces bold typewriter text (but note the lack of a % ! line break, big time -\begin{narrowversion} % non hyper version - bold typewriter font~--- \Qref{}{Q-bold-extras}~--- -\end{narrowversion} -\begin{wideversion} - \Qref{bold typewriter font}{Q-bold-extras} -\end{wideversion} -in the default Computer Modern fonts), or -\begin{quote} -\begin{narrowversion} -\begin{verbatim} -{\slshape\sffamily - Never mind the weather\/} -\end{verbatim} -\end{narrowversion} -\begin{wideversion} -\begin{verbatim} -{\slshape\sffamily Never mind the weather\/} -\end{verbatim} -\end{wideversion} -\end{quote} -(note the italic correction needed on slanted fonts, too). - -\LaTeXe{}'s text block commands take the first two letters of the -modal commands, and form a \csx{text}\emph{\texttt{xx}} command from -them. Thus \csx{bfseries} becomes \cmdinvoke*{textbf}{text}, -\csx{itshape} becomes \cmdinvoke*{textit}{text}, and \csx{ttfamily} -becomes \cmdinvoke*{texttt}{text}. Block commands may be nested, as: -\begin{quote} -\begin{verbatim} -\textit{\textbf{Never mind the rain}} -\end{verbatim} -\end{quote} -to produce bold italic text (note that the block commands supply -italic corrections where necessary), and they be nested with the -\LaTeXe{} modal commands, too: -\begin{quote} -\begin{narrowversion} -\begin{verbatim} -\texttt{\bfseries - So long as we're together} -\end{verbatim} -\end{narrowversion} -\begin{wideversion} -\begin{verbatim} -\texttt{\bfseries So long as we're together} -\end{verbatim} -\end{wideversion} -\end{quote} -for bold typewriter, or -\begin{quote} -\begin{narrowversion} -\begin{verbatim} -{\slshape\textbf{% - Whoops! she goes again}\/} -\end{verbatim} -\end{narrowversion} -\begin{wideversion} -\begin{verbatim} -{\slshape \textbf{Whoops! she goes again}\/} -\end{verbatim} -\end{wideversion} -\end{quote} -for a bold slanted instance of the current family (note the italic -correction applied at the end of the modal command group, again). - -The new commands (as noted above) override commands of the same type. -In almost all cases, this merely excludes ludicrous ideas such as -``upright slanted'' fonts, or ``teletype roman'' fonts. There are a -couple of immediate oddities, though. The first is the conflict -between \csx{itshape} (or \csx{slshape}) and \csx{scshape}: while many -claim that an italic small-caps font is typographically unsound, such -fonts do exist. Daniel Taupin's \Package{smallcap} package enables -use of the instances in the \Qref*{\acro{EC} fonts}{Q-ECfonts}, and -similar techniques could be brought to bear on many other font sets. -The second is the conflict between \csx{upshape} and \csx{itshape}: -Knuth actually offers an upright-italic font which \LaTeX{} uses for -the ``\pounds{}'' symbol in the default font set. The combination is -sufficiently weird that, while there's a defined font shape, no -default \LaTeX{} commands exist; to use the shape, the (eccentric) user -needs \LaTeX{}'s simplest font selection commands: -\begin{quote} -\begin{narrowversion} -\begin{verbatim} -{\fontshape{ui}\selectfont - Tra la la, di dee} -\end{verbatim} -\end{narrowversion} -\begin{wideversion} -\begin{verbatim} -{\fontshape{ui}\selectfont Tra la la, di dee} -\end{verbatim} -\end{wideversion} -\end{quote} -\begin{ctanrefs} -\item[smallcap.sty]\CTANref{smallcap} -\end{ctanrefs} - -\Question[Q-newfont*]{What's wrong with \csx{newfont}?} - -If all else fails, you \emph{can} specify a font using the \LaTeX{} -\csx{newfont} command. The font so specified doesn't fit into the -\LaTeX{} font selection mechanism, but the technique can be tempting -under several circumstances. The command is merely the thinnest of -wrappers around the \csx{font} primitive, and doesn't really fit with -\LaTeX{} at all. A simple, but really rather funny, example of the -problems it poses, may be seen in: -\begin{quote} -\begin{verbatim} -\documentclass[10pt]{article} -\begin{document} -\newfont{\myfont}{cmr17 scaled 2000} -\myfont -\LaTeX -\end{document} -\end{verbatim} -\end{quote} -(the reader is encouraged to try this). The ``A'' of \csx{LaTeX} pretty -much disappears: \LaTeX{} chooses the size on the ``A'' according to -\emph{its} idea of the font size (10pt), but positions it according to -the dimensions of ``\csx{myfont}'', which is more than three times -that size. - -Another ``\csx{myfont}'' example arises from an entirely different -source. The mini-document: -\begin{quote} -\begin{verbatim} -\documentclass{article} -\begin{document} -\newfont{\myfont}{ecrm1000} -{\myfont voil\`a} -\end{document} -\end{verbatim} -\end{quote} -gives you ``German low double quotes'' (under the ``a'') in place of -the grave accent. This happens because \FontName{ecrm1000} is in a -different \Qref*{font encoding}{Q-whatenc} than \LaTeX{} is -expecting~--- if you use the \LaTeX{} \Package{fontenc} package to -select the \acro{EC} fonts, all these tiresome encoding issues are -solved for you, behind the scenes. - -There does however remain a circumstance when you will be tempted to -use \csx{newfont}~--- viz., to get a font size that doesn't fall into -the Knuth standard set of sizes: \LaTeX{} (by default) won't allow you -to use such a size. Don't despair: see the answer % ! line break -``\Qref*{arbitrary font sizes}{Q-fontsize}''. - - |