1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
%$PDFLaTeX (encoding:utf-8)
\documentclass{article}
\author{Javier Bezos}
\title{\textsf{babeltools}\\%
\Large Fixing (some) \textsf{babel} annoyances}
\begin{document}
\maketitle
(Beta.)
The \textsf{babel} package introduces some changes in the \LaTeX{}
kernel which are not strictly necessary (perhaps just convenient), but
have some unwanted side-effects. Oddly enough, most of these changes
cannot be disabled, with a few exceptions (eg, \texttt{activeacute}
and \texttt{activegrave}, but note there are not \texttt{activecaret}
or \texttt{activetilde}).
With \textsf{babeltools} you can modify the \textsf{babel} behaviour
by means of a set of package options, with a few macros serving as
tools for specific purposes. This package must be loaded
\textbf{before} \textsf{babel}.
\section{Package options}
\begin{description}
\item[shorthands=off] The shorthands mechanism is turned off.
As some languages use this mechanism for tools not availible
otherwise, a macro \verb|\babelshorthand| is defined, which allows
using them; see below.
\item[shortands=...] The shorthands mechanism is on, but the only
shorthands activated are those given, like, eg:
\begin{verbatim}
\usepackage[shorthands=:;!?]{babeltools}
\end{verbatim}
If \verb|'| is included, \texttt{activeacute} is passed to
\textsf{babel}; if \verb|`| is included, \texttt{activegrave} is
passed. Active characters (like \verb|~|) should be preceded by
\verb|\string| (otherwise they will be expanded by \LaTeX{} before
they are passed to the package and therefore they will not be
recognized).
\item[adaptive] By default, all \textsf{babel} shorthands are active
and live from start to end of documents. You can deactivate them by
hand with \verb|\shorthandoff|, but this is cumbersome and you cannot
use it ``just in case'' (if the character is not a shorthands an error
is raised, instead of ignoring silently the redundant setting). That
means you have to accept a character like : is active in an English
document even if you need it for just a few quotations in French. The
default engine may be replaced by a new one which adapts the
shorthands behaviour to the context in the following way:
\begin{enumerate}
\item In math mode, while still shorthands, they behave always like the
corresponding normal char. Things like \verb|$a \mathrel{x'} b$|
work as expected.
\item When the language is switched, shorthands chars are made normal or
active, as appropiate. Thus, \texttt{:} or \texttt{?} are active only in
\texttt{french}.
\end{enumerate}
% This option is useful when there are, say, short quotations in French
% inside a German text or when there are whole chapter in either French
% or German.
\item[nocrossrefs] newlabel, ref and pageref are not redefined. You
cannot use shorthands in labels.
\item[nocitations] nocite, bibcite and bibitem are not redefined. You
cannot use shorthands in labels.
\item[langcaptions] Captions are redefined if possible so that an
intermediate macro \verb|\lang...name| is used, eg,
\verb|\germanchaptername|. Somewhat experimental.
\item[noconfig] Config files are not loaded, so you can make sure your
document is not spoilt by an unexpected \texttt{.cfg} file.
\end{description}
Babel tweaks several packages for shorthands to be accepted. At the
time of this writing they are \textsf{cite}, \textsf{natbib},
\textsf{varioref} and \textsf{hhline} (the latter for the colon). If
you don't use shorthands, these redefinitions are unnecesary and
inconvenient. If you give a list of shorthands and it doesn't include
\verb|:|, then \verb|hhline| is left untouched. The other packages
are handled by \texttt{nocrossrefs} and \texttt{nocitations}, as
appropiate.
\section{Macros}
\begin{description}
\item[\ttfamily\string\babelshorthand] Use a shorthand, even with
\texttt{shorthands=off} or not listed in it, eg,
\verb|\babelshorthand{"u}| or \verb|\babelshorthand{:}|. You can
conveniently define your own macros.
\end{description}
\section{Known limitations}
If a class loads \textsf{babel} with a language, you cannot use
\textsf{babeltools}. However, if a class loads babel without loading
any language, you can use it. Languages given in
\verb|\documentclass| work as expected (provided the class doesn't
load it, of course).
\end{document}
|