summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/generic/babel/tb1604.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/generic/babel/tb1604.tex')
-rw-r--r--Master/texmf-dist/doc/generic/babel/tb1604.tex448
1 files changed, 448 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/generic/babel/tb1604.tex b/Master/texmf-dist/doc/generic/babel/tb1604.tex
new file mode 100644
index 00000000000..0538716f82a
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/babel/tb1604.tex
@@ -0,0 +1,448 @@
+% \iffalse meta-comment
+%
+% Copyright 1989-2005 Johannes L. Braams and any individual authors
+% listed elsewhere in this file. All rights reserved.
+%
+% This file is part of the Babel system.
+% --------------------------------------
+%
+% It may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2003/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% The Current Maintainer of this work is Johannes Braams.
+%
+% The list of all files belonging to the Babel system is
+% given in the file `manifest.bbl. See also `legal.bbl' for additional
+% information.
+%
+% The list of derived (unpacked) files belonging to the distribution
+% and covered by LPPL is defined by the unpacking scripts (with
+% extension .ins) which are part of the distribution.
+% \fi
+%%% ====================================================================
+%%% @TeX-file{
+%%% author = "Johannes",
+%%% version = "1.0",
+%%% date = "05 December 1995",
+%%% time = "22:43:54 MET",
+%%% filename = "tbstatus.tex",
+%%% address = "TeXniek,
+%%% Kersengaarde 33
+%%% 2723 BP Zoetermeer
+%%% The Netherlands",
+%%% telephone = "+31 79 352 28 19",
+%%% FAX = "+31 70 343 23 95",
+%%% checksum = "",
+%%% email = "babel@braams.cistron.nl (Internet)",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "",
+%%% supported = "yes",
+%%% abstract = "",
+%%% docstring = "This article is derived from my
+%%% presentation at the EuroTeX'95 conference
+%%% and will appear in a future issue of
+%%% TuGboat.
+%%%
+%%% The checksum field above contains a CRC-16
+%%% checksum as the first value, followed by the
+%%% equivalent of the standard UNIX wc (word
+%%% count) utility output of lines, words, and
+%%% characters. This is produced by Robert
+%%% Solovay's checksum utility.",
+%%% }
+%%% ====================================================================
+\NeedsTeXFormat{LaTeX2e}
+\IfFileExists{ltugboat.cls}{%
+ \documentclass{ltugboat}
+ \def\rtitlex{TUGboat, Volume 16 (1995), No. 4}
+ %\def\midrtitle{}
+ %\def\PrelimDraftfooter{}
+ %\let\TBmaketitle\maketitle
+ %\SelfDocumenting
+ \setcounter{page}{1}
+ }{%
+ \documentclass{article}
+ \newcommand\address[1]{}
+ \newcommand\netaddress[1]{}
+ \newcommand\TUB{\textsl{TUGboat\/}}
+ \newcommand\TeXhax{\TeX hax}}
+\usepackage{shortvrb}
+\MakeShortVerb{\|}
+
+\newcommand\figrule{\kern3pt\hrule\kern3pt}
+\newcommand*{\file}[1]{\texttt{#1}}
+\newcommand*{\cls}[1]{\texttt{#1}}
+\newcommand*{\pkg}[1]{\texttt{#1}}
+\newcommand*{\Lenv}[1]{\textsf{#1}}
+\newcommand*{\opt}[1]{\textsf{#1}}
+\newcommand*{\meta}[1]{\mbox{$\langle$\it #1\/$\rangle$}}
+\newcommand*\babel{\textsf{babel}}
+\newcommand*\bs{\char'134}
+\let\osn\oldstylenums
+
+\begin{document}
+
+\title{The status of \babel}
+\author{Johannes L. Braams}
+\address{%
+ \TeX niek\\
+ Kersengaarde 33\\
+ 2723 BP Zoetermeer\\
+ The Netherlands}
+\netaddress{babel@braams.cistron.nl}
+\date{september 1995}
+\maketitle
+
+\begin{abstract}
+ In this article I will give an overview of what has happened to
+ \babel\ lately. First I will briefly describe the history of \babel;
+ then I will introduce the concept of `shorthands'. New ways of
+ changing the `language' have been introduced and \babel\ can now
+ easily be adapted for local needs. Finally I will discuss some
+ compatibility issues.
+\end{abstract}
+
+\section{A brief history of \babel}
+
+The first ideas of developing a set of macros to support typesetting
+documents with \TeX\ in languages other than English developed around
+the time of the Euro\TeX\ conference in Karls\-ruhe (\osn{1989}). Back
+then I had created support for typesetting in Dutch by stealing
+\file{german.tex} (by Hubert Partl c.s.) and modifying it for Dutch
+conventions. This worked, but I was not completely satisfied as I hate
+the duplication of code. Soon after that I found that more `copies' of
+\file{german.tex} existed to support other languages. This led me to
+the idea of creating a package that combined these kind of language
+support packages. It would have to consist of at least two `layers':
+all the code the various copies of \file{german.tex} had in common in
+one place, loaded only once by \TeX, and a set of files with the code
+needed to support language specific needs. During the Karlsruhe
+conference the name `\babel' came up in discussions I had. It seemed
+an appropriate name and I sticked to it.
+
+\begin{table}[hbt]
+ \begin{center}
+ \begin{tabular}{l}
+ \hline
+ First ideas at Euro\protect\TeX'89 Karlsruhe\\
+ First published in TUGboat 12--2\\
+ Update article in TUGboat 14--1\\
+ Presentation of new release at Euro\protect\TeX'95\\
+ \hline
+ \end{tabular}
+ \caption{A brief history of \babel}
+ \end{center}
+\end{table}
+
+After the conference I started to work on ``\babel, a multilingual
+style-option system for use with \LaTeX' standard document styles''.
+The first release with support for about half a dozen languages
+appeared in the first half of \osn{1990}. In TUGboat volume \osn{12}
+number \osn{2} an article appeared describing \babel. Soon thereafter
+people started contributing translations for the `standard terms' for
+languages not yet present in \babel. The next big update appeared in
+\osn{1992}, accompanied by an article in TUGboat volume \osn{14}
+number \osn{1}. The main new features were that an interface was added
+to `push' and `pop' macro definitions and values of registers. Also
+some code was moved from language files to the core of \babel. In
+\osn{1994} some changes were needed to get \babel\ to work with
+\LaTeXe. As it turned out a lot of problems were still unsolved,
+amongst which the incompatibility between \babel\ and the use of
+\textsc{T}\osn{1} encoded fonts was most important.
+
+\noindent Therefore \babel\ version \osn{3}.\osn{5} has appeared.
+It's main features are:
+
+\begin{itemize}
+\item complete rewrite of the way active characters are dealt with;
+\item new ways to switch the language;
+\item A language switch is also written to the \file{.aux} file;
+\item possibility to `configure' the language specific files;
+\item extended syntax of \file{language.dat};
+\item compatibility with both the \pkg{inputenc} and\\
+ \pkg{fontenc} packages;
+\item new languages (breton, estonian, irish, scottish, lower and
+ upper sorbian).
+\end{itemize}
+
+\noindent These changes are described in the remainder of this article.
+
+\section{Shorthands and active characters}
+
+During \babel's lifetime the number of languages for which one or more
+characters were made active has grown. Until \babel\ release
+\osn{3}.\osn{4} this needed a lot of duplication of code for each
+extra active character. A situation with which I obviously was not
+very happy as I hate the duplication of code. Another problematic
+aspect of the way \babel\ dealt with active characters was the way
+\babel\ made it possible to still use them in the arguments of cross
+referencing commands. \textsf{Babel} did this with a trick that
+involves the use of |\meaning|. This resulted in the fact that the
+argument of |\label| was no longer expanded by \TeX.
+
+Because of these problems I set out to find a different implementation
+of active characters. A starting point was that a character that is
+made active should remain active for the rest of the document; only
+it's definition should change. During the development of this new
+implementation it was suggested in discussions I had within the
+\LaTeX3 team to devise a way to have `different kinds' of active
+characters. Out of this discussion came the current `shorthands'.
+
+\begin{quote}
+ \textsl{A shorthand is a sequence of one or two characters that
+ expands to arbitrary \TeX\ code.}
+\end{quote}
+
+These shorthands are implemented in such a way that there are three
+levels of shorthands:
+
+\begin{itemize}
+\item user level
+\item language level
+\item system level
+\end{itemize}
+
+\noindent Shorthands can be used for different kinds of things:
+\begin{itemize}
+\item the character \verb=~= is redefined by \babel\ as a one
+ character, system level shorthand;
+\item In some languages shorthands such as \verb="a= are defined to be
+ able to hyphenate the word;
+\item In some languages shorthands such as \verb=!= are used to insert
+ the right amount of white space.
+\end{itemize}
+
+When you want to use or define shorthands you should keep the
+following in mind:
+\begin{itemize}
+\item User level takes precedence over language level;
+\item Language level takes precedence over system level;
+\item One character shorthands take precedence over two character
+ shorthands;
+\item Shorthands are written unexpanded to \file{.aux} files.
+\end{itemize}
+
+\noindent In table~\ref{tab:sh-ov} an overview is given of the
+various shorthand characters that are used for different languages.
+
+\begin{table}[ht]
+ \begin{center}
+ \begin{tabular}{ll}
+ \hline
+ \texttt{\char'176} & system, catalan, estonian, galician, spanish \\
+ \texttt{:} & breton, francais, turkish \\
+ \texttt{;} & breton, francais \\
+ \texttt{!} & breton, francais, turkish \\
+ \texttt{?} & breton, francais \\
+ \texttt{"} & catalan, danish, dutch, estonian, finnish\\
+ & galician, german, polish, portuguese, slovene\\
+ & spanish, upper~sorbian\\
+ \texttt{`} & catalan (optional)\\
+ \texttt{'} & catalan, galician, spanish (optional)\\
+ \texttt{\char'136} & esperanto\\
+ \texttt{=} & turkish \\
+ \hline
+ \end{tabular}
+ \caption{Overview of shorthands}\label{tab:sh-ov}
+ \end{center}
+\end{table}
+
+Note that the acute and grave characters are only used as shorthand
+characters when the options \opt{activeacute} and \opt{activegrave}
+are used.
+
+On the user level three additional commands are available to deal with
+shorthands:
+\begin{description}
+\item[\texttt{\bs useshorthands}] This command takes one argument, the
+ character that should become a shorthand character.
+\item[\texttt{\bs defineshorthand}] This command takes two arguments,
+ the first argument being the shorthand character sequence, the
+ second argument being the code the shorthand should expand to.
+\item[\texttt{\bs languageshorthands}] This last command (which takes
+ one argument, the name of a language) can be used to switch to the
+ shorthands of another language, \emph{not} switching other language
+ facilities. Of course this only works if both languages were
+ specified as an option when loading the package \babel.
+\end{description}
+
+On the level of the language definition files four new commands are
+introduced to interface with the shorthand code.
+\begin{description}
+\item[\texttt{\bs initiate@active@char}] This command is used to tell
+ \LaTeX\ that the character in its argument is going to be used as a
+ shorthand character. It makes the character active, but lets it
+ expand to its non-active self.
+\item[\texttt{\bs bbl@activate}] This can be used to switch
+ the expansion of an active character to its active code.
+\item[\texttt{\bs bbl@deactivate}] This command resets the expansion
+ of an active character to expand to its non-active self.
+\item[\texttt{\bs declare@shorthand}] This command is the internal
+ command for (and also used by) |\defineshorthand|; it has
+ \emph{three} arguments: the first argument is the name of the
+ language for which to define the shorthands, the other two are the
+ same as for |\defineshorthand|.
+\end{description}
+
+One of the goals of the introduction of shorthands was to reduce the
+amount of code needed in the language definition files to support
+active characters. This goal has been reached; when a language needs
+the double quote character (\texttt{"}) to be active all one has to
+put into the language definition file are code fragments such as shown
+in figure~\ref{fig:dq}.
+
+\begin{figure}[ht]
+ \figrule
+\begin{verbatim}
+\initiate@active@char{"}
+\addto\extrasdutch{%
+ \languageshorthands{dutch}%
+ \bbl@activate{"}}
+...
+\declare@shorthand{dutch}{"`}{%
+ \textormath{\quotedblbase{}}%
+ {\mbox{\quotedblbase}}}
+...
+\end{verbatim}
+ \figrule
+ \caption{Example of defining a shorthand}\label{fig:dq}
+\end{figure}
+
+Apart from removing a lot of code from language definition files by
+introducing shorthands, some other code has been moved to
+\file{babel.def} as well. In some language definition files it was
+necessary to provide access to glyphs that are not normally easily
+available (such as the |\quotedblbase| in the example in
+figure~\ref{fig:dq}. Some of these glyphs have to be `constructed' for
+\textsc{ot}\osn{1} encoding while they are present in
+\textsc{t}\osn{1} encoded fonts. Having all such (encoding dependent)
+code together in one place has the advantage these glyphs are the same
+for all the language definition files of \babel; also maintenance is
+easier this way.
+
+\section{Switching the language}
+
+Until release \osn{3}.\osn{5} \babel\ only had \emph{one} command to
+switch between languages: |\selectlanguage|. It takes the name of the
+language to switch to as an argument; the command is used as a
+declaration and always switches everything\footnote{that means the
+ hyphenation pattern, the \texttt{\bs lefthyphenmin} and \texttt{\bs
+ righthyphenmin} parameters, the translations of the words, the
+ date and the specials}. Two new ways to switch to another language
+have now been introduced.
+
+\begin{description}
+\item[\texttt{\bs selectlanguage}] This command was available in
+ \babel\ from the start.
+\item[\texttt{\bs foreignlanguage}] This new command is meant to be
+ used when a short piece of text (such as a quote) comes from another
+ language. This text should not be longer than \emph{one} paragraph.
+ For the text the hyphenation patterns and the specials are switched.
+ The command has two arguments: the name of the language and the text
+ from that language.
+\item[environment `otherlanguage'] This new environment switches the
+ same aspects as the command |\selectlanguage| does. The difference
+ is that the switches are local to the environment whereas one either
+ has to use |\selectlanguage| in a group to get the same effect or
+ one has to issue multiple |\selectlanguage| commands. Also the
+ environment is one of the things needed to enable the development of
+ language definition files that support right-to-left typesetting.
+\end{description}
+
+An aspect of some multilingual documents might be that they have
+section titles or figure captions in different languages. For this to
+work properly \babel\ now writes some information on the \file{.aux}
+file when a language switch from either |\selectlanguage| or the
+\Lenv{otherlanguage} environment occurs. \textsf{Babel} nows about
+the \file{.toc}, \file{.lof} and \file{.lot} files; if you have added
+an extra table of contents you should be aware of this.
+
+\section{Adapting \babel\ for local usage}
+
+In the past people have had to find ways to adapt \babel\ to document
+classes that have been developed locally (implementing house style for
+instance). Some have found ways to that without changing any of the
+babel files, others have modified language definition files and have
+found themselves having to make these changes each time a new release
+of \babel\ is made available\footnote{which doesn't happen too often
+ \texttt{;-)}.}. It has been suggested to provide an easier way of
+doing this. Therefore I have copied the concept of configuration files
+from \LaTeXe\ and introduced language configuration files. For each
+language definition file that is loaded \LaTeX\ will try to find a
+configuration file. Such files have the same name as the language
+definition file; except for their extension which has to be
+\file{.cfg}.
+
+\section{Loading hyphenation patterns}
+
+An important change to the core of \babel\ is that the syntax of
+\file{language.dat} has been extended. This was suggested by Bernard
+Gaulle, author of the package \pkg{french}. His package supports an
+enhanced version of \file{language.dat} in which one can optionally
+indicate that a file with a list of hyphenation excpetions has to be
+loaded. It is also possible to have more than one name for the same
+hyphenation pattern register.
+
+\begin{figure}[ht]
+ \figrule
+\begin{verbatim}
+% File : language.dat
+% Purpose : specify which hypenation
+% patterns to load while running
+% iniTeX
+=american
+english hyphen.english exceptions.english
+=USenglish
+french fr8hyph.tex
+english ukhyphen.tex
+=UKenglish
+=british
+dutch hyphen.dutch
+german hyphen.german
+\end{verbatim}
+ \figrule
+ \caption{Example of \file{language.dat}}\label{fig:l.d}
+\end{figure}
+
+As you can see in the example of \file{language.dat} in
+figure~\ref{fig:l.d}, an equals sign ($=$) on the beginning of a line
+now has a significant meaning. It tells \LaTeX\ that the name which
+follows the equals sign is to be an alternate name for the hyphenation
+patterns that were loaded last. As you probably expect, there is one
+exception to this rule: when the first (non-comment) line starts with
+an equals sign it will be an alternate name for the \emph{next}
+hyphenation patterns that will be loaded. Hence, in the example the
+hyphenation patterns stored in the file \file{hyphen.english} will be
+known to \TeX\ as: `american', `english' and `USenglish'. You can also
+see in figuree~\ref{fig:l.d} that for `english' an extra file is
+specified. It will be loaded after \file{hyphen.english} and should
+contain some hyphenation exceptions.
+
+\section{Compatibility with other formats}
+
+This release of \babel\ has been tested with \LaTeXe; with and
+without either of the packages \pkg{inputenc} or \pkg{fontenc}. There
+should no longer be any problems using one (or both) of these packages
+together with \babel.
+
+\noindent This release has also been tested with \textsc{Plain}~\TeX, it should
+not provide any problems when used with that format. Therefore
+\babel~version \osn{3}.\osn{5} should not pose any problems when used
+with any format which is based on \textsc{Plain}~\TeX; this has
+\emph{not} been tested by me though. Some provisions are made to make
+\babel~\osn{3}.\osn{5} work with \LaTeX$\:$\osn{2}.\osn{09}; but not
+all features may work as expected as I haven't tested this fully.
+
+Please note that although it was necessary to copy parts of
+\pkg{inputenc} and \pkg{fontenc} this does not mean that you get
+\textsc{t}\osn{1} support in \textsc{Plain}~\TeX, simply by adding
+\babel. To acheive that much more work is needed.
+
+\end{document}