From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001
From: Norbert Preining Nicola Talbot 26th June 2007
+
+
+
+
+
+
+
+As from version 1.2, you can specify a different separator.
+To change the separator, use the command:
+
+
+
+
+ \applyCSVfile[n]{filename}{text}
+
+With the unstarred version, the entries in the header row
+ are used to generate commands of the form
+ \insertidentifier1 to access corresponding elements
+ in the row currently being processed. For example,
+ suppose the first line of the CSV file looks like:
+
+Alternatively, you can use the
+\field{col} command, where
+col is the column number of the entry, so
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Within the \CSVtotabular, \CSVtolongtable and
+\applyCSVfile commands, there are two
+ counters, csvlinenum and csvrownumber.
+ The former, csvlinenum, is the current line number in the CSV
+ file, whereas the latter, csvrownumber, is the current
+ data row. Of the two counters, csvrownumber is likely to be
+ the most useful.
+
+
+
+
+
+
+
+
+
+
+Labels can be generated using the standard
+ \label command, but you will need some way
+ to make each label unique. Example 10
+ does this by using \thecsvrownumber,
+ whereas Example 11 uses \insertidentifier.
+
+
+
+
+
+
+
+
+Table 2 shows the resulting table for
+ this example.
+
+
+
+
+
+The following example is more refined in that it
+ takes advantage of the fact that the time to growth data consists
+ of integers only, so the experiment with the maximum growth can be
+ determined by LaTeX.
+
+
+
+
+
+
+
+The following example illustrates the use of these commands.
+
+
+It is not possible to nest \CSVtotabular,
+\CSVtolongtable and \applyCSVfile,
+ so if you need to go through index.csv and use each file
+ named in there, you can first go through index.csv
+storing the information using \csvSaveEntry as follows:
+
+This example can be modified if, say, you only want the
+ tables where the temperature is 25:
+
+
+
+
+
+
+If you want to create a pie chart from data stored in a CSV file,
+you can use the csvpie package, distributed with the
+csvtools package. A basic pie chart can be created
+using the command:
+
+The pie charts have ``inner'' labels on the segment, and
+``outer'' labels outside the chart. The labels are given by the
+commands \csvpieinnerlabel
+and \csvpieouterlabel.
+The default definitions are:
+
+The pie chart display can be modified using the optional
+argument to \csvpiechart.
+This argument should be a key=value list.
+The available keys are as follows:
+
+
+
+
+
+
+
+
+Note that TEX performs integer arithmetic. Although the CSV
+file may contain decimal numbers, rounding will occur when
+constructing the pie charts.
+
+
+The colours for the pie chart segments can be set using the
+command:
+
+You can obtain the colour name for a given segment
+using:
+
+If you want grey pie charts, either use the monochrome
+package option:
+
+If the CSV file has no header row, the starred version should be
+used, e.g.:
+
+
+
+
+
+
+
+
+The csvsort package (which forms part of the
+csvtools bundle) provides analogous commands to
+those provided by csvtools, but the data is first
+sorted. The csvsort package needs to be loaded
+separately in order to access the necessary commands. The package
+options should be a list of key=value pairs, where the available
+keys are:
+
+
+
+
+
+Note that the csvsort package requires Éamonn McManus'
+compare.tex file. The csvsort package uses
+an insertion sort method to sort the data, so large amounts of data
+may slow processing time. The following commands are provided
+by csvsort:
+
+
+
+ \sortapplyCSVfileoptionsfilenametext
+
+\sortapplyCSVfile*optionsfilenametext
+
+Brown, Jane. Age:5
+
+Jones, Bart. Age:18
+
+Lang, Zephram. Age:60
+
+Lang, Fred. Age:10
+
+Langley, Barney. Age:25
+
+Smith, Adam. Age: 24
+
+Note that the data has only been sorted according to the surname.
+To sort first by surname, then by first name, you can
+do something like:
+
+The commands:
+
+Note that the counter csvlinenum has no meaning in the
+commands provided by the csvsort package. The
+csvrownumber counter corresponds to the sorted data row.
+
+
+
+
+Suppose you have several large CSV files, and you have included
+the information into your document using \applyCSVfile,
+\CSVtolongtable, \CSVtotabular or
+\csvpiechart, which has
+made life so much easier for you, but you are now required by a
+journal to submit your source code in a single .tex file.
+ They don't want all your CSV files, so what do you do? If you
+have Perl installed on your system you can use the
+csvtools.pl Perl script. This has the following syntax:
+
+
+
+
+Similarly, csvtools.pl will substitute all occurrances
+of \CSVtolongtable, \applyCSVfile
+and \csvpiechart.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Dr Nicola Talbot
+
+
+
+
+ \ProvidesLanguage{bahasa}
+%\fi
+%\ProvidesFile{bahasa.dtx}
+ [2008/03/15 v1.0l Bahasa Indonesia support from the babel system]
+%\iffalse
+%% File `bahasa.dtx'
+%% Babel package for LaTeX version 2e
+%% Copyright (C) 1989 - 2008
+%% by Johannes Braams, TeXniek
+%
+%% Bahasa Language Definition File
+%% Copyright (C) 1994 - 2008
+%% by J"org Knappen, (joerg.knappen at alpha.ntp.springer.de)
+% Terry Mart (mart at vkpmzd.kph.uni-mainz.de)
+% Institut f\"ur Kernphysik
+% Johannes Gutenberg-Universit\"at Mainz
+% D-55099 Mainz
+% Germany
+%
+%% Please report errors to: J"org Knappen
+%% knappen at alpha.ntp.springer.de
+%% J.L. Braams
+%% babel at braams.xs4all.nl
+%
+% This file is part of the babel system, it provides the source
+% code for the bahasa indonesia / bahasa melayu language definition
+% file. The original version of this file was written by Terry
+% Mart (mart@vkpmzd.kph.uni-mainz.de) and J"org Knappen
+% (knappen@vkpmzd.kph.uni-mainz.de).
+%<*filedriver>
+\documentclass{ltxdoc}
+\newcommand*\TeXhax{\TeX hax}
+\newcommand*\babel{\textsf{babel}}
+\newcommand*\langvar{$\langle \it lang \rangle$}
+\newcommand*\note[1]{}
+\newcommand*\Lopt[1]{\textsf{#1}}
+\newcommand*\file[1]{\texttt{#1}}
+\begin{document}
+ \DocInput{bahasa.dtx}
+\end{document}
+%
+%\fi
+% \GetFileInfo{bahasa.dtx}
+%
+% \changes{bahasa-0.9c}{1994/06/26}{Removed the use of \cs{filedate}
+% and moved identification after the loading of \file{babel.def}}
+% \changes{bahasa-1.0d}{1996/07/10}{Replaced \cs{undefined} with
+% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency
+% with \LaTeX}
+% \changes{bahasa-1.0e}{1996/10/10}{Moved the definition of
+% \cs{atcatcode} right to the beginning.}
+%
+% \section{The Bahasa Indonesian language}
+%
+% The file \file{\filename}\footnote{The file described in this
+% section has version number \fileversion\ and was last revised on
+% \filedate.} defines all the language definition macros for the
+% Bahasa Indonesia / Bahasa Melayu language. Bahasa just means
+% `language' in Bahasa Indonesia / Bahasa Melayu. Since both
+% national versions of the language use the same writing, although
+% differing in pronounciation, this file can be used for both
+% languages.
+%
+% For this language currently no special definitions are needed or
+% available.
+%
+% \StopEventually{}
+%
+% The macro |\LdfInit| takes care of preventing that this file is
+% loaded more than once, checking the category code of the
+% \texttt{@} sign, etc.
+% \changes{bahasa-1.0e}{1996/11/02}{Now use \cs{LdfInit} to perform
+% initial checks}
+% \changes{bahasa-v1.0k}{2005/11/23}{Make it possible that this file
+% is loaded by variuos options}
+% \begin{macrocode}
+%<*code>
+\LdfInit\CurrentOption{date\CurrentOption}
+% \end{macrocode}
+%
+% When this file is read as an option, i.e. by the |\usepackage|
+% command, \texttt{bahasa} could be an `unknown' language in which
+% case we have to make it known. So we check for the existence of
+% |\l@bahasa| to see whether we have to do something here.
+%
+% For both Bahasa Indonesia and Bahasa Malaysia the same set of
+% hyphenation patterns can be used which are available in the file
+% \file{inhyph.tex}. However it could be loaded using any of the
+% possible Babel options fot the Indonesian and Malaysian
+% languase. So first we try to find out whether this is the case.
+%
+% \changes{bahasa-0.9c}{1994/06/26}{Now use \cs{@patterns} to produce
+% the warning}
+% \begin{macrocode}
+\ifx\l@bahasa\@undefined
+ \ifx\l@bahasai\@undefined
+ \ifx\l@indon\@undefined
+ \ifx\l@indonesian\@undefined
+ \ifx\l@bahasam\@undefined
+ \ifx\l@malay\@undefined
+ \ifx\l@meyalu\@undefined
+ \@nopatterns{Bahasa Indonesia}
+ \adddialect\l@bahasa0\relax
+ \else
+ \let\l@bahasa\l@meyalu
+ \fi
+ \else
+ \let\l@bahasa\l@malay
+ \fi
+ \else
+ \let\l@bahasa\l@bahasam
+ \fi
+ \else
+ \let\l@bahasa\l@indonesian
+ \fi
+ \else
+ \let\l@bahasa\l@indon
+ \fi
+ \else
+ \let\l@bahasa\l@bahasai
+ \fi
+\fi
+% \end{macrocode}
+%
+% Now that we are sure the |\l@bahasa| has some valid definition we
+% need to make sure that a name to access the hyphenation patterns,
+% corresponding to the option used, is available.
+% \begin{macrocode}
+\expandafter\expandafter\expandafter\let
+ \expandafter\csname
+ \expandafter l\expandafter @\CurrentOption\endcsname
+ \l@bahasa
+% \end{macrocode}
+%
+% The next step consists of defining commands to switch to (and
+% from) the Bahasa language.
+%
+% \begin{macro}{\captionsbahasa}
+% The macro |\captionsbahasa| defines all strings used in the four
+% standard documentclasses provided with \LaTeX.
+% \changes{bahasa-1.0b}{1995/07/04}{Added \cs{proofname} for
+% AMS-\LaTeX}
+% \changes{bahasa-1.0d}{1996/07/09}{Replaced `Proof' by `Bukti'
+% (PR2214)}
+% \changes{bahasa-1.0h}{2000/09/19}{Added \cs{glossaryname}}
+% \changes{bahasa-1.0i}{2003/11/17}{Inserted translation for Glossary}
+% \begin{macrocode}
+\@namedef{captions\CurrentOption}{%
+ \def\prefacename{Pendahuluan}%
+ \def\refname{Pustaka}%
+ \def\abstractname{Ringkasan}% (sometime it's called 'intisari'
+ % or 'ikhtisar')
+ \def\bibname{Bibliografi}%
+ \def\chaptername{Bab}%
+ \def\appendixname{Lampiran}%
+ \def\contentsname{Daftar Isi}%
+ \def\listfigurename{Daftar Gambar}%
+ \def\listtablename{Daftar Tabel}%
+ \def\indexname{Indeks}%
+ \def\figurename{Gambar}%
+ \def\tablename{Tabel}%
+ \def\partname{Bagian}%
+% Subject: Subyek
+% From: Dari
+ \def\enclname{Lampiran}%
+ \def\ccname{cc}%
+ \def\headtoname{Kepada}%
+ \def\pagename{Halaman}%
+% Notes (Endnotes): Catatan
+ \def\seename{lihat}%
+ \def\alsoname{lihat juga}%
+ \def\proofname{Bukti}%
+ \def\glossaryname{Daftar Istilah}%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\datebahasa}
+% The macro |\datebahasa| redefines the command |\today| to produce
+% Bahasa Indonesian dates.
+% \changes{bahasa-1.0f}{1997/10/01}{Use \cs{edef} to define \cs{today}}
+% \changes{bahasa~1.0f}{1998/03/28}{use \cs{def} instead of \cs{edef}
+% to save memory}
+% \changes{bahasa-1.0g}{1999/03/12}{Februari should be spelled as
+% Pebruari}
+% \begin{macrocode}
+\@namedef{date\CurrentOption}{%
+ \def\today{\number\day~\ifcase\month\or
+ Januari\or Pebruari\or Maret\or April\or Mei\or Juni\or
+ Juli\or Agustus\or September\or Oktober\or Nopember\or Desember\fi
+ \space \number\year}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\extrasbahasa}
+% \begin{macro}{\noextrasbahasa}
+% The macro |\extrasbahasa| will perform all the extra definitions
+% needed for the Bahasa language. The macro |\extrasbahasa| is used
+% to cancel the actions of |\extrasbahasa|. For the moment these
+% macros are empty but they are defined for compatibility with the
+% other language definition files.
+%
+% \begin{macrocode}
+\@namedef{extras\CurrentOption}{}
+\@namedef{noextras\CurrentOption}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\bahasahyphenmins}
+% The bahasa hyphenation patterns should be used with
+% |\lefthyphenmin| set to~2 and |\righthyphenmin| set to~2.
+% \changes{bahasa-1.0e}{1996/08/07}{use \cs{bahasahyphenmins} to store
+% the correct values}
+% \changes{bahasa-1.0h}{2000/09/22}{Now use \cs{providehyphenmins} to
+% provide a default value}
+% \begin{macrocode}
+\providehyphenmins{\CurrentOption}{\tw@\tw@}
+% \end{macrocode}
+% \end{macro}
+%
+% The macro |\ldf@finish| takes care of looking for a
+% configuration file, setting the main language to be switched on
+% at |\begin{document}| and resetting the category code of
+% \texttt{@} to its original value.
+% \changes{bahasa-1.0e}{1996/11/02}{Now use \cs{ldf@finish} to wrap up}
+% \begin{macrocode}
+\ldf@finish{\CurrentOption}
+%
+% \end{macrocode}
+%
+% \Finale
+%%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%%
+\endinput
diff --git a/obsolete/macros/latex/contrib/babel-contrib/bahasa/bahasa.ins b/obsolete/macros/latex/contrib/babel-contrib/bahasa/bahasa.ins
new file mode 100644
index 0000000000..954122314c
--- /dev/null
+++ b/obsolete/macros/latex/contrib/babel-contrib/bahasa/bahasa.ins
@@ -0,0 +1,149 @@
+%%
+%% This file will generate fast loadable files and documentation
+%% driver files from the doc files in this package when run through
+%% LaTeX or TeX.
+%%
+%% Copyright 1989-2008 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 LaTeX base distribution 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.
+%%
+%% --------------- start of docstrip commands ------------------
+%%
+\def\filedate{2005/11/23}
+\def\batchfile{bahasa.ins}
+\input docstrip.tex
+
+{\ifx\generate\undefined
+\Msg{**********************************************}
+\Msg{*}
+\Msg{* This installation requires docstrip}
+\Msg{* version 2.3c or later.}
+\Msg{*}
+\Msg{* An older version of docstrip has been input}
+\Msg{*}
+\Msg{**********************************************}
+\errhelp{Move or rename old docstrip.tex.}
+\errmessage{Old docstrip in input path}
+\batchmode
+\csname @@end\endcsname
+\fi}
+
+\declarepreamble\mainpreamble
+This is a generated file.
+
+Copyright 1989-2008 Johannes L. Braams and any individual authors
+listed elsewhere in this file. All rights reserved.
+
+This file was generated from file(s) 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.
+
+This file may only be distributed together with a copy of the Babel
+system. You may however distribute the Babel system without
+such generated files.
+
+The list of all files belonging to the Babel distribution 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.
+\endpreamble
+
+\declarepreamble\fdpreamble
+This is a generated file.
+
+Copyright 1989-2008 Johannes L. Braams and any individual authors
+listed elsewhere in this file. All rights reserved.
+
+This file was generated from file(s) 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.
+
+This file may only be distributed together with a copy of the Babel
+system. You may however distribute the Babel system without
+such generated files.
+
+The list of all files belonging to the Babel distribution is
+given in the file `manifest.bbl'. See also `legal.bbl for additional
+information.
+
+In particular, permission is granted to customize the declarations in
+this file to serve the needs of your installation.
+
+However, NO PERMISSION is granted to distribute a modified version
+of this file under its original name.
+
+\endpreamble
+
+\keepsilent
+
+\usedir{tex/generic/babel}
+
+\usepreamble\mainpreamble
+\generate{\file{bahasai.ldf}{\from{bahasa.dtx}{code}}
+ \file{bahasam.ldf}{\from{bahasam.dtx}{code}}
+ }
+\usepreamble\fdpreamble
+
+\ifToplevel{
+\Msg{***********************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the following}
+\Msg{* files into a directory searched by TeX:}
+\Msg{*}
+\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty}
+\Msg{*}
+\Msg{* To produce the documentation run the files ending with}
+\Msg{* '.dtx' and `.fdd' through LaTeX.}
+\Msg{*}
+\Msg{* Happy TeXing}
+\Msg{***********************************************************}
+}
+
+\endinput
diff --git a/obsolete/macros/latex/contrib/babel-contrib/bahasa/bahasa.pdf b/obsolete/macros/latex/contrib/babel-contrib/bahasa/bahasa.pdf
new file mode 100644
index 0000000000..4311498071
Binary files /dev/null and b/obsolete/macros/latex/contrib/babel-contrib/bahasa/bahasa.pdf differ
diff --git a/obsolete/macros/latex/contrib/babel-contrib/bahasa/bahasam.dtx b/obsolete/macros/latex/contrib/babel-contrib/bahasa/bahasam.dtx
new file mode 100644
index 0000000000..6b55a39774
--- /dev/null
+++ b/obsolete/macros/latex/contrib/babel-contrib/bahasa/bahasam.dtx
@@ -0,0 +1,297 @@
+% \iffalse meta-comment
+%
+% Copyright 1989-2008 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
+% \CheckSum{148}
+%\iffalse
+% Tell the \LaTeX\ system who we are and write an entry on the
+% transcript.
+%<*dtx>
+\ProvidesFile{bahasam.dtx}
+%
+%\ProvidesLanguage{bahasam}
+%\fi
+%\ProvidesFile{bahasam.dtx}
+ [2008/01/27 v1.0k Bahasa Malaysia support from the babel system]
+%\iffalse
+%% File `bahasam.dtx'
+%% Babel package for LaTeX version 2e
+%% Copyright (C) 1989 - 2008
+%% by Johannes Braams, TeXniek
+%
+%% Bahasa Malaysia Language Definition File
+%% Copyright (C) 1994 - 2008
+%% by J"org Knappen, (joerg.knappen at alpha.ntp.springer.de)
+% Terry Mart (mart at vkpmzd.kph.uni-mainz.de)
+% Institut f\"ur Kernphysik
+% Johannes Gutenberg-Universit\"at Mainz
+% D-55099 Mainz
+% Germany
+%
+%% Copyright (C) 2005, 2008
+%% by Bob Margolis, (bob.margolis at ntlworld.com)
+% derived from J"ork Knappen's work - see above.
+%% [With help from Awangku Merali Pengiran Mohamed (Sarawak)]
+% gratefully acknowledged.
+% Yateley,
+% UK
+%
+%% Please report errors to: Bob Margolis
+%% bob.margolis at ntlworld.com
+%% J.L. Braams
+%% babel at braams.xs4all.nl
+%
+% This file is part of the babel system, it provides the source
+% code for the Bahasa Malaysia language definition
+% file. The original version of this file was written by Terry
+% Mart (mart@vkpmzd.kph.uni-mainz.de) and J"org Knappen
+% (knappen@vkpmzd.kph.uni-mainz.de).
+%<*filedriver>
+\documentclass{ltxdoc}
+\newcommand*\TeXhax{\TeX hax}
+\newcommand*\babel{\textsf{babel}}
+\newcommand*\langvar{$\langle \it lang \rangle$}
+\newcommand*\note[1]{}
+\newcommand*\Lopt[1]{\textsf{#1}}
+\newcommand*\file[1]{\texttt{#1}}
+\begin{document}
+ \DocInput{bahasam.dtx}
+\end{document}
+%
+%\fi
+% \GetFileInfo{bahasam.dtx}
+%
+% \changes{bahasa-0.9c}{1994/06/26}{Removed the use of \cs{filedate}
+% and moved identification after the loading of \file{babel.def}}
+% \changes{bahasa-1.0d}{1996/07/10}{Replaced \cs{undefined} with
+% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency
+% with \LaTeX}
+% \changes{bahasa-1.0e}{1996/10/10}{Moved the definition of
+% \cs{atcatcode} right to the beginning.}
+% \changes{bahasam-0.9f}{2005/11/22}{A number of changes to make this
+% specific to Bahasa Mayasia}
+%
+% \section{The Bahasa Malaysia language}
+%
+% The file \file{\filename}\footnote{The file described in this
+% section has version number \fileversion\ and was last revised on
+% \filedate.} defines all the language definition macros for the
+% Bahasa Malaysia language. Bahasa just means
+% `language' in Bahasa Malaysia. A number of terms differ from those used
+% in bahasa indonesia.
+%
+% For this language currently no special definitions are needed or
+% available.
+%
+% \StopEventually{}
+%
+% The macro |\LdfInit| takes care of preventing that this file is
+% loaded more than once, checking the category code of the
+% \texttt{@} sign, etc.
+% \changes{bahasa-1.0e}{1996/11/02}{Now use \cs{LdfInit} to perform
+% initial checks}
+% \changes{bahasam-v1.0j}{2005/11/23}{Make it possible that this file
+% is loaded by variuos options}
+% \begin{macrocode}
+%<*code>
+\LdfInit\CurrentOption{date\CurrentOption}
+% \end{macrocode}
+%
+% When this file is read as an option, i.e. by the |\usepackage|
+% command, \texttt{bahasa} could be an `unknown' language in which
+% case we have to make it known. So we check for the existence of
+% |\l@bahasa| to see whether we have to do something here.
+%
+% For both Bahasa Malaysia and Bahasa Indonesia the same set of
+% hyphenation patterns can be used which are available in the file
+% \file{inhyph.tex}. However it could be loaded using any of the
+% possible Babel options fot the Malaysian and Indonesian
+% languase. So first we try to find out whether this is the case.
+%
+% \changes{bahasa-0.9c}{1994/06/26}{Now use \cs{@patterns} to produce
+% the warning}
+% \begin{macrocode}
+\ifx\l@malay\@undefined
+ \ifx\l@meyalu\@undefined
+ \ifx\l@bahasam\@undefined
+ \ifx\l@bahasa\@undefined
+ \ifx\l@bahasai\@undefined
+ \ifx\l@indon\@undefined
+ \ifx\l@indonesian\@undefined
+ \@nopatterns{Bahasa Malaysia}
+ \adddialect\l@malay0\relax
+ \else
+ \let\l@malay\l@indonesian
+ \fi
+ \else
+ \let\l@malay\l@indon
+ \fi
+ \else
+ \let\l@malay\l@bahasai
+ \fi
+ \else
+ \let\l@malay\l@bahasa
+ \fi
+ \else
+ \let\l@malay\l@bahasam
+ \fi
+ \else
+ \let\l@malay\l@meyalu
+ \fi
+\fi
+% \end{macrocode}
+%
+% Now that we are sure the |\l@malay| has some valid definition we
+% need to make sure that a name to access the hyphenation patterns,
+% corresponding to the option used, is available.
+% \begin{macrocode}
+\expandafter\expandafter\expandafter\let
+ \expandafter\csname
+ \expandafter l\expandafter @\CurrentOption\endcsname
+ \l@malay
+% \end{macrocode}
+%
+% The next step consists of defining commands to switch to (and
+% from) the Bahasa language.
+%
+% \begin{macro}{\captionsbahasam}
+% The macro |\captionsbahasam| defines all strings used in the four
+% standard documentclasses provided with \LaTeX.
+% \changes{bahasa-1.0b}{1995/07/04}{Added \cs{proofname} for
+% AMS-\LaTeX}
+% \changes{bahasa-1.0d}{1996/07/09}{Replaced `Proof' by `Bukti'
+% (PR2214)}
+% \changes{bahasa-1.0h}{2000/09/19}{Added \cs{glossaryname}}
+% \changes{bahasa-1.0i}{2003/11/17}{Inserted translation for Glossary}
+% \changes{bahasam-1.0k}{2008/01/27}{Inserted changes from Awangku Merali }
+% \begin{macrocode}
+\@namedef{captions\CurrentOption}{%
+ \def\prefacename{Prakata}%
+ \def\refname{Rujukan}%
+ \def\abstractname{Abstrak}% (sometime it's called 'intisari'
+ % or 'ikhtisar')
+ \def\bibname{Bibliografi}%
+ \def\chaptername{Bab}%
+ \def\appendixname{Lampiran}%
+ \def\contentsname{Kandungan}%
+ \def\listfigurename{Senarai Gambar}%
+ \def\listtablename{Senarai Jadual}%
+ \def\indexname{Indeks}%
+ \def\figurename{Gambar}%
+ \def\tablename{Jadual}%
+ \def\partname{Bahagian}%
+% Subject: Perkara
+% From: Dari
+ \def\enclname{Lampiran}%
+ \def\ccname{sk}% (short form for 'Salinan Kepada')
+ \def\headtoname{Kepada}%
+ \def\pagename{Halaman}%
+% Notes (Endnotes): Catatan
+ \def\seename{sila rujuk}%
+ \def\alsoname{rujuk juga}%
+ \def\proofname{Bukti}%
+ \def\glossaryname{Istilah}%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\datebahasam}
+% The macro |\datebahasam| redefines the command |\today| to produce
+% Bahasa Malaysian dates.
+% \changes{bahasa-1.0f}{1997/10/01}{Use \cs{edef} to define \cs{today}}
+% \changes{bahasa~1.0f}{1998/03/28}{use \cs{def} instead of \cs{edef}
+% to save memory}
+% \changes{bahasa-1.0g}{1999/03/12}{Februari should be spelled as
+% Pebruari}
+% \changes{bahasam-1.0k}{2008/01/27}{Februari restored to BM spelling;
+% see Collins Kamus Dwibahasa 2005}
+% \begin{macrocode}
+\@namedef{date\CurrentOption}{%
+ \def\today{\number\day~\ifcase\month\or
+ Januari\or Februari\or Mac\or April\or Mei\or Jun\or
+ Julai\or Ogos\or September\or Oktober\or November\or Disember\fi
+ \space \number\year}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\extrasbahasam}
+% \begin{macro}{\noextrasbahasam}
+% The macro |\extrasbahasa| will perform all the extra definitions
+% needed for the Bahasa language. The macro |\extrasbahasa| is used
+% to cancel the actions of |\extrasbahasa|. For the moment these
+% macros are empty but they are defined for compatibility with the
+% other language definition files.
+%
+% \begin{macrocode}
+\@namedef{extras\CurrentOption}{}
+\@namedef{noextras\CurrentOption}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\bahasamhyphenmins}
+% The bahasam hyphenation patterns should be used with
+% |\lefthyphenmin| set to~2 and |\righthyphenmin| set to~2.
+% \changes{bahasa-1.0e}{1996/08/07}{use \cs{bahasamhyphenmins} to store
+% the correct values}
+% \changes{bahasa-1.0h}{2000/09/22}{Now use \cs{providehyphenmins} to
+% provide a default value}
+% \begin{macrocode}
+\providehyphenmins{\CurrentOption}{\tw@\tw@}
+% \end{macrocode}
+% \end{macro}
+%
+% The macro |\ldf@finish| takes care of looking for a
+% configuration file, setting the main language to be switched on
+% at |\begin{document}| and resetting the category code of
+% \texttt{@} to its original value.
+% \changes{bahasa-1.0e}{1996/11/02}{Now use \cs{ldf@finish} to wrap up}
+% \begin{macrocode}
+\ldf@finish{\CurrentOption}
+%
+% \end{macrocode}
+%
+% \Finale
+%%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%%
+\endinput
diff --git a/obsolete/macros/latex/contrib/babel-contrib/bahasa/bahasam.pdf b/obsolete/macros/latex/contrib/babel-contrib/bahasa/bahasam.pdf
new file mode 100644
index 0000000000..a59fa706f3
Binary files /dev/null and b/obsolete/macros/latex/contrib/babel-contrib/bahasa/bahasam.pdf differ
diff --git a/obsolete/macros/latex/contrib/babeltools/README b/obsolete/macros/latex/contrib/babeltools/README
new file mode 100644
index 0000000000..798415d78b
--- /dev/null
+++ b/obsolete/macros/latex/contrib/babeltools/README
@@ -0,0 +1,15 @@
+
+babeltools
+~~~~~~~~~~
+Deprecated. Fixed some babel annoyances.
+
+Manual: babeltools.tex/.pdf
+
+
+_______________________________________________________
+Javier Bezos | http://www.texnia.com
+.......................................................
+
+
+
+
diff --git a/obsolete/macros/latex/contrib/babeltools/babeltools.pdf b/obsolete/macros/latex/contrib/babeltools/babeltools.pdf
new file mode 100644
index 0000000000..d4cfd47a98
Binary files /dev/null and b/obsolete/macros/latex/contrib/babeltools/babeltools.pdf differ
diff --git a/obsolete/macros/latex/contrib/babeltools/babeltools.sty b/obsolete/macros/latex/contrib/babeltools/babeltools.sty
new file mode 100644
index 0000000000..a01d72e46f
--- /dev/null
+++ b/obsolete/macros/latex/contrib/babeltools/babeltools.sty
@@ -0,0 +1,314 @@
+%
+% Copyright (C) 2010-2019 Javier Bezos http://www.texnia.com
+%
+% This file may be distributed and/or modified under the conditions of
+% the MIT License. A version can be found at the end of this file.
+%
+% TODO:
+% noshorthands -> shorthands=off, nocitations, nocrossrefs
+
+\ProvidesPackage{babeltools}[2010/10/14 v1.1 Tools for the babel system (beta)]
+
+\edef\bbtl@savedcatcodes{%
+ \catcode`\noexpand\~=\the\catcode`\~
+ \catcode`\noexpand\:=\the\catcode`\:
+ \catcode`\noexpand\"=\the\catcode`\"}
+\catcode`\~=\active
+\catcode`\"=12
+\catcode`\:=12
+
+\def\bbtl@meaning{\expandafter\strip@prefix\meaning}
+
+\def\bbtl@ifshorthand#1{%
+ \@expandtwoargs\in@{#1}{\bbtl@o@shorthands}%
+ \ifin@
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi}
+
+\let\bbtl@afterbabelhook\@empty
+\newcommand\AfterBabel[1]{%
+ \g@addto@macro\bbtl@afterbabelhook{#1}}
+
+\let\bbtl@atendofbabelhook\@empty
+\newcommand\AtEndOfBabel[1]{%
+ \g@addto@macro\bbtl@atendofbabelhook{#1}}
+
+\let\bbtl@beforebabelhook\@empty
+\newcommand\BeforeBabel[1]{%
+ \g@addto@macro\bbtl@beforebabelhook{#1}}
+
+
+% Citations and cross refs
+% ~~~~~~~~~~~~~~~~~~~~~~~~
+
+\let\bbtl@ignorepackages\@empty
+
+\DeclareOption{nocitations}
+ {\g@addto@macro\bbtl@ignorepackages{,cite,natbib,}%
+ \AfterBabel{%
+ \bbtl@restore@org{nocite}%
+ \bbtl@restore@org{bibcite}%
+ \bbtl@restore@org{@bibitem}%S
+ \bbtl@restore@org{@citex}}}
+
+\DeclareOption{nocrossrefs}
+ {\g@addto@macro\bbtl@ignorepackages{,varioref,}%
+ \BeforeBabel{%
+ \bbtl@save@org{@newl@bel}}% babel DOESN'T save it!
+ \AfterBabel{%
+ \bbtl@restore@org{@newl@bel}%
+ \bbtl@restore@org{ref}% Robust
+ \bbtl@restore@org{pageref}}}% Robust
+
+% Shorthands
+% ~~~~~~~~~~
+%
+% New shorthands
+% --------------
+
+\DeclareOption{adaptive}%
+ {\AfterBabel{%
+ \let\bbtl@initiate@active@char\initiate@active@char
+ \let\initiate@active@char\bbtl@set@shorthand
+ \let\bbtl@declare@shorthand\declare@shorthand
+ \let\declare@shorthand\bbtl@declare
+ \let\bbl@activate\bbtl@activate
+ \let\bbtl@deactivate\bbl@deactivate
+ \let\bbl@deactivate\bbtl@restore}}
+
+% Do \bbtl@initiate@active@char but don't make the char active.
+% Not necessary and a source of bugs.
+
+\def\bbtl@set@shorthand#1{%
+ \expandafter\edef\csname bbtl@savecat\string#1\endcsname
+ {\the\catcode`#1}%
+ \bbtl@initiate@active@char{#1}%
+ \catcode`#1=\csname bbtl@savecat\string#1\endcsname\relax
+ \addto\bbtl@select{\shorthandon{#1}}}
+
+\def\bbtl@use@shorthand{%
+ \if@safe@actives
+ \bbl@afterelse
+ \string
+ \else
+ \bbl@afterfi
+ {\ifx\thepage\relax
+ \bbl@afterelse
+ \string
+ \else
+ \bbl@afterfi
+ \bbtl@use@sh
+ \fi}%
+ \fi}
+
+\def\bbtl@use@sh#1{%
+ \ifx\protect\@unexpandable@protect
+ \bbl@afterelse
+ \noexpand#1%
+ \else%
+ \bbl@afterfi
+ \textormath
+ {\csname active@char\string#1\endcsname}%
+ {\csname normal@char\string#1\endcsname}%
+ \fi}
+
+\gdef\bbtl@activate#1{%
+ \begingroup
+ \lccode`\~=`#1
+ \lowercase{%
+ \endgroup
+ \def~{\bbtl@use@shorthand~}}}
+
+\def\bbtl@restore#1{%
+ \shorthandon{#1}%
+ \begingroup
+ \lccode`\~=`#1
+ \lowercase{%
+ \endgroup
+ \bbtl@deactivate{~}}}
+
+\def\bbtl@declare#1#2{%
+ \@ifundefined{bbtl@savecat\expandafter\string\@firstoftwo#2\@empty}%
+ {\@gobble}%
+ {\bbtl@declare@shorthand{#1}{#2}}}
+
+% No shorthands
+% -------------
+
+% This is done after 'adaptive', if present.
+
+\DeclareOption{shorthands=off}%
+ {\AfterBabel{\bbl@doshorthands}}
+
+\def\babelshorthand#1{%
+ \def\bbtl@tempa{#1}%
+ \@ifundefined{bbtl@@\languagename @@\bbtl@meaning\bbtl@tempa}%
+ {#1}%
+ {\@nameuse{bbtl@@\languagename @@\bbtl@meaning\bbtl@tempa}}}
+
+% No config
+% ~~~~~~~~~
+% Make sure an unexpected local config doesn't spoil your document.
+% Use of config files is strongly discouraged, but some sites
+% use them
+
+\DeclareOption{noconfig}
+ {\PassOptionToPackage{babel}{noconfig}}
+
+% Captions
+% ~~~~~~~~
+
+% redefining names. Somewhat experimental.
+
+\def\bbtl@captions{%
+ \bbtl@elt\prefacename\bbtl@elt\refname\bbtl@elt\abstractname
+ \bbtl@elt\bibname\bbtl@elt\chaptername\bbtl@elt\appendixname
+ \bbtl@elt\contentsname\bbtl@elt\listfigurename
+ \bbtl@elt\listtablename\bbtl@elt\indexname
+ \bbtl@elt\figurename\bbtl@elt\tablename\bbtl@elt\partname
+ \bbtl@elt\enclname\bbtl@elt\ccname\bbtl@elt\headtoname
+ \bbtl@elt\pagename\bbtl@elt\seename\bbtl@elt\alsoname
+ \bbtl@elt\proofname\bbtl@elt\glossaryname}
+
+% 1: \captions... expanded #2 repl fun bbtl@f #3 \...name
+% \lang...name
+\def\bbtl@rep#1\@@\@@#2#3#4{%
+ \in@{#3}{#1}%
+ \ifin@
+ #2#1\@@\@@#3#4%
+ \else
+ \PackageWarningNoLine{babeltools}%
+ {No \string#3 in \bbtl@l}%
+ \fi}
+
+% \bbtl@f is a helper macro:
+% 1 \...name
+% bbtl@f:
+% #1 prev, #2 def of \...name, #3 after
+% #4 \...name, #5 \lang...name
+\DeclareOption{langcaptions}
+ {\def\bbtl@repdef#1{%
+ \def\bbtl@f##1#1##2##3\@@\@@##4##5{%
+ \def##5{##2}%
+ \@namedef{captions\bbtl@l}{##1##4{##5}##3}}}%
+ \def\bbtl@elt#1{%
+ \bbtl@repdef#1%
+ \@temptokena\expandafter\expandafter\expandafter{%
+ \csname captions\bbtl@l\endcsname}%
+ % If \lang...name undefined
+ \edef\bbtl@t{%
+ \noexpand\bbtl@rep
+ \the\@temptokena
+ \noexpand\@@\noexpand\@@
+ \noexpand\bbtl@f
+ \noexpand#1
+ \expandafter\noexpand
+ \csname\bbtl@l\expandafter\@gobble\string#1\endcsname}%
+ \bbtl@t}%
+ \def\bbtl@repdo{%
+ \@for\bbtl@l:=\bbtl@options\do{%
+ \@ifundefined{captions\bbtl@l}{}{%
+ \bbtl@captions}}}%
+ \AtEndOfBabel{\bbtl@repdo}}
+
+% Key=value package options
+% ~~~~~~~~~~~~~~~~~~~~~~~~~
+
+\def\bbtl@process#1=#2\bbtl@process#3{%
+ \expandafter\ifx\csname bbtl@o@#1\endcsname\@empty
+ \expandafter\edef\csname bbtl@o@#1\endcsname{#2}%
+ \DeclareOption{\CurrentOption}{}%
+ \fi}
+
+\DeclareOption*{%
+ \@expandtwoargs\in@{\string=}{\CurrentOption}%
+ \ifin@
+ \expandafter\bbtl@process\CurrentOption\bbtl@process\CurrentOption
+ \fi}
+
+% Process options
+% ~~~~~~~~~~~~~~~~
+
+\ProcessOptions
+
+% shorthands=... option is handled here.
+
+\ifx\bbtl@o@shorthands\@empty\else
+ \edef\bbtl@o@shorthands{\bbtl@meaning\bbtl@o@shorthands}%
+ \bbtl@ifshorthand{'}%
+ {\PassOptionsToPackage{activeacute}{babel}}{}
+ \bbtl@ifshorthand{`}%
+ {\PassOptionsToPackage{activegrave}{babel}}{}
+ \bbtl@ifshorthand{:}{}%
+ {\g@addto@macro\bbtl@ignorepackages{,hhline,}}
+% After any redefinition, the shorthand mechanism comes.
+ \AfterBabel{\bbl@doshorthands}
+\fi
+
+% The first \LdfInit loads the babel core (the sty file doesn't!)
+% That means babeltools is not compatible with classes loading
+% a language:
+
+\@ifundefined{ldf@finish}%
+ {\def\LdfInit{%
+ \expandafter\let\expandafter\bbtl@options
+ \csname opt@babel.sty\endcsname
+ \bbtl@beforebabelhook
+ \AtBeginDocument{%
+ \let\bbtl@ifpackageloaded\@ifpackageloaded
+ \def\@ifpackageloaded##1{%
+ \@expandtwoargs\in@{,##1,}{\bbtl@ignorepackages}%
+ \ifin@
+ \expandafter\@gobbletwo
+ \else
+ \expandafter\bbtl@ifpackageloaded
+ \fi
+ {##1}}}%
+ \chardef\atcatcode =\catcode`\@
+ \catcode`\@=11\relax
+ \input babel.def\relax
+ \catcode`\@ =\atcatcode
+ \let\atcatcode\relax
+ \bbtl@afterbabelhook
+ \AtEndOfPackage{\bbtl@atendofbabelhook}%
+ \LdfInit}}
+ {\PackageError{babeltools}%
+ {Too late -- babel has been loaded}%
+ {babeltools can be used only before babel.\MessageBreak
+ Very likely a package or the class has loaded it.}}
+
+\AtEndOfBabel{%
+ \AtBeginDocument{\let\@ifpackageloaded\bbtl@ifpackageloaded}}
+
+\bbtl@savedcatcodes
+
+\endinput
+
+MIT License
+-----------
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+
+
+
diff --git a/obsolete/macros/latex/contrib/babeltools/babeltools.tex b/obsolete/macros/latex/contrib/babeltools/babeltools.tex
new file mode 100644
index 0000000000..ddeb899ca2
--- /dev/null
+++ b/obsolete/macros/latex/contrib/babeltools/babeltools.tex
@@ -0,0 +1,140 @@
+%
+% Copyright (C) 2010-2019 Javier Bezos http://www.texnia.com
+%
+% This file may be distributed and/or modified under the conditions of
+% the MIT License. A version can be found at the end of this file.
+%
+
+\documentclass{article}
+
+\author{Javier Bezos}
+\title{\textsf{babeltools}\\%
+\Large Fixing (some) \textsf{babel} annoyances}
+
+\begin{document}
+
+\maketitle
+
+\begin{center}
+\fbox{\textbf{This package is deprecated. Use babel 3.9 and later instead.}}
+\end{center}
+
+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 available
+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 appropriate. 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 unnecessary 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
+appropriate.
+
+\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}
+
+MIT License
+-----------
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/obsolete/macros/latex/contrib/backrefx/README b/obsolete/macros/latex/contrib/backrefx/README
new file mode 100644
index 0000000000..ad90c5fdfe
--- /dev/null
+++ b/obsolete/macros/latex/contrib/backrefx/README
@@ -0,0 +1,58 @@
+ The backrefx package
+ (for bibliography back references)
+
+ Author: Danie Els
+ Copyright (c) 2002-2004 Danie Els
+ Licence: LaTeX Project Public License
+
+ ===============================================================
+ The backrefx package is now obsolete after the release of
+ backref v1.23, because all the functionality are now provided
+ by backref. This release of backrefx is only provided for
+ backward compatibility of existing documents.
+ ===============================================================
+
+
+DESCRIPTION
+
+ The backrefx package enhances the backref package of David
+ Carlisle and Sebastian Rahtz. It enables backref to print
+ the bibliographic back references in a more typographical
+ sound manner (similar to the back references in TeX Unbound
+ of Hoenig)
+
+INSTALLATION
+
+ The most basic installation is to copy backrefx.sty to your
+ working directory or to a directory where TeX can find it.
+
+ For a full installation, copy the following files to you
+ (local) TEXMF tree and into the specified directories.
+
+ STYLE FILES:
+
+ csvtools v1.24 : A LaTeX2e Package Providing Access to Data Saved in a CSV File
+
+
+
+Contents
+
+
+
+
+
+
+
+
+
+
+List of Examples
+
+
+
+
+
+
+Introduction
+
+ The csvtools package allows you to repeatedly perform
+ a set of LaTeX commands on data in each row
+ of a comma separated variable (CSV) file.
+ This can be used for mail merging, generating
+ tables etc.
+
+
+
\setcsvseparator{separator}
+
+
+For example, if your data is separated by colons instead of
+commas, do:
+
+\setcsvseparator{:}
+
+If your separator occurs within an entry, the entry must be
+enclosed in double quotes, for example:
+
+Name,Address,Telephone
+A.N. Other,"1 The Street,The Town",0123456789
+
+Be careful of TEX special characters occuring within a CSV
+file, for example:
+
+Name,Address,Telephone
+Jack \& Jill,"2 The Street,The Town",0123456789
+
+
+
+Mail Merging and Similar Applications
+
+
+
\applyCSVfile*[n]{filename}{text}
+
+
+Letters can be generated using data given in
+ each line from filename.
+ If the CSV file contains a header row, the
+ unstarred version of \applyCSVfile should
+ be used, otherwise the starred version \applyCSVfile*
+ should be used. The optional argument n
+ specifies on which line the actual data (not header line)
+ starts. The unstarred version defaults to line 2
+ (the header row is always assumed to be on line 1)
+ and the starred version defaults to 1.
+
+
+Name,Address,Time,Date
+
+ then the commands \insertName, \insertAddress,
+ \insertTime and \insertDate are
+ created, allowing you to use the entries in the first,
+ second, third and fourth columns of the current row.
+ If the header text contains non-alphabetical characters,
+ e.g. Full Name, then you will need to use
+ \insertbyname{text},
+ e.g. \insertbyname{Full Name}
.
+
+\field{1}
+indicates the first entry in the current row and \field{2}
+indicates the second entry in the current row.
+
+
+Example 1 (Mail Merging)
+
+ Suppose there is a file called details.csv that has the
+ following contents:
+
+Name,Address,Time,Date
+Miss A. Person,1 The Road\\The Town\\AB1 2XY,15.00,4th May 2004
+Mr A. N. Other,2 The Road\\The Town\\AB1 2XY,15.30,11th May 2004
+
+then the following code can be used to generate a letter for each
+person in the CSV file2:
+
+\applyCSVfile{details.csv}{%
+\begin{letter}{\insertName\\\insertAddress}
+\opening{Dear \insertName}
+
+You are invited to an interview at \insertTime\ on the \insertDate.
+
+\closing{Yours Sincerely}
+\end{letter}}
+
+ Note that you could also use \insertbyname{Name}
etc instead
+ of \insertName etc. Also note that you need to specify the
+ file extension when specifying the filename.
+
+Example 2 (Multiple Figures)
+
+ Suppose sample3.csv looks like:
+
+File,Caption
+circle.ps,A Circle
+rectangle.ps,A Rectangle
+triangle.ps,A Triangle
+
+ Assuming that the files circle.ps, rectangle.ps
+ and triangle.ps exist, then the following code will
+ generate a figure for each graphics file3:
+
+\applyCSVfile{sample3.csv}{
+\begin{figure}
+\centerline{\includegraphics{\insertFile}}
+\caption{\insertCaption}
+\end{figure}}
+
+ Note that in this example, you can't use \insertbyname{File}
.
+ (See Note 3 in Section 11.)
+
+Example 3 (Mail Merging using \field)
+
+ Suppose there is a file called details.csv that has the
+ following contents:
+
+Miss A. Person,1 The Road\\The Town\\AB1 2XY,15.00,4th May 2004
+Mr A. N. Other,2 The Road\\The Town\\AB1 2XY,15.30,11th May 2004
+
+In this case the data has no header file, so the starred version
+of \applyCSVfile must be used. Since there is no header
+file, you must use \field to access the entries:
+
+\applyCSVfile*{details.csv}{%
+\begin{letter}{\field{1}\\\field{2}}
+\opening{Dear \field{1}}
+
+You are invited to an interview at \field{3}\ on the \field{4}.
+
+\closing{Yours Sincerely}
+\end{letter}}
+
+
+Converting data in a CSV file into a tabular environment
+
+
+ \CSVtotabular{filename}{col-align}{first}{middle}{last}
+
+
filename is the name of the CSV file which must have a header row on line 1,
+ col-align is the column alignment argument that gets passed
+ to the tabular environment, first
+ is the code for the first line, middle is the code
+ for the middle lines and last is the code for the last line.
+ This is best demonstrated with an example.
+
+
+Example 4 (Aligning Data from a CSV file)
+
+ Suppose the file sample.csv looks like:
+
+Name,Assignment 1,Assignment 2,Total
+A. Smith,80,70,150
+B. Jones,60,80,140
+J. Doe,85,75,160
+,75,75,150
+
+ then the following code can be used to align the data:
+
+\CSVtotabular{sample.csv}{lccc}{%
+\bfseries Name &
+\bfseries Assignment 1&
+\bfseries Assignment 2&
+\bfseries Total\\}{%
+\insertName &
+\insertbyname{Assignment 1} &
+\insertbyname{Assignment 2} &
+\insertTotal\\}{%
+ &
+\insertbyname{Assignment 1} &
+\insertbyname{Assignment 2} &
+\insertTotal}
+
+ The result of this code is shown in
+ Table 14.
+
+
+
+
+
+Name
+Assignment 1
+Assignment 2
+Total
+
+A. Smith
+80
+70
+150
+
+B. Jones
+60
+80
+140
+
+J. Doe
+85
+75
+160
+
+
+75
+75
+150
+
+
+
+
+ \ifnextrowlast{last-code}{not-last-code}
+
+
+The command \ifnextrowlast can be used to vary what happens
+ on the last but one row. The following example illustrates
+ this by placing \hline\hline after the penultimate row.
+
+
+Example 5 (Adding Lines)
+
+
+\CSVtotabular{sample.csv}{|l|ccc|}{%
+\hline\bfseries Name &
+\bfseries Assignment 1&
+\bfseries Assignment 2&
+\bfseries Total\\\hline\hline}{%
+\insertName &
+\insertbyname{Assignment 1} &
+\insertbyname{Assignment 2} &
+\insertTotal
+\ifnextrowlast{\\\hline\hline}{\\}}{%
+ &
+\insertbyname{Assignment 1} &
+\insertbyname{Assignment 2} &
+\insertTotal\\\hline}
+
+See the PDF version (csvtools.pdf) of this
+documentation for an illustration of the results.
+
+Example 6 (Added Complexity)
+
+ In this example, \multicolumn is used to override
+ the column specifier for the first column in the
+ last row.
+
+\CSVtotabular{sample2.csv}{|l|ccc|}{%
+\hline\bfseries Name &
+\bfseries Assignment 1 &
+\bfseries Assignment 2 &
+\bfseries Total\\\hline\hline
+}{%
+\insertName &
+\insertbyname{Assignment 1} &
+\insertbyname{Assignment 2} &
+\insertTotal
+\ifnextrowlast{\\\hline\multicolumn{1}{l|}{}}{\\}
+}{%
+ &
+\insertbyname{Assignment 1} &
+\insertbyname{Assignment 2} &
+\insertTotal\\\cline{2-4}
+}
+
+ Notice that instead of placing \multicolumn{1}{l|}{}
+ at the start of the final argument, it is instead
+ placed in the first argument to \ifnextrowlast5.
+See the PDF version (csvtools.pdf) of this
+manual for an illustration of the results.
+
+Converting CSV file into longtable environment
+
+
+The command \CSVtolongtable works in the same way as \CSVtotabular but
+ creates a longtable environment instead of a tabular environment.
+
+
+Example 7 (Using a longtable environment)
+
+Suppose the CSV file in the previous example, contains, say, 100 entries.
+This will no longer fit onto one page, so it would be better to use
+CSVtolongtable instead. For example:
+
+\CSVtolongtable{sample.csv}{|l|ccc|}{%
+\caption{Student Marks}\label{tab:students}\\
+\hline
+\bfseries Name &
+\bfseries Assignment 1 &
+\bfseries Assignment 2 &
+\bfseries Total\\\hline
+\endfirsthead
+\caption[]{Student Marks}\\
+\hline
+\bfseries Name &
+\bfseries Assignment 1 &
+\bfseries Assignment 2 &
+\bfseries Total\\\hline
+\endhead
+\hline
+\multicolumn{3}{r}{\em Continued on next page}
+\endfoot
+\hline
+\endlastfoot}{%
+\insertName &
+\insertbyname{Assignment 1} &
+\insertbyname{Assignment 2} &
+\insertTotal
+\ifnextrowlast{\\\hline\hline}{\\}}{%
+ & \insertbyname{Assignment 1} &
+ \insertbyname{Assignment 2} &
+\insertTotal\\}
+
+
+Associated Counters
+
+
+
+Example 8 (Stripy Table)
+
+David Carlisle's colortbl package defines the command
+\rowcolor which enables you to specify the row colour.
+Suppose you want a stripy table6,
+ this can be achieved as follows:
+
+\CSVtotabular{sample2.csv}{lccc}{%
+\rowcolor{green}\bfseries Name &
+\bfseries Assignment 1 &
+\bfseries Assignment 2 &
+\bfseries Total\\\rowcolor{blue}
+}{%
+\insertName &
+\insertbyname{Assignment 1} &
+\insertbyname{Assignment 2} &
+\insertTotal
+\ifthenelse{\isodd{\value{csvrownumber}}}{%
+\\\rowcolor{green}}{\\\rowcolor{blue}}
+}{%
+ &
+\insertbyname{Assignment 1} &
+\insertbyname{Assignment 2} &
+\insertTotal
+}
+
+See the PDF version (csvtools.pdf)
+for an illustration of the resulting table.
+
+Example 9 (More Mail Merging)
+
+This is an example of mail merging where the letter reference
+is generated from the value of csvrownumber. The CSV file
+is as used in Example 1.
+
+\applyCSVfile{details.csv}{%
+\begin{letter}{\insertName\\\insertAddress}
+\opening{Dear \insertName}
+
+\textbf{Ref : } interview.\thecsvrownumber
+
+You are invited to an interview at \insertTime\ on the \insertDate.
+
+\closing{Yours Sincerely}
+\end{letter}}
+
+
+Cross-Referencing
+
+
+
+Example 10 (Labelling within \applyCSVfile)
+
+ Example 2 can be modified to
+ label each figure:
+
+\applyCSVfile{sample3.csv}{
+\begin{figure}
+\centerline{\includegraphics{\insertFile}}
+\caption{\insertCaption}
+\label{fig:pic\thecsvrownumber}
+\end{figure}}
+
+ This example uses
+ \label{fig:pic\thecsvrownumber}
, so the first figure
+generated by this \applyCSVfile command will have the
+label fig:pic1, the second fig:pic2 etc.
+
+Example 11 (Labelling within \applyCSVfile)
+
+ Modifying the previous example, we now have:
+
+\applyCSVfile{sample3.csv}{
+\begin{figure}
+\centerline{\includegraphics{\insertFile}}
+\caption{\insertCaption}
+\label{fig:\insertFile}
+\end{figure}}
+
+ The labels for each figure are now:
+ fig:circle.ps, fig:rectangle.ps
+ and fig:triangle.ps, respectively.
+
+Example 12 (Labelling within \CSVtotabular)
+
+ This example is slightly more complicated.
+ The CSV file, data.csv looks like:
+
+Incubation Temperature,Incubation Time,Time to Growth
+40,120,40
+40,90,60
+35,180,20
+
+The following code generates a table using the data
+ with an additional column that generates the experiment
+ number. (See note 8.)
+
+\begin{table}
+\caption{Time to Growth Experiments}
+\label{tab:exp}
+\vspace{10pt}
+\centering
+\CSVtotabular{data.csv}{cccc}{%
+ % Header Row
+\bfseries Experiment &
+\bfseries \begin{tabular}{c}Incubation\\Temperature\end{tabular} &
+\bfseries \begin{tabular}{c}Incubation\\Time\end{tabular} &
+\bfseries \begin{tabular}{c}Time\\to\\Growth\end{tabular}\\}{%
+ % Middle Rows
+\label{exp:\insertbyname{Incubation Temperature}:\insertbyname{Incubation Time}}
+\thecsvrownumber &
+\insertbyname{Incubation Temperature} &
+\insertbyname{Incubation Time} &
+\insertbyname{Time to Growth} \\}{%
+ % Final Row
+\label{exp:\insertbyname{Incubation Temperature}:\insertbyname{Incubation Time}}
+\thecsvrownumber &
+\insertbyname{Incubation Temperature} &
+\insertbyname{Incubation Time} &
+\insertbyname{Time to Growth}}
+\par
+\end{table}
+
+It can be seen from Table~\ref{tab:exp}, that
+Experiment~\ref{exp:35:180} had the shortest time to growth.
+
+ In this example, each experiment has the corresponding label
+ exp:Incubation Temperature:Incubation Time
+ so the first experiment has label exp:40:120, the
+ second experiment has the label exp:40:90 and the
+ third experiment has the label exp:35:180.
+
+
+
+
+
+
+Experiment
+
+
+
+Incubation
+
+Temperature
+
+
+
+Incubation
+
+Time
+
+
+
+Time
+
+to
+
+Growth
+
+1
+40
+120
+40
+
+2
+40
+90
+60
+
+3
+35
+180
+20
+
+
+Example 13 (Labelling within \CSVtotabular)
+
+
+\newcounter{maxgrowth}
+\newcounter{incT} % incubation temperature
+\newcounter{inct} % incubation time
+
+\begin{table}
+\caption{Time to Growth Experiments}
+\label{tab:exp}
+\vspace{10pt}
+\centering
+\CSVtotabular{data.csv}{cccc}{%
+ % Header row
+\bfseries Experiment &
+\bfseries \begin{tabular}{c}Incubation\\Temperature\end{tabular} &
+\bfseries \begin{tabular}{c}Incubation\\Time\end{tabular} &
+\bfseries \begin{tabular}{c}Time\\to\\Growth\end{tabular}\\}{%
+ % Middle rows
+\label{exp:\insertbyname{Incubation Temperature}:\insertbyname{Incubation Time}}
+\thecsvrownumber &
+\insertbyname{Incubation Temperature} &
+\insertbyname{Incubation Time} &
+\insertbyname{Time to Growth}%
+\ifthenelse{\value{maxgrowth}<\insertbyname{Time to Growth}}{%
+\setcounter{maxgrowth}{\insertbyname{Time to Growth}}%
+\setcounter{incT}{\insertbyname{Incubation Temperature}}%
+\setcounter{inct}{\insertbyname{Incubation Time}}}{}%
+\\}{%
+ % Last row
+\label{exp:\insertbyname{Incubation Temperature}:\insertbyname{Incubation Time}}
+\thecsvrownumber &
+\insertbyname{Incubation Temperature} &
+\insertbyname{Incubation Time} &
+\insertbyname{Time to Growth}%
+\ifthenelse{\value{maxgrowth}<\insertbyname{Time to Growth}}{%
+\setcounter{maxgrowth}{\insertbyname{Time to Growth}}%
+\setcounter{incT}{\insertbyname{Incubation Temperature}}%
+\setcounter{inct}{\insertbyname{Incubation Time}}}{}%
+}
+\par
+\end{table}
+
+As can be seen from Table~\ref{tab:exp},
+Experiment~\ref{exp:\theincT:\theinct}
+had the maximum time to growth, with
+incubation time \theinct,
+incubation temperature \theincT\ and
+time to growth, \themaxgrowth.
+
+
+
+Saving Entries
+
+ Entries can be saved using the command:
+
+
+
+ \csvSaveEntry[counter]{identifier}[empty text]
+
+
+where counter is a LaTeX counter, by default
+csvrownumber,
+ and identifier is the header entry. The entry
+ can then be used with the command:
+
+
+ \csvGetEntry{counter}{identifier}
+
+
+The final optional argument empty text to
+\csvSaveEntry is the text to use if the entry is blank.
+For example, \csvSaveEntry{Time}[MISSING DATA]
will
+print MISSING DATA if the Time field is blank.
+
+
+Example 14 (Saving Entries)
+
+ This example illustrates how you can use one CSV
+ file to access data in other CSV files.
+ This example has several CSV files:
+
+
+File index.csv:
+
+File,Temperature,NaCl,pH
+exp25a.csv,25,4.7,0.5
+exp25b.csv,25,4.8,1.5
+exp30a.csv,30,5.12,4.5
+
+ File exp25a.csv:
+
+Time,Logcount
+0,3.75
+23,3.9
+45,4.0
+
+ File exp25b.csv:
+
+Time,Logcount
+0,3.6
+60,3.8
+120,4.0
+
+ File exp30a.csv:
+
+Time,Logcount
+0,3.73
+23,3.67
+60,4.9
+
+
+
+\newcounter{maxexperiments}
+\applyCSVfile{sample5.csv}{%
+\stepcounter{maxexperiments}
+\csvSaveEntry{File}
+\csvSaveEntry{Temperature}
+\csvSaveEntry{NaCl}
+\csvSaveEntry{pH}
+}
+
+ The counter maxexperiments simply counts the number of
+ entries in index.csv.
+ The entries can now be used to generate a table for each
+ file listed in index.csv (the \whiledo command
+is defined in the ifthen package):
+
+\newcounter{experiment}
+\whiledo{\value{experiment}<\value{maxexperiments}}{%
+\stepcounter{experiment}
+\begin{table}
+\caption{Temperature = \protect\csvGetEntry{experiment}{Temperature},
+NaCl = \protect\csvGetEntry{experiment}{NaCl},
+pH = \protect\csvGetEntry{experiment}{pH}}
+\vspace{10pt}
+\centering
+\CSVtotabular{\csvGetEntry{experiment}{File}}{ll}{%
+Time & Log Count\\}{%
+\insertTime & \insertLogcount\\}{%
+\insertTime & \insertLogcount}
+
+\end{table}
+}
+
+ Note that \csvGetEntry needs to be \protected
+within the \caption command.
+
+
+\setcounter{experiment}{0}
+\whiledo{\value{experiment}<\value{maxexperiments}}{%
+\stepcounter{experiment}
+\ifthenelse{\equal{\csvGetEntry{experiment}{Temperature}}{25}}{%
+\begin{table}
+\caption{Temperature = \protect\csvGetEntry{experiment}{Temperature},
+NaCl = \protect\csvGetEntry{experiment}{NaCl},
+pH = \protect\csvGetEntry{experiment}{pH}}
+\vspace{10pt}
+\centering
+\CSVtotabular{\csvGetEntry{experiment}{File}}{ll}{%
+Time & Log Count\\}{%
+\insertTime & \insertLogcount\\}{%
+\insertTime & \insertLogcount}\par
+\end{table}}{}
+}
+
+
+
+Pie Charts (csvpie.sty)
+
+
+
+
+\csvpiechart[options]{variable}{filename}
+
+
+where filename is the name of the CSV file containing the
+data, and variable is the command indicating the entry that
+contains the value for the given segment.
+The starred version of \csvpiechart should be used if
+the CSV file has no header row.
+
+
+\newcommand{\csvpieouterlabel}{\field{1}}
+\newcommand{\csvpieinnerlabel}{\field{2}\%}
+
+This assumes that the second column contains the data, and the
+first column contains a description, but can be redefined
+as necessary.
+
+
+
+
+cutaway={1,2}
will separate
+the first two segments from the pie chart, and the two segments
+will also be separated from each other, whereas cutaway={1-2}
+will separate the first two segments from the pie chart, but will
+keep the two segments together.
+
+
+
\csvpiesegmentcol{n}{colour}
+
+
+where n is the segment number, and colour is a
+defined colour name. For example, if you want the first segment
+in the pie chart to be yellow, do:
+
+\csvpiesegmentcol{1}{yellow}
+
+There are 8 predefined segment colours, if your pie chart has
+more than 8 segments, you will need to specify the remainder.
+
+
+
\csvpiesegcolname{n}
+
+
+where n is the segment number. The \csvpiechart
+command uses \applyCSVfile, so the csvrownumber
+counter can be used. This means that you can change the text
+colour of the outer label to match the segment. For example:
+
+\renewcommand{\csvpieouterlabel}{%
+\color{\csvpiesegcolname{\value{csvrownumber}}}\field{2}}
+
+Note that \value must be used since n has to be
+a number.
+
+
+\usepackage[monochrome]{csvpie}
+
+or use the command \colorpiechartfalse prior to using \csvpiechart.
+To switch back to colour pie charts, use
+\colorpiecharttrue.
+
+
+Example 15 (A Pie Chart)
+
+Given a CSV file
+(called fruit.csv) containing:
+
+Name,Value
+Apples,20
+Pears,15
+"lemons,limes",30.5
+Peaches,24.5
+Cherries,10
+
+Then the value for each segment is given by the second column, so
+variable should be \field{2}
or \insertValue
.
+The following code creates a figure containing two
+pie charts from the above data (for an image, see the
+PDF version of the manual, csvtools.pdf):
+
+ % Change the way the labels are displayed
+\renewcommand{\csvpieinnerlabel}{\sffamily\insertValue\%}
+\renewcommand{\csvpieoutlabel}{%
+\color{\csvpiesegcolname{\value{csvrownumber}}}\sffamily\insertName}
+
+\begin{figure}
+\begin{center}
+\begin{tabular}{cc}
+\csvpiechart[start=45,cutaway={1,2}]{\insertValue}{fruit.csv} &
+\csvpiechart[start=45,cutaway={1-2}]{\insertValue}{fruit.csv} \\
+(a) & (b)
+\end{tabular}
+\end{center}
+\caption{Pie Chart Example (a) cutaway=\{1,2\} (b) cutaway=\{1-2\}}
+\end{figure}
+
+The inner and outer labels have been
+redefined to use a sans-serif font, and the outer label is in
+the same colour as its corresponding segment.
+Both pie charts have a starting angle of 45 degrees, and they
+have the first two segments cutaway, but in (a)
+the first two segments are separated from each other, whereas in
+(b), the first two segments are joined, although separated
+from the rest of the pie chart.
+
+
+\csvpiechart*[cutaway={1-2}]{\field{2}}{fruit.csv}
+
+
+
+Sorting Data (csvsort.sty)
+
+
+
+
+
+
+
+(Default: sort=alphabetical ascending)
+
+sort=\field{1}
)
+
+
+
+These commands are analogous to \applyCSVfile and
+\applyCSVfile*, except that the data is first sorted.
+The optional argument is a key=value list. The keys are the same
+as those used in the package options, described above. These options
+only apply to the given instance of the command, whereas the
+package options apply to all csvsort commands, unless
+overridden in options. Example, suppose you have a file
+called unsorted.csv which looks like:
+
+First Name,Surname,Age
+Zephram,Lang,60
+Fred,Lang,10
+Barney,Langley,25
+Jane,Brown,5
+Adam,Smith,24
+Bert,Jones,18
+
+Then
+
+\sortapplyCSVfile[sort=alphabetical,variable=\insertSurname]{unsorted.csv}{%
+\insertSurname, \insertbyname{First Name}. Age: \insertAge\par}
+
+will produce the following output:
+
+\sortapplyCSVfile[sort=alphabetical,
+variable={\insertSurname,\insertbyname{First Name}}]{unsorted.csv}{%
+\insertSurname, \insertbyname{First Name}. Age: \insertAge\par}
+
+As with \applyCSVfile, you must use \field if
+you use the starred version:
+
+\sortapplyCSVfile*[sort=alphabetical,
+variable={\field{2},\field{1}}]{unsorted.csv}{%
+\field{2}, \field{1}. Age: \field{3}\par}
+
+
+
+
+\sortCSVtotabularoptionsfilenamecol-specfirst rowall but last rowlast row
+
+\sortCSVtolongtableoptionsfilenamecol-specfirst rowall but last rowlast row
+
+Are analogous to \CSVtotabular and \CSVtolongtable,
+where, again, options is a list of key=value pairs, the same
+as \sortapplyCSVfile. Using the same example data as above,
+the following command will sort the data according to age (in
+numerical order) and place in a tabular environment:
+
+\sortCSVtotabular[sort=numerical,variable=\insertAge]{unsorted.csv}{llr}{%
+\bfseries Surname & \bfseries First Name & \bfseries Age\\}{%
+\insertSurname & \insertbyname{First Name} & \insertAge\\}{%
+\insertSurname & \insertbyname{First Name} & \insertAge}
+
+
+
+The csvtools.pl Perl Script
+
+
+
+
csvtools.pl in-file out-file
+
+
+where in-file is the name of your file that contains the
+\applyCSVfile, \CSVtotabular etc
+ commands, and out-file is a new file which will be created by csvtools.pl. This new
+ file will be the same as in-file except that all
+occurances of \applyCSVfile, \CSVtolongtable,
+\CSVtotabular and \csvpiechart will be replaced
+by the relevant data extracted from the named CSV files.
+
+
+Example 16 (csvtools.pl -- Aligning Data)
+
+ Suppose the file mydoc.tex contains the code given in
+Example 4, with the associated CSV file
+sample.csv also given in that example. Then if you do:
+
+csvtools.pl mydoc.tex mydocnew.tex
+
+the file mydocnew.tex will be created which will be
+identical to mydoc.tex except the lines
+ containing the code \CSVtotabular{sample.csv}{lccc}{
...}{
...}{
...}
will be replaced
+with the lines:
+
+ % \CSVtotabular{sample.csv}... converted using csvtools.pl
+ %>> START INSERT
+ \begin{tabular}{lccc}
+ \bfseries Name &
+ \bfseries Assignment 1 &
+ \bfseries Assignment 2 &
+ \bfseries Total\\
+ A. Smith&80&70&150\\
+ B. Jones&60&80&140\\
+ J. Doe&85&75&160\\
+ &75&75&150
+ \end{tabular}%<< END INSERT
+
+
+Notes
+
+
+
+
+
+
+which perl
+
+
+
+
perl csvtools.pl in-file out-file
+
+
+\CSVtotabular{\csvGetEntry{experiment}{File}}{ll}{...
+
+(see Example 14), but it won't be able to understand,
+say,
+
+\newcommand{\filename}{\csvGetEntry{experiment}{File}}
+\CSVtotabular{\filename}{ll}{...
+
+It can pick up on \addtocounter, \stepcounter,
+\refstepcounter and \setcounter but only if
+they are used explicitly in the named .tex file. (It
+ignores any files that have been included using
+\input, \include etc.)
+
+
+
+
+
+Bugs/Drawbacks/``Features''
+
+
+
+
+\centerline{\includegraphics{\insertbyname{File}}}
+
+ will cause an error, as \insertbyname{File}
doesn't get
+ fully expanded by the time it gets passed to
+ \includegraphics, and will prevent
+\includegraphics from
+ finding the file. It is possible to get around this using
+ TEX's \edef command:
+
+\edef\psfilename{\insertbyname{File}}
+\centerline{\includegraphics{\psfilename}}
+
+
+misplaced \noalign
error, instead you
+need to put it at the end of the first or middle
+code. (See Example 6.)
+
+
+Contact Details
+
+
+
+School of Computing Sciences
+
+University of East Anglia
+
+Norwich. NR4 7TJ. England.
+
+
http://theoval.cmp.uea.ac.uk/~nlct/
+Footnotes
+
+
+
+
+Nicola L. C. Talbot.
+School of Computing Sciences.
+University of East Anglia.
+Last Modified: 2007-06-26
+
+
+
diff --git a/obsolete/macros/latex/contrib/csvtools/script/csvtools.pl b/obsolete/macros/latex/contrib/csvtools/script/csvtools.pl
new file mode 100644
index 0000000000..131134124e
--- /dev/null
+++ b/obsolete/macros/latex/contrib/csvtools/script/csvtools.pl
@@ -0,0 +1,1995 @@
+#!/usr/bin/perl -w
+
+# File : csvtools.pl
+# Author : Dr Nicola Talbot
+# Date : 26 June 2007
+# Description : Perl script to accompany csvtools.sty
+# : Allows you to substitute \CSVtotabular, \CSVtolongtable and \applyCSVfile commands with the appropriate LaTeX code
+# Version : 0.6b (1 September 2006).
+
+# usage : csvtools
+
++
+The datetime package is a LATEX2ε package that provides various different formats for +\today, and provides commands for displaying the current time. If you only want the +time commands but not the date changing commands, you can pass the option nodate +to the package. + +
Since version 2.4, the datetime package has been separated into two packages: +datetime and fmtcount. When I originally created this package, I defined the commands, +\ordinal etc which could be used in the definition of \today. Since then, I have +extended the number of commands available that can be used to display the value +of a LATEX counter, however it seems more appropriate to define all these +counter-related commands in a separate package. The fmtcount package is now +distributed separately from the datetime package, and will also need to be +installed. + +
As from version 2.42, the datetime package is now compatible with babel, however +you must load the datetime package after the babel package. For example: + + + +
++
+
+There are various declarations that change the effect of \today. The change can be +localised by placing the declaration within a group. +
As from version 2.43, the numerical date formats (such as \ddmmyyyydate) use the +command +
+to separate the numbers. So, for example, if you want to hyphens instead of slashes, you +can do: + + + +
++
+
++This declaration will redefine \today to produce the current date displayed in +the form 2000/03/08. (You can redefine \dateseparator to - to change to +2000-03-08.) +
+
++This declaration will redefine \today to produce the current date displayed in the form +Wednesday 8th March, 2000 if the package option dayofweek is used, or 8th March, 2000 +if the package option nodayofweek is used. +
+This declaration will redefine \today to produce the current date displayed in the form +Wed 8th Mar, 2000 if the package option dayofweek is used, or 8th Mar, 2000 if the +package option nodayofweek is used. +
+This declaration will redefine \today to produce the current date displayed in the form +08/03/2000. +
+This declaration will redefine \today to produce the current date displayed in the form +8/3/2000. +
+This declaration will redefine \today to produce the current date displayed in the form +08/03/00. +
+This declaration will redefine \today to produce the current date displayed in the form +8/3/00. +
+This declaration will redefine \today to produce the current date displayed +in the form: Wednesday the Eighth of March, Two Thousand if the package +option dayofweek is used, or Eighth of March, Two Thousand if the package +option nodayofweek is used. Note that \textdate is defined for use with +English, it won’t look right if it is used when another language has been +selected1. +If you want to define a similar command for another language, you will first need to +check that the fmtcount package supports that language. +
+
++This declaration will redefine \today to produce the current date displayed in the form +March 8, 2000. (As TEX and LATEX do by default.) +
+This declaration will redefine \today to produce the current date displayed in the form +03/08/2000. +
+This declaration will redefine \today to produce the current date displayed in the form +3/8/2000. +
+This declaration will redefine \today to produce the current date displayed in the form +03/08/00. +
+This declaration will redefine \today to produce the current date displayed in the form +3/8/00. +
+
+In addition to the above, the declarations \date⟨lang⟩ are available for all languages +defined either by calling babel prior to datetime or by passing the language name as an + + + +option to datetime. See §5 Defining New Date Formats if you want to define your own +customised date format. +
+
+The current time is displayed using the command +
+
A specific time can be displayed using the command +
+where ⟨hour⟩ is a number from 0 to 23, and ⟨minute⟩ and ⟨second⟩ are numbers from 0 +to 59. +
The format can be changed using the declaration +
+where ⟨style⟩ is the name of the format. Predefined formats are: +
New time formats can be defined using the command: +
+where ⟨name⟩ is the name of the new format (used in \settimeformat), and ⟨format⟩ is +how to format the time. Within ⟨format⟩ you can use the counters HOUR (number of +hours after midnight), MINUTE (number of minutes past the hour), SECOND (number +of seconds) HOURXII (number of hours after midnight/midday), TOHOUR (the next +hour) and TOMINUTE (number of minutes to the next hour), and the corresponding +commands: \THEHOUR, \THEMINUTE, \THESECOND, \THEHOURXII, \THETOHOUR and +\THETOMINUTE. +
For example, to define a new time format that uses a dot instead of a colon: + + + +
+You then need to switch to this new format before you can use it: + + + +
++
As from version 2.43, if you only want to change the separator, you can simply +redefine +
+instead of defining a new time format. For example: + + + +
+The xxivtime format will now work like the dottime format defined above. +
+
++This command2 +prints the date in the format required for PDF files, e.g. if the date is 1 May 2004 and +time is 22:02, \pdfdate will print 20040501220200. The reason this date format is +separate from all the others is because the other form doesn’t get properly expanded by +PDFTEX. (This command is defined regardless of whether the package option nodate +is called.) Example: + + + +
+Note that PDFTEX introduced the new primitive \pdfcreationdate in +version 1.30.0, so \pdfdate isn’t required with newer versions of PDFTEX. +(\pdfcreationdate is better than \pdfdate as it also stores the time zone.) +
There are two commands that print the name of the current month: +
+prints the current month name in full, e.g. August, and +
+prints the abbreviated month name, e.g. Aug. Both \monthname and \shortmonthname +take an optional argument (a number from 1 to 12) if the name of a specific +month is required. For example, \monthname[6] will produced the output: +June. +
The day of the week is computed using the algorithm documented at +http://userpages.wittenburg.edu/bshelburne/Comp150/DayOfWeek.htm. This +algorithm works for any date between 1st Jan, 1901 and 31st Dec, 2099. The following +macros display the day of week for a given date: +
+prints the day of week for the specified date. For example, + + + +
+will produce the output: Thursday. +
+prints the abbreviated name for the day of week for the specified date. For +example + + + +
+will produce the output: Thu. +
+This TEX conditional can be used to determine whether or not the option dayofweek +has been passed to the package. For example: + + + +
+will only display the day of week if the dayofweek option was passed to datetime. +Alternatively, you can use David Carlisle’s ifthen package: + + + +
++
The command +
+displays ⟨number⟩ as a date-type ordinal. If the current language is English, this will +simply pass the argument to \ordinalnum (defined in the fmtcount package), if the +current language is Breton, Welsh or French, a superscript will only be added if ⟨number⟩ +is 1, otherwise only ⟨number⟩ will be displayed. +
The macro3 +
+formats the specified date according to the current format of +\today4. +(Arguments must all be integers.) For example, in combination with \longdate, the +command + + + +
+will produce the output: Monday 27th September, 2004. +
You can ensure that a number is displayed with at least two digits using the +command +
+
+
+New date formats can be defined using the command: +
+where ⟨name⟩ is the name of the new format, and ⟨format⟩ is how to format the date. +Within the argument ⟨format⟩ you can use the commands \THEDAY, \THEMONTH and +\THEYEAR to represent the relevant day, month and year, or you can use the counters +DAY, MONTH and YEAR if you want to use \ordinal etc. Once you have defined the +new date format, you can then switch to it using the declaration \⟨name⟩ (i.e. the name +you specified preceded by a backslash), and subsequent calls to \today and +\formatdate will use your new format. +
For example, suppose you want to define a new date format called, say, mydate, that +will typeset the date in the form: 8-3-2002, then you can do: + + + +
+\newdateformat will then define the declaration \mydate which can be used to switch +to your new format. In the following example, two new date formats are defined, +and they are then selected to produce two different formats for the current +date: + + + +
+If the current date is, say, 8th March, 2002, the above code will produce the following: +Dash: 08-03-2002. US: March 8th, 2002. +
Note that \THEDAY etc and DAY etc have no real meaning outside \newdateformat +(this is why they are in uppercase). Incidentally, the dashdate format is not really +necessary, as you can achieve this format using: + + + +
++
Another note: in the above code, \ordinal was used to illustrate the use of the DAY +counter. It is better to use \ordinaldate instead: + + + +
++
+
+It is possible to save a date for later use using the command: +5 +
+
This date can later be displayed using the same format as that used by +\formatdate using the command: +
+
Individual elements of the date can be extracted using the commands: +
+
+
+
+
+The following commands are defined by the datetime package: +
+ + + ++
+The following options may be passed to this package: +
The default options are: long, raise, dayofweek and 24hr. +
+
+If you use the ngerman package, you must use datetime’s ngerman package option if you +want the date displayed in the same form as ngerman. You must also load ngerman +before you load datetime. Similarly for the german package. +
If you want to use the babel package, you must load it before you load the datetime +package. This is because the babel \date⟨lang⟩ commands redefine \today, whereas the +datetime package redefines \today to use \formatdate, and the date formatting +commands (such as \longdate) redefine \formatdate rather than \today. This ensures +consistent formatting of the dates whether you use \today or \formatdate. Therefore, +the datetime package has to redefine all the \date⟨lang⟩ commands accordingly. Thus the +multilingual date support is mostly limited to that provided by babel. Additional +support, such as the day of week names and abbreviations, are only supplied for +those languages that I know, or that other people have been able to supply for +me. +
As from v2.56, the package options supplied to datetime override babel’s date +format. For example: + + + +
+will use ddmmyyyy date format regardless of language. Note that if you use a +declaration instead of a package option, for example: + + + +
+the date format will be switched back to \datefrench or \datespanish whenever the +language is set. You can use +
+to always use {⟨declaration⟩} whenever the language is set. For example: + + + +
++
The commands \monthname and \shortmonthname, will produce the month name in +the current language. If you want the month name in a specific language, you +can use the command \monthname⟨lang⟩. For example, \monthnamefrench[6] +will produce the output: juin. Note that \textdate is formatted for English +dates, and won’t look right if used with another language setting. If you want +a textual date, the fmtcount package (which is loaded by datetime) defines +some commands which display a number or ordinal as a word, but it only has +very limited multilingual support. See the fmtcount documentation for further +details. +
+
+TEX provides \day, \month and \year registers. In addition, datetime provides the +registers: \currenthour, \currentminute and \currentsecond. Note that old +distributions of TEX will always have \currentsecond set to zero. +
+
+As from Version 2.4, the datetime package will read in settings from the configuration +file datetime.cfg, if it exists, which will override the default package options. +For example, suppose you prefer a short date without the day of week by +default, you will need to create a file called datetime.cfg that contains the +line: + + + +
+The file datetime.cfg should then go somewhere on the TEX path. Now all you need +to do is: + + + +
+without having to specify the short and nodayofweek options. +
You can also use this file to define and set your own date styles. For example, you +could create a configuration file that has the following lines: + + + +
+Whenever you use the datetime package, it will now use this format by default. +
+
+Version 2.43 and above of the datetime bundle supplies the LaTeX2HTML style file +datetime.perl. This file should be placed in a directory searched by LaTeX2HTML. +The following limitations apply to the LaTeX2HTML styles: +
+This, I agree, is an unpleasant cludge. +
+
+There is a datetime FAQ available at: http://www.dickimaw-books.com/faqs/datetimefaq.html. +
+A +
+ B
+babel package 7, 8, 9, 10, 11, 12, 13
+
C
+\currenthour 14
+\currentminute 15
+\currentsecond 16
+\currenttime 17
+
D
+\dateseparator 18, 19, 20
+datetime package 21, 22
+datetime2 package 23
+DAY (counter) 24, 25, 26
+\day 27
+\dayofweekname 28
+\ddmmyydate 29
+\ddmmyyyydate 30, 31
+\displaydate 32
+\dmyydate 33
+\dmyyyydate 34
+
F
+fmtcount package 35, 36, 37, 38, 39, 40, 41
+\formatdate 42, 43, 44, 45, 46
+\formattime 47
+
G
+
+
+
+german package 48
+\getdateday 49
+\getdatemonth 50
+\getdateyear 51
+
H
+\halfpast 52
+HOUR (counter) 53
+HOURXII (counter) 54
+
I
+\ifshowdow 55
+ifthen package 56
+
L
+\longdate 57, 58, 59, 60, 61
+
M
+\mdyydate 62
+\mdyyyydate 63
+\midnight 64
+MINUTE (counter) 65
+\mmddyydate 66
+\mmddyyyydate 67
+MONTH (counter) 68
+\month 69
+\monthname 70, 71
+
N
+\newdate 72
+\newdateformat 73, 74, 75
+\newtimeformat 76
+ngerman package 77, 78, 79
+\noon 80
+
O
+\oclockstring 81
+\ordinal 82, 83, 84
+
+
+
+\ordinaldate 85, 86
+\ordinalnum 87
+
P
+package options:
+ 12hr 88
+ 24hr 89, 90
+ dayofweek 91, 92, 93, 94, 95, 96, 97
+ ddmmyy 98
+ ddmmyyyy 99, 100
+ dmyy 101
+ dmyyyy 102
+ hhmmss 103, 104
+ iso 105
+ level 106
+ long 107, 108
+ mdyy 109
+ mdyyyy 110
+ mmddyy 111
+ mmddyyyy 112
+ ngerman 113
+ nodate 114, 115, 116
+ nodayofweek 117, 118, 119, 120, 121
+ oclock 122
+ raise 123, 124
+ short 125, 126
+ text 127
+ us 128
+ yyyymmdd 129
+\pdfdate 130
+\pmname 131, 132
+\pmstring 133, 134
+
Q
+\quarterpast 135
+\quarterto 136
+
S
+SECOND (counter) 137
+seminar package 138
+\setdefaultdate 139
+\settimeformat 140, 141
+\shortdate 142, 143
+
+
+
+\shortdayofweekname 144
+\shortmonthname 145, 146
+
T
+\textdate 147, 148, 149
+\THEDAY 150, 151
+\THEHOUR 152
+\THEHOURXII 153
+\THEMINUTE 154
+\THEMONTH 155
+\THESECOND 156
+\THETOHOUR 157
+\THETOMINUTE 158
+\THEYEAR 159
+\timeseparator 160, 161
+\today 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178
+TOHOUR (counter) 179
+TOMINUTE (counter) 180
+\twodigit 181
+
U
+\usdate 182
+
1in fact, you may get an error from the fmtcount package if you are using a language that it doesn’t +support.
+2thanks to Ulrich Dirr for asking about this
+3Note the name change since version 1.1. The command name was changed from \thedate to +\formatdate to avoid a name clash when using the seminar class file.
+4To be more precise, \today is defined to be \formatdate{\day}{\month}{\year} where +\longdate etc change the definition of \formatdate
+5Thanks to Denis Bitouzé for asking about this
+ +
Nicola L.C. Talbot
+20th July 2006
++ +
+ +
+You need to make sure you have downloaded the following three +files: +
+glossary.ins +glossary.dtx +README ++To extract the code from the glossary.dtx file, you +will need to run the installation file through LaTeX: +
+latex glossary.ins ++This will create the following files: +
+glossary.sty +glossary.perl +makeglos.pl +makeglos.bat ++along with several sample files. The file glossary.sty +should be placed somewhere in the LaTeX path, e.g. +texmf/tex/latex/glossary/ or +localtexmf/tex/latex/glossary/. Remember to update the +TEX database if you are installing this package for the first time. +The file glossary.perl is a LaTeX2HTML style file, and +should be placed in the LaTeX2HTML style file directory (usually +latex2html/styles/). The file makeglos.pl +is a Perl script which calls makeindex. If you are +using UNIX or Linux, you will need to set the permissions so +that you can execute the file: +
+chmod a+x makeglos.pl ++You should then place this file somewhere on your path. +(You may also need to edit the first line of +this file, if perl is located in a directory other than
/usr/bin/
1.)
+
+
+If you are not using UNIX or Linux etc, you may have to explicitly
+load the file into Perl, so you would need to do
+perl makeglos.pl instead of just makeglos.pl.
+If you are using Windows, a batch file, makeglos.bat
+is provided which will run Perl on makeglos.pl.
+Both makeglos.pl and makeglos.bat should
+be placed somewhere specified by the PATH environment
+variable. (For example, put them both in the same
+directory as makeindex, which will probably
+be in \texmf\miktex\bin\
).
+
+
+If you don't have Perl installed on your system, you can just use +makeindex, only you will have to remember all the +command line switches, and you won't be able to merge entries +that have the same name, but different descriptions. + +
+Note that if you are updating the glossary package, it is +a good idea to update makeglos.pl as it may also +have been modified. + +
+ +
+The standard LaTeX command \makeglossary (analogous to \makeindex)
+ should be placed in the document preamble. If this command
+is omitted, glossary information will be ignored. Glossary
+entries are generated using the command
+\glossary{
key-val list}
.
+ This command is a slightly modified version of the standard
+\glossary command, in order to separate out the
+information into entry-name and entry-description.
+The argument to \glossary must be a comma-separated
+list of key=value pairs. The following keys are
+available:
+
+\glossary{name={singular matrix}, + description={A matrix with zero determinant}} ++ The following example sorts on the text U instead of +
$\mathcal{U}$
:
++\glossary{name={$\mathcal{U}$}, + description={The universal set}, + sort=U} ++Note that you should always use the sort +key if the name key contains commands, this is particularly +important if you are using hyperlinks, as the target is constructed +from the name key if the sort key is omitted. + +
+In the glossary, each entry is followed by a list of page numbers
+that correspond to the pages where the relevant \glossary
+command is placed. By default the numbers are formatted in the
+current font, but the page number format for individual entries can be
+changed using the format key. This should be the name of a
+LaTeX formatting command without the preceding \
(as with the
+|
operator in \index.) For example:
+
+\glossary{name={$\mathbb{R}$}, + description={The set of real numbers}, + sort=R, + format=textbf} ++In addition, the following formats are also available: + +
+\newcommand{\hyperbfit}[2][\gls@number]{% +\textbf{\itshape\glshyper{#1}{#2}}} ++As can be seen from the definition, all the \hyperxx +commands have an optional argument. This argument is the name of the +counter being used. You do not need to worry about this argument if +you only use these commands within the \glossary command. +So the previous example can simply be rewritten as: +
+\glossary{name={$\mathbb{R}$}, + description={The set of real numbers}, + sort=R, + format=hyperbf} ++ +
+Note: although the numbers in the glossary are referred to +as ``page'' numbers in this manual, they may in fact refer to some +other counter, such as the section counter, depending on +whether the number key has been used. + +
+As with the \index command, care must be taken if you
+want to use the special characters: @
|
"
and
+!
. These characters should be preceded by the double quote
+character. For example:
+
+\glossary{name={$"|\mathcal{S}"|$, +description=The cardinality of the set \mathcal{S}}} ++There is no provision for sub-entries, as these are +generally only applicable in an index, and not in a glossary. + +
+As from version 2.14, there is an additional command available: + +
+
+\xglossary{
gls-entry}{
text}
+
+
+This is equivalent to
+text\glossary{
gls-entry}
,
+where text will be made a hyper link to the
+relevant entry in the glossary, if hyper
+links are supported.
+
+
+ +
+It is very cumbersome having to use the \glossary command +throughout your document, every time you use a term that you want in +your glossary. This is particularly true for terms with a long +description. The glossary package provides a means +of storing the glossary information at the beginning of the document, +and then using it whenever required. It is strongly recommended +that you use this approach, rather than explicity using the +\glossary command. + +
+The following command:
+
+
\storeglosentry[ gls-type]{ label}{ gls-entry}
+
+
+
+can be used to store glossary information, where label is
+a unique label assigned to this entry. The information
+can then be used later with any of the following commands:
+
+
+
+\useglosentry[ opt]{ label}
+
\useGlosentry[ opt]{ label}{ text}
+
\gls[ opt]{ label}
+
+
+
\useglosentry adds the glossary entry whose label is given by
+label to the appropriate glossary,
+\useGlosentry adds the glossary entry, and
+makes text a hyperlink to that entry (if hyperlinks are
+supported). The third command, \gls, is like
+\useGlosentry, but forms text from the name
+given in the glossary entry.
+
+
+Returning to an earlier example, instead of typing: +
+\glossary{name={$\mathcal{U}$}, + description={The universal set}, + sort=U} ++every time you want to add this entry to the glossary, you +can instead store the information: + +
+\storeglosentry{glos:U}{name={$\mathcal{U}$}, + description={The universal set}, + sort=U} ++Now, instead of continually copying and pasting the glossary command +for this entry (which can have quite a large description +field), you can use either: +
+\useglosentry{glos:U} ++which is equivalent to: +
+\glossary{name={$\mathcal{U}$}, + description={The universal set}, + sort=U} ++or you can use: +
+\useGlosentry{glos:U}{text} ++which is equivalent to: +
+\xglossary{name={$\mathcal{U}$}, + description={The universal set}, + sort=U}{text} ++or you can use: +
+\gls{glos:U} ++which is equivalent to: +
+\xglossary{name={$\mathcal{U}$}, + description={The universal set}, + sort=U}{$\mathcal{U}$} ++If you want to use glossary entries in an equation, it is better +to use \ensuremath instead of
$
...$
.
+For example:
++\storeglosentry{Gamma}{name=\ensuremath{\Gamma(z)}, +description=Gamma function, +sort=Gamma} ++You can then use this entry in either text or math mode: +
+The \useGlosentry{Gamma}{Gamma function} is defined as +\begin{equation} +\gls{Gamma} = \int_{0}^{\infty}e^{-t}t^{z-1}\,dt +\end{equation} ++If you are using hyper links, and you want to use +\useGlosentry within math mode, you must use +\ensuremath: +
+\begin{equation} +\useGlosentry{Gamma}{\ensuremath{\Gamma(x+1)}} = x\Gamma(x) +\end{equation} ++ +
+The optional argument to \storeglosentry (gls-type) +indicates the glossary type (see +later to find out how to define new +glossary types). If omitted, the standard glossary is used. + +
+The optional argument to \useglosentry, +\useGlosentry and \gls (opt) allows you to +add additional information to the glossary entry, for example: +
+\useglosentry[format=textbf]{glos:U} ++is equivalent to: +
+\glossary{name={$\mathcal{U}$}, + description={The universal set}, + sort=U, + format=textbf} ++Since version 2.4, \storeglosentry is robust, and +\protect should no longer be needed, however +the identifying label, label, should not +contain any special characters. + +
+As from version 2.36, if you want to use all glossary entries
+which have been defined using \storeglosentry, do:
+\useglosentry{*}
. (Note that this option is not
+available for \useGlosentry and \gls.)
+
+
+ +
+Whenever a glossary entry is used, either explicity using +\glossary or \xglossary or implicitly using +\useglosentry, \useGlosentry and \gls, +the information is saved in a file with the extension glo +(unless the \makeglossary command is omitted, in which case +the glossary information is simply ignored.) A makeindex +style file +(ist) is also created, which is customized for the +document, and can be passed to makeindex. + +
+For example, suppose your document is called mydoc.tex, +the glossary will be saved in the file +mydoc.glo, and the makeindex style +file mydoc.ist will be created. + These files can then be passed to makeindex as follows: +
+makeindex -s mydoc.ist -t mydoc.glg -o mydoc.gls mydoc.glo ++which generates the output file mydoc.gls, +with transcript written to +mydoc.glg. + +
+The Perl script makeglos.pl provided with this package +allows you to use makeindex without having to remember +all the command line options. The command +
+makeglos.pl mydoc ++will perform the command: +
+makeindex -s mydoc.ist -t mydoc.glg -o mydoc.gls mydoc.glo ++In addition, makeglos.pl also takes the option +-m which can be used to collate entries where the +same name has multiple descriptions. + +
+makeglos.pl has the following syntax: +
+makeglos.pl [-ilqrgm] [-s sty] [-o gls] [-t log] [-p num] <filename> ++where all switches, apart from -m are the same as +those for makeindex. If there are multiple glossary types +(see +later) +and the file extension is omitted, makeglos.pl will +iterate through each glossary type (it will pick up the relevant +information from the auxiliary file). + +
+The name of the ist file can be changed by redefining +the command \istfilename +before \makeglossary. +For example: +
+\renewcommand{\istfilename}{foo.ist} +\makeglossary ++Only one ist file will be created per document, even if +you have multiple glossaries with different styles. The only +circumstance where you will need multiple ist files for +a single document is when you have multiple glossaries that use +different counters with different compositors, but this is rarely +likely to occur. + +
+Creation of the ist file can be suppressed by issuing +the command \noist before +\makeglossary. It will also be suppressed when the +command \nofiles is used, or if the command +\makeglossary is omitted. + +
+It should be noted that there are a few packages that can +cause problems with the creation of the ist file, +for example ngerman. If you encounter problems +when LaTeX is processing the \makeglossary command, +or if you get errors from makeindex complaining about +the style file, this is the most probable cause. +See later for +information on how to fix this. + +
+ +
+Once the gls file has been created by +makeindex (as described in the previous + section) the glossary can then be included in the document with +the command \printglossary. + If chapters are defined, the glossary will start +with +
+\chapter*{\glossaryname} ++If not, it will start with +
+\section*{\glossaryname} ++The format of the main body of the glossary depends on the +options passed to the package. + +
+ +
+The package options must be specified as a comma-separated list +of key=value pairs. Available options are: +
+
+
+
+ +
+
+
+
+
+
+
+
+You can set up your own preferred defaults in a configuration
+file.
+The file must be called glossary.cfg and
+should be placed somewhere on the TEX path. In this file you
+can use the command
+\glossarypackageoptions{
option-list}
+
+where option-list is a comma-separated list of
+key=value pairs, as passed to the
+glossary
+package. Note that this command may only be used in the
+configuration file.
+
+
+ +
+ +
+A new type of glossary can be defined using the command:
+
+
\newglossarytype[
log-ext]{
name}{
out-ext}{
in-ext}[
style list]
+
+
+For example, suppose you want your document to have a separate
+index of terms and index of notation,
+you could use \makeglossary, \glossary,
+\xglossary and \printglossary for the first
+glossary, and define a new type of glossary called say,
+notation, using
+
+\newglossarytype[nlg]{notation}{not}{ntn} ++which will create the analogous commands: +\makenotation, \notation, \xnotation +and \printnotation which can be used for the second +glossary. + +
+As from version 2.3, \newglossarytype now has an +additional optional argument style list. This should +be a comma separated list of key=value pairs +that can be used to specify the style of the new glossary. +If omitted, the new glossary will have the same format +as the main glossary. The following options are available: +number, style, header, border and +cols. These can take the same values as those +given in the package options (described in section 6). + +
+The command \newglossarytype should only occur in the
+preamble. The new commands
+ \makename, \
name,
+\x
name and \printname all have the
+same format as their ``glossary'' counter-parts.
+
+
+The glossary information will be saved to a file +with the extension given by out-ext (analogous to +glo), which can then be passed to makeindex +either directly or via makeglos.pl, +and the file to be read in (i.e. the file created by +makeindex) will have the extension in-ext +(analogous to gls). + +
+The optional argument log-ext indicates +the extension for the makeindex log file, if omitted the +extension glg is used. This is not used by LaTeX, +however makeglos.pl reads in this information from +the LaTeX auxiliary file and passes it to makeindex. + +
+For the above notation +example, if your document is called, say, mydoc.tex, + you will need to do the following: +
+latex mydoc +makeglos.pl mydoc +latex mydoc ++(You may need to do an extra
latex mydoc
to get
+cross-references up-to-date.) Note that if you don't specify the
+file extension when using makeglos.pl, it will
+check the transcript file from the LaTeX run to determine
+all the glossary types, so, for this example,
++makeglos.pl mydoc ++is equivalent to: +
+makeglos.pl mydoc.glo +makeglos.pl mydoc.not ++since makeglos.pl has read in the information +for the notation glossary type from the file +mydoc.log. + +
+If you don't have Perl installed +on your system, or for any other reason are unable to use +makeglos.pl, you can call makeindex +explicitly: +
+latex mydoc +makeindex -s mydoc.ist -t mydoc.glg -o mydoc.gls mydoc.glo +makeindex -s mydoc.ist -t mydoc.nlg -o mydoc.ntn mydoc.not +latex mydoc ++ +
+Note that you can use the command
+\printglossary[name]
+instead of \print
name.
+These two commands have the same effect when using LaTeX,
+however, they have a slightly different effect when
+using LaTeX2HTML (see later).
+
+
+If the command \
glossary-typename
+is defined, (e.g. \notationname
in the above example)
+this will be used as the title for the specified
+glossary. If this command is not defined, \glossaryname
+will be used instead.
+If the command \short
glossary-typename
+is defined, (e.g. \shortnotationname in the above
+example) this will be used for the table of contents
+entry, otherwise \
glossary-typename
will
+be used instead.
+For example:
+
+\newglossarytype[nlg]{notation}{not}{ntn} +\newcommand{\notationname}{Index of Notation} +\newcommand{\shortnotationname}{Notation} ++ +
+ +
+The glossary package provides the command:
+
+
\newacronym[ cmd-name]{ acronym}{ long}{ glossary entry}
+
+
+
+which can be used to define acronyms. The argument long
+is the full name, the argument acronym is the acronym for
+long and glossary entry is the glossary information
+in the form used by the \glossary command. If the
+optional argument cmd-name is missing,
+\newacronym will create a command called
+\
acronym, otherwise it will create a command
+called \
cmd-name (henceforth denoted \acr-name).
+This command can then be used throughout the text. The first
+instance of this command is equivalent to:
+
+
long (\xacronym{
name=long (acronym),glossary entry}{
acronym}
)
+
+
+subsequent instances will be equivalent to:
+
+
\xacronym{
name=long (acronym),glossary entry}{
acronym}
+
+
+The command \acr-name also has a starred
+version, which will make the first letter of long
+uppercase (for use at the start of a sentence).
+
+
+Note that if you want to change the format of the acronym, +for example, if you want the acronym to appear in small caps, +you will need to not only use the optional argument, but you +will also need to use the sort key, otherwise you +will get an error. For example: +
+\newacronym[SVM]{\textsc{svm}}{Support Vector Machine}% +{description=Statistical pattern recognition +technique,sort=svm} ++ +
+If the package option acronym is not set (default) +\xacronym, is a synonym for \xglossary, and +the acronyms will appear in the main glossary (remember to +specify \makeglossary and \printglossary). +If the package option acronym=true is specified, a +new glossary type called acronym will be defined as: +
+\newglossarytype[alg]{acronym}{acr}{acn} +\providecommand{\acronymname}{List of Acronyms} ++You will then need to use the commands \makeacronym +and \printacronym to make the list of acronyms appear. +You will also need to run the acr file through +makeindex (or makeglos.pl). For example: +
+makeindex -s mydoc.ist -t mydoc.alg -o mydoc.acn mydoc.acr ++alternatively: +
+makeglos.pl mydoc ++Note that the package option acronym=true is only +appropriate if you want both a glossary and a separate list of +acronyms. If you do not write in English, you can set up your +own language definition +for \acronymname in the configuration file +glossarycfg. For example: +
+\newcommand{\acronymname}{Akronyme} ++(If glossary.cfg does not exist, create a new file, add the +appropriate definition of \acronymname, and save it to the +same directory as glossary.sty.) + +
+The name key does not need to appear in glossary
+entry, as it is constructed from long and
+acronym. By default this will be in the form:
+long (acronym), however the format can be
+overridden using the
+command:
+
+
\setacronymnamefmt{format}
+
+
+Within format the following commands may
+be used to represent long and acronym:
+\glolong and
+\gloshort. For example,
+suppose you just want the acronym to appear in the glossary entry,
+and not its full length name, then you would need to do:
+
+\setacronymnamefmt{\gloshort} ++ +
+As from version 2.32, you can also modify the way the description
+key is formatted for acronyms using:
+
+
\setacronymdescfmt{format}
+
+
+Within format you may use the commands \glolong
+and \gloshort (as above), and you can also use
+the command \glodesc which is the description as
+specified by the description key in
+\newacronym. This means that if you are using
+a tabular style glossary, you can have the abbreviated
+form in one column and the long form in the second column
+with the description. For example, the following:
+
+\setacronymnamefmt{\gloshort} +\setacronymdescfmt{\glolong: \glodesc} +\newacronym{svm}{support vector machine}{description=Statistical +pattern recognition technique} ++will generate a glossary entry of the form: +
+\glossary{name=svm,description=support vector machine: Statistical +pattern recognition technique} ++Note that if you omit \glodesc from +\setacronymdescfmt the description specified +in \newacronym will be ignored. So +
+\setacronymnamefmt{\gloshort} +\setacronymdescfmt{\glolong} +\newacronym{svm}{support vector machine}{description=Statistical +pattern recognition technique} ++will generate a glossary entry of the form: +
+\glossary{name=svm,description=support vector machine} ++ +
+You will need to specify the name key explicitly if +the name contains a makeindex special character. +For example: +
+\newacronym{RNA}{Ribonukleins\"aure}{name={Ribonukleins\""aure (RNA)}} ++Note that this will override any formatting specified by +\setacronymnamefmt. + +
+Given an acronym named acr-name (the command name +associated with the acronym as defined in +\newacronym without the preceding backslash), +the following commands are also available: + +
+
+
+
+\useacronym[
insert]{
acr-name}
+
+
+This command can be used instead of \acr-name.
+\useacronym also has a starred version equivalent to
+\acr-name*.
+The optional argument insert allows you to insert text
+after long, if this is the first occurrence of the
+acronym, or after the acronym on subsequent occurrences.
+
+
+
+
+
+\resetacronym{
acr-name}
+
+
+This command will cause the next use of \acr-name
+to produce the long version. To reset all acronyms
+do \resetallacronyms.
+
+
+
+
+
+\unsetacronym{
acr-name}
+
+
+This command will cause all subsequent uses of
+\acr-name to produce the short version.
+To unset all acronyms
+do \unsetallacronyms.
+
+
+
+
+
+\ifacronymfirstuse{
acr-name}{
true text}{
false text}
+
+
+This will test if the acronym has been used yet. If it has been
+used, true text will be implemented, otherwise
+false text will be implemented.
+
+
+The long and short forms of an acronym can be produced explicitly
+without a corresponding glossary entry, using the commands:
+
+
\acrln{
acr-name}
+
\acrsh{
acr-name}
+
+
+Or, alternatively:
+
+
\acr-namelong
+
\acr-nameshort
+
+
+The first two commands (\acrln and \acrsh)
+have a starred form that makes the first letter uppercase.
+The other two commands, simply contain long and
+acronym.
+
+
+Note that since these four commands do not generate glossary +entries they will therefore not contain any hyperlinks, even if +you have specified the hyper package option. They are +provided for use in situations where the associated glossary +command may cause problems (e.g. in a sectioning command.) + +
+Note that, as with all LaTeX commands, spaces following
+command names are ignored so if, for example, you defined
+a new acronym called, say, SVM, then the command \SVM
will
+ignore any spaces following it. To force a space, you
+can either place an empty set of braces after the command
+name (e.g. \SVM{}
) or use
+\_ i.e. a backslash followed by
+a space (e.g. \SVM\
). Alternatively, as from
+version 2.22, if you load the xspace package
+before loading the glossary package, spaces will
+be put in automatically using \xspace.
+
+
+If you want the acronym to appear in a particular font, +for example, small caps, you can redefine the command +\acronymfont. For example: +
+\renewcommand{\acronymfont}[1]{\textsc{#1}} ++The default definition of \acronymfont is: +
+\newcommand{\acronymfont}[1]{#1} ++ +
+ +
+
+\newacronym{SVM}{Support Vector Machine}{description=Statistical +pattern recognition technique} ++This will define the command \SVM. The first time this +command is used will display the text: Support Vector Machine +(SVM). Subsequent use will simply display: SVM. The next +example uses the optional argument cmd-name since the +acronym contains a non-alphabetical character: +
+\newacronym[KSVM]{K-SVM}{Kernel Support Vector +Machine}{description=Statistical pattern recognition +technique using the ``kernel trick''} ++This will define the command \KSVM. The first time +this command is used will display the text: Kernel Support Vector +Machine (K-SVM). Subsequent use will simply display: K-SVM. + +
+To test whether or not an acronym has been used: +
+\ifacronymfirstuse{SVM}{a}{an} \SVM\ is \ldots ++If the acronym has not been used, the following text will +be produced: +
+\chapter{An overview of the \protect\SVM} +\resetacronym{SVM} +The \SVM\ \ldots ++Note the use of \protect (see +note 15.) In fact, in this situation +it would be better to do: +
+\chapter[An overview of the \SVMlong]{An overview of the \protect\SVM} +\resetacronym{SVM} +The \SVM\ \ldots ++ +
+Now suppose you want the text: support vector machine, +instead of Support Vector Machine (i.e. you don't like the +uppercase letters). You can define the acronym as follows: +
+\newacronym{SVM}{support vector machine}{description=Statistical +pattern recognition technique} ++however, if the command \SVM occurs at the start of the +sentence, you would clearly want the first letter as an +uppercase letter. This can be done using \SVM* instead +of \SVM. For example: +
+\SVM*\ techniques are widely used \ldots ++This will then come out as: Support vector machine (SVM) +techniques are widely used ...(Assuming this is the first +use of either \SVM or \SVM*.) + +
+Alternatively, \useacronym{SVM}
can be used instead of
+\SVM. For example:
+
+\useacronym*[s]{SVM} are widely used in the area of pattern +recognition. ++If this is the first use of the acronym SVM, it will produce the +following text: +
+ +
Command | +Default Value | +
---|---|
\glossaryname | +Glossary | +
\shortglossaryname | +\glossaryname | +
\entryname | +Notation | +
\descriptionname | +Description | +
+The command \shortglossaryname is used for the +page headers and table of contents entry. + Any text required before or after the glossary can be added +by redefining the commands \glossarypreamble +and \glossarypostamble. +For example. +
+\renewcommand{\glossarypreamble}{Page numbers in +italic indicate the main definition\par} ++By default, \glossarypreamble and \glossarypostamble do nothing. + +
+Any text required before or after the list of page numbers +are specified by the commands \glsbeforenum + +and \glsafternum. +By default, these commands do nothing, any redefinition +of these commands should come somewhere before the +relevant \printglossary command. For example: +
+\printglossary +\renewcommand{\glsbeforenum}{(} +\renewcommand{\glsafternum}{)} +\printnotation ++This will put the page number list in brackets for the +second glossary, but not the first. + +
+Individual glossaries can have their styles changed either
+by setting the style in the final optional argument
+to \newglossarystyle (see
+earlier)
+or using the command:
+
+
\setglossarystyle[type]{style list}
+
+
+For example:
+
+\setglossarystyle[acronym]{style=long,border=true,cols=2} ++If type is omitted, the change is applied to the main +glossary. + +
+The command \setglossary{
key-val list}
+can be used to modify some of the glossary settings. The argument
+key-val list is a comma-separated list of
+key=value pairs. Available keys are:
+
+
+\setglossary{glsnumformat=textit} ++To suppress numbering altogether, you can do: +
+\setglossary{glsnumformat=ignore} ++ +
+
&
, or if
+style=altlist,
+in which case it is simply a space4. If the package option number=none is
+specified, glodelim will have an empty value (unless
+cols=3 is specified,
+where, again, it will have the value &
.)
+This setting corresponds to the delim_0 key in the
+makeindex style file.
+
++Note that if you want a new line between the description +and the list of page numbers you will need to use +\noexpand. For example: +
+\setglossary{glodelim={\noexpand\newline}} ++ +
+
+
--
. If the
+package option number=none is chosen, the value is set
+to empty.
+
++
+
\\
for the tabular-type styles. Note that
+delimT is separate from \glsafternum.
+
++For example, if you are using a 2 column tabular style, +and you want a blank line after every entry (not just +after every group) you can do the following: +
+\setglossary{delimT={\cr & \cr},gloskip={}} ++Note the use of \cr instead of
\\
and
+gloskip is set to nothing otherwise there would be
+a double space between groups.
++\setglossary{glsnumformat=ignore} ++is equivalent to +
+\setglossary{glsnumformat=ignore,delimN={},delimR={}} ++ +
+As from version 2.4, +you can insert text between groups by redefining the +commands \glogroupSymbols, +\glogroupNumbers, \glogroupA ... \glogroupZ. For example, if you are using one +of the list styles, the following will print the appropriate +heading in bold, followed by a gap: +
+\renewcommand{\glogroupSymbols}{\textbf{Symbols}\indexspace} +\renewcommand{\glogroupNumbers}{\textbf{Numbers}\indexspace} +\renewcommand{\glogroupA}{\textbf{A}\indexspace} +....% similar lines omitted +\renewcommand{\glosgroupZ}{\textbf{Z}\indexspace} ++ +
+The start and end of the main body of the glossary is given by the commands: +\beforeglossary and +\afterglossary. +If the style=list +or style=altlist +package options are chosen these commands simply begin and end +the description +environment, otherwise these commands begin and end the +longtable or +supertabular +environment with argument specified by +\glossaryalignment5. + +
+The glossary package no longer conflicts with the array +package. Changes can now be made to \glossaryalignment +regardless of whether or not the array +package has been used. + +
+The command \gloitem indicates
+what to do at the start of each glossary entry.
+This command takes one argument, which will be the text specified by the name key
+in the \glossary command. In the case of the
+style=list option,
+\gloitem{
text}
+will do
+
+\item[
text]
+
+
+or if style=altlist:
+
+\item[
text]\mbox{}\par
+
+
+otherwise it will do
+
+
text &
+
+
+This command corresponds to the item_0 key in the
+makeindex style file.
+
+
+If the glossary has a tabular style with a header row +(header=true and either style=long or +style=super), then the header row for cols=2 +will be given by: +
+\bfseries\entryname & \bfseries \descriptionname\\ ++and the header row for cols=3 will be given by: +
+\bfseries\entryname & \bfseries\descriptionname & +\bfseries\glspageheader\\ ++(It may also contain \hline\hline if the +border key is set.) + +
+If you want to override this, you need to define the command +\glossaryheader6. + +
+For example, if you are using a tabular style with cols=2, +and you want the \descriptionname to be centred, you could +do: +
+\newcommand{\glossaryheader}{\bfseries\entryname & + \hfil\bfseries\descriptionname\\} ++ +
+If you want an extra row below the header row, you can define +the command\glossarysubheader + +For example, if you are using cols=3, and you want an +extra row after the header row, you can do: +
+\newcommand{\glossarysubheader}{ & & \\} ++ +
+The command \glosstail indicates what to do at the end of +the longtable or supertabular environment. + +
+The width of the second column for the tabular-type styles is given by the length
+\descriptionwidth. This value can be changed using
+the \setlength command (the default value is 0.6\linewidth
).
+
+
+ +
+pdflatex sampleSec +makeglos.pl sampleSec +pdflatex sampleSec +pdflatex sampleSec ++If you don't want to use makeglos.pl, you will need +to do +
+makeindex -s sampleSec.ist -t sampleSec.glg -o sampleSec.gls sampleSec.glo ++ +
+
+latex sampleNtn +makeglos.pl sampleNtn +latex sampleNtn +latex sampleNtn ++If you don't want to use makeglos.pl, you will need +to do +
+makeindex -s sampleNtn.ist -t sampleNtn.glg -o sampleNtn.gls sampleNtn.glo +makeindex -s sampleNtn.ist -t sampleNtn.nlg -o sampleNtn.ntn sampleNtn.not ++ +
+
+
+latex sampleEq +makeglos.pl sampleEq +latex sampleEq ++If you don't want to use makeglos.pl, you will need +to do +
+makeindex -s sampleEq.ist -t sampleEq.glg -o sampleEq.gls sampleEq.glo ++ +
+
+latex sampleEqPg +makeglos.pl sampleEqPg +latex sampleEqPg ++If you don't want to use makeglos.pl, you will need +to do +
+makeindex -s sampleEqPg.ist -t sampleEqPg.glg -o sampleEqPg.gls sampleEqPg.glo ++ +
+
+pdflatex sampleAcr +makeglos.pl sampleAcr +pdflatex sampleAcr +pdflatex sampleAcr ++If you don't want to use makeglos.pl, you will need +to do +
+makeindex -s sampleAcr.ist -t sampleAcr.glg -o sampleAcr.gls sampleAcr.glo ++ +
+
+pdflatex sample +makeglos.pl -m sample +pdflatex sample +pdflatex sample ++(Depending on the configuration of your system, you +may have to do perl makeglos.pl instead of +just makeglos.pl) + +
+If you don't want to use makeglos.pl, you will need +to do +
+makeindex -s sample.ist -t sample.glg -o sample.gls sample.glo ++however, the entries with the same name but multiple descriptions +will not be merged. You will also have to given them different sort +keys otherwise you will get duplicate hyper targets. + +
+
+latex sample4col +makeglos.pl sample4col +latex sample4col ++ +
+
+ +
+A LaTeX2HTML Perl script, glossary.perl, is +provided with this package for those wishing to use the +glossary package with the LaTeX2HTML translator. +The file glossary.perl should be extracted +along with glossary.sty when you run the +installation script (glossary.ins) through LaTeX. + +
+ +
+ +
+
\print
name instead of
+\printglossary[
name]
, where
+name is the name of the glossary type.
+
++
+
+
+
""
, "|
, "!
+and "@
will be correctly translated, unless they
+occur within a maths environment. This is because
+the maths environment is translated before being
+passed to \glossary. You can overcome this
+by doing, e.g.:
+{latexonly}
+\glossary{name=$"|\mathcal{S}"|$,description=cardinality of set
+$\mathcal{S}$,sort=cardinality}
+{latexonly}
+{htmlonly}
+\glossary{name=$|\mathcal{S}|$,description=cardinality of set
+$\mathcal{S}$,sort=cardinality}
+{htmlonly}
+
++Alternative, you can use \mid instead: +
+\glossary{name=$\mid\mathcal{S}\mid$,description=cardinality of +set $\mathcal{S}$,sort=cardinality} ++ +
+
+
+
+ +
+This is a list of common problems, for a more up-to-date FAQ, see +http://theoval.cmp.uea.ac.uk/~nlct/packages/faq/. + +
+ +
+Check the following: + +
+
+
+ +
+
+9 attributes redefined, 0 ignored ++If you have a number other than 0 ignored, then there is something +wrong with the ist file. Some packages can cause +problems with the creation of this file, see +item 16 below. +
+
+
+
+If you have defined a new glossary type, have you checked +all the analogous commands to the above? + +
+
+Have you used the acronym=true package option? If no, +check the answers to the previous item, if yes, make sure +you have used \makeacronym and \printacronym. +Have you used any of the acronyms you have defined? Remember +that \acrsh, \acrln, +\acr-nameshort and +\acr-namelong don't generate entries +in the list of acronyms, where \acr-name is the +name of an acronym command. + +
+
+By default, if any of your acronym commands occur within a +group (this includes environments which form implicit grouping) +the effect will be local to that group. You can either unset +the acronym outside the group, or use the global +package option. + +
+
+Don't use this command it's obsolete, use +\storeglosentry instead. + +
+
+Check the following + +
+
+
"
? If so, have you preceded them
+with a double quote character?
++Check the makeindex log file to see if there are +any error messages. + +
+
+LaTeX treats multiple spaces equivalent to a single space, but makeindex +takes spaces into account when determining whether two entries are identical. +For example: +
+\glossary{name=Identity matrix, +description=diagonal matrix with 1's along the diagonal} ++and +
+\glossary{name=Identity matrix, +description=diagonal matrix with 1's along the diagonal} ++will be treated as different entries by makeindex, +because the first has only one space +between `Identity' and `matrix' and the second has two. +The easiest way to ensure consistency is to use +\storeglosentry together with \useglosentry, +\useGlosentry or \gls. + +
+
+Suppose you've made an error in the \glossary command. For example: +
+\glossary{name=Java,description=A programming language,format=texbf} ++In this case textbf has been mis-spelt. This error will be copied to the glo file, +which in turn will be copied to the gls file by +makeindex. A subsequent run of LaTeX will +read this error in. If you fix the error in your main document, the error will still be read in from +the gls file. The best thing to do is to delete the +gls file, and try again. + +
+
+This may occur if you have long entry names, and you are using
+either the style=long or style=super
+options. The width of the description column is proportional to
+the line width (in fact, it's 0.6\linewidth
)
+but the first column is as wide as the widest entry name. You
+can either redefine \glossaryalignment to change the
+column specifications, or use one of the list-type styles.
+
+
+
+You may need to LaTeX your document again (just as you have to do +with \tableofcontents, \listoffigures etc). + +
+
+The glossary package uses the keyval +package to extract the information from key=value +comma separated lists. You need to make sure the syntax is correct. +If your value contains a +comma, you will need to enclose value in curly braces. See the keyval documentation for +further information7. + +
+
+Check the following: + +
+
+This has been fixed in version 2.01. + +
+
~
in \newacronym.
+
++This has been fixed in version 2.1. + +
+
+! Package array Error: Illegal pream-token (\glossaryalignment): `c' used. ++ +
+The glossary package used to conflict with the +array package. This was fixed in version 2.1. +As from version 2.3, it doesn't matter whether you load +the glossary package before or after the +array package. + +
+
+Use of \@chapter doesn't match its definition ++or +
+! Argument of \@sect has an extra } ++ +
+If you want to use an acronym command in a moving argument (such as a chapter heading) +you need to \protect it first. Note that if you do put an acronym in a chapter etc +heading, it will be expanded for the first time in the table of contents, not +in the chapter heading. The best way to get around this is to use the +optional argument, e.g. +
+\chapter[Introduction to Kernel Support Vector Machines]{Introduction +to \protect\KSVM} ++You will also need to do this if you are using bookmarks in a PDF document. + +
+Alternatively, you can do: +
+\resetacronym{KSVM} +\chapter{Introduction to \protect\KSVM} ++or if you are using PDFLaTeX: +
+\resetacronym{KSVM} +\chapter{Introduction to \texorpdfstring{\protect\KSVM}{KSVM}} ++ +
+
+This problem is caused by the fact that ngerman +redefines the effect of the double quote +character, but this character is used in the creation of the +ist makeindex style file. +Try one of the following methods: + +
+\usepackage{glossary} +\makeglossary +\usepackage{ngerman} ++ +
+
+\usepackage{ngerman} +\usepackage{glossary} +\noist\makeglossary ++ +
+
+keyword "\\glossaryentry" +preamble "\\begin{theglossary}" +postamble "\n\\end{theglossary}\n" +group_skip "\\gloskip " +item_0 "\n\\gloitem " +delim_0 "\n\\glodelim " +page_compositor "-" +delim_n "\\delimN " +delim_r "\\delimR " ++
+
+unable to extract name from glossary item: ++ +
+You are using an old version of makeglos.pl with a +new version of the glossary package. You will need +to update your version makeglos.pl. +
+ +
+The commands described in this section are now obsolete, but +are currently still provided for backwards compatibility. Their +use is deprecated. + +
+
+\saveglosentry{ name}{description}
+
+This command has now been replaced by \storeglosentry.
+
+
+The command \glsprimaryfmt has now been removed. + +
+The package option hyperacronym is now superseded by the package option +hyper. This option was implemented prior to the +introduction of the command \xglossary. Since the +acronyms now use \xglossary, there is no difference +between the hyperacronym and hyper options. +This option has a boolean value: + +
+ +
+ +
+I would like to thank all the many people who have made suggestions +and pointed out bugs. + +
+ +
+
+
+
+
/usr/bin/
1This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either +version 1.3 of this license or any later version.
+Abstract
+Obsolete package for Greek in text.
+The lgrx package is obsoleted by greek-fontenc and greek-inputenc.
+The new package greek-fontenc provides a comprehensive LGR +font encoding file lgrenc.def, that supersedes both this +bundles lgrxenc.def and the minimal lgrenc.def +that used to be part of babel-greek
+The file lgrenc.dfu (support for Unicode input) moved to +the greek-inputenc package.
+alphabeta.sty enables Unicode input in math mode,
+textalpha.sty and alphabeta.sty require lgrenc.def +from greek-fontenc instead of lgrxenc.def,
+lgrxenc.def now loads lgrenc.def and adds some +backwards compatibility definitions.
+alphabeta.sty and textalpha.sty moved to greek-fontenc +and now also support XeTeX/LuaTeX.
+To update existing documents, replace, e.g.,
+\usepackage[LGRx,T1]{fontenc} ++
with
+\usepackage[LGR,T1]{fontenc} ++
No change is required for documents using the textalpha or alphabeta +packages now bundled with greek-fontenc.
+backwards compatibility font encoding file
+test document
+This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either +version 1.3 of this license or any later version.
+Abstract
+Obsolete font encoding file for Greek in text.
+For new documents, use lgrenc.def from greek-fontenc (which +is also required by this file).
+Contents
+ +0.1 |
+2010-03-31 |
+initial attempt |
+
0.2 |
+2010-04-20 |
+diacritics dropped in UPPERCASE |
+
0.3 |
+2010-06-08 |
+handle Titlecase and UPPERCASE extending +\@uclclist |
+
0.3.1 |
+2010-06-10 |
+code cleanup: replace dummy accent hack +with TextCommand |
+
0.4 |
+2010-06-15 |
+more text symbols |
+
0.4.1 |
+2010-08-06 |
+prevent multiple evaluation |
+
0.5 |
+2010-08-27 |
+support \textalpha … \textOmega |
+
0.5.1 |
+2012-05-08 |
+upload to CTAN |
+
0.6 |
+2012-06-29 |
+\TextGreek wrapper command (used in lgrenc.dfu), +aliases for puenc.def compatibility |
+
0.6.1 |
+2013-02-12 |
+\@uclclist entries for PU aliases |
+
0.7 |
+2013-05-03 |
+documentation update, new accent macros names |
+
0.8 |
+2013-05-30 |
+backwards compatibility file for new lgrenc.def |
+
This file is only kept for backwards compatibility with existing documents.
+For new documents, use lgrenc.def from greek-fontenc (which is also +required by this file).
+Select font encodings T1 (as default) and LGR:
+\usepackage[LGR,T1]{fontenc} ++
Select font encodings T1 and (as default) LGR:
+\usepackage[T1,LGR]{fontenc} ++
Babel’s “greek†option and the textalpha and alphabeta packages also load +lgrenc.def, so after any of the following lines, “LGR†is declared and +set up as a font encoding:
+\usepackage[greek,english]{babel} % default language English + +\usepackage[greek,english]{babel} % default language Greek + +\usepackage{textalpha} + +\usepackage{alphabeta} ++
\ProvidesFile{lgrxenc.def} +[2013/05/30 v0.8 comprehensive LGR Greek Font Encoding definitions] ++
To declare and set up the LGR font encoding, we use the successor file +lgrenc.def from greek-fontenc:
+\input{lgrenc.def} ++
\TextGreek is now called \ensuregreek:
+\DeclareTextCommand{\TextGreek}{LGR}[1]{#1} ++
Compatibility aliases (defined via TextCommand so that up/downcasing works +without the need for additional uclclist entries.
+Names from the athnum package:
+\DeclareTextCommand{\PiDelta}{LGR}{\pentedeka} % GREEK ACROPHONIC ATTIC FIFTY +\DeclareTextCommand{\PiEta}{LGR}{\pentehekaton} % GREEK ACROPHONIC ATTIC FIVE HUNDRED +\DeclareTextCommand{\PiChi}{LGR}{\penteqilioi} % GREEK ACROPHONIC ATTIC FIVE THOUSAND +\DeclareTextCommand{\PiMu}{LGR}{\pentemurioi} % GREEK ACROPHONIC ATTIC FIFTY THOUSAND ++
Names from babel’s greek.ldf and teubner
+\DeclareTextCommand{\vardigamma}{LGR}{\textvarstigma} % greek.ldf +\DeclareTextCommand{\ddigamma}{LGR}{\textdigamma} % greek.ldf +\DeclareTextCommand{\Digamma}{LGR}{\textDigamma} % greek.ldf + +\DeclareTextCommand{\stigma}{LGR}{\textstigma} % Ï› (greek.ldf, teubner) +\DeclareTextCommand{\varstigma}{LGR}{\textvarstigma} % stigma variant (CB.enc, teubner) +\DeclareTextCommand{\koppa}{LGR}{\textkoppa} % ÏŸ (greek small letter koppa) +\DeclareTextCommand{\qoppa}{LGR}{\textqoppa} % Ï™ (archaic koppa) +\DeclareTextCommand{\Qoppa}{LGR}{\textQoppa} % Ϙ (archaic Koppa) +\DeclareTextCommand{\Stigma}{LGR}{\textStigma} % Ïš (teubner) in some fonts ϹΤ ligature +\DeclareTextCommand{\Sampi}{LGR}{\textSampi} % Ï +\DeclareTextCommand{\sampi}{LGR}{\textsampi} % Ï¡ +\DeclareTextCommand{\anoteleia}{LGR}{\textanoteleia} % · +\DeclareTextCommand{\erotimatiko}{LGR}{\texterotimatiko} % ; ++
See also http://en.wikipedia.org/wiki/Greek_numerals
+Names from babel, teubner, and hyperref’s puenc.def:
+\DeclareTextCommand{\anwtonos}{LGR}{\textnumeralsigngreek} % ʹ (Dexia keraia) +\DeclareTextCommand{\katwtonos}{LGR}{\textnumeralsignlowergreek} % ͵ (Aristeri keraia) ++
Backwards compatibility with LGRx versions < 0.7:
+\DeclareTextCommand{\Ypogegrammeni}{LGR}{\ypogegrammeni} +\DeclareTextCommand{\Prosgegrammeni}{LGR}{\prosgegrammeni} + +\DeclareTextCommand{\lowbreve}{LGR}{\brevebelow} +\DeclareTextCommand{\Dasia}{LGR}{\accdasia} +\DeclareTextCommand{\Psili}{LGR}{\accpsili} +\DeclareTextCommand{\Tonos}{LGR}{\acctonos} +\DeclareTextCommand{\Varia}{LGR}{\accvaria} +\DeclareTextCommand{\Perispomeni}{LGR}{\accperispomeni} +\DeclareTextCommand{\Dialytika}{LGR}{\accdialytika} + +\DeclareTextCommand{\DialytikaPerispomeni}{LGR}{\accdialytikaperispomeni} +\DeclareTextCommand{\DialytikaTonos}{LGR}{\accdialytikatonos} +\DeclareTextCommand{\DialytikaVaria}{LGR}{\accdialytikavaria} +\DeclareTextCommand{\DasiaPerispomeni}{LGR}{\accdasiaperispomeni} +\DeclareTextCommand{\DasiaVaria}{LGR}{\accdasiavaria} +\DeclareTextCommand{\DasiaOxia}{LGR}{\accdasiaoxia} +\DeclareTextCommand{\PsiliPerispomeni}{LGR}{\accpsiliperispomeni} +\DeclareTextCommand{\PsiliOxia}{LGR}{\accpsilioxia} +\DeclareTextCommand{\PsiliVaria}{LGR}{\accpsilivaria} ++ +
This work 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.
+Abstract
+Set up the Zapf Chancery font as script (calligraphic) math +alphabet.
+Obsoleted by the urwchancal_ package.
+2011-02-03 first published version
+2011-03-28 documentation update: deprecated by urwchancal
+The pzccal package sets up the Zapf Chancery font (pzcmi7t) as +script (calligraphic) math alphabet \mathpzc. It provides options +to scale the font and to configure the alias command name. By default, +pzccal overwrites the predefined math alphabet command \mathcal.
+The urwchancal package (developed independently and published less +than a month after pzcal.sty) provides not only a style file but also +virtual fonts solving problems with accents and spacing. Like +pzcal, it provides both lowercase and capital Latin math script +letters. It is highly recommended to use urwchancal.sty instead of +pzcal.sty.
+README.txt |
+Requirements, Installation, Usage |
+
README.html |
+browser friendly README |
+
pzccal.sty |
+literate source (LaTeX package) |
+
pzccal.sty.txt |
+literate source (Documentation) |
+
pzccal.sty.pdf |
+literate source (Documentation, PDF) |
+
pzccal.sty.html |
+literate source (Documentation, HTML) |
+
pzccal-test.tex |
+Test example (source) |
+
pzccal-test.pdf |
+Test example (PDF output) |
+
The bidirectional text <-> code converter PyLit can convert between +pzccal.sty and pzccal.sty.txt.
+The Python Docutils and pdflatex were used to generate the HTML and PDF +documentation from the reStructuredText sources.
+This package uses fonts from the PSNFSS bundle. +It also requires kvoptions.
+It is highly recommended to use urwchancal:
+\usepackage{urwchancal} ++
instead of
+\usepackage{pzccal} ++
Option descriptions in the literate source.
+ +This work 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.
+\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{pzccal} +[2011/02/03 v0.1 Zapf Chancery calligraphic math alphabet] ++
The Comprehensive LaTeX Symbol List by Scott Pakin describes the +use of Zapf Chancery as a mathematical alphabet that contains capital +and small Latin letters as well as digits. This allows full coverage +of the script Unicode Mathematical Alphabet with 8-bit LaTeX +engines.
+This package sets up the Zapf Chancery font as script (calligraphic) +math alphabet \mathpzc. It provides options to scale the font and to +configure the alias command name. By default, pzccal overwrites the +predefined math alphabet command \mathcal.
+Tip
+The urwchancal package (developed independently and published less than a +month after pzcal.sty) provides not only a style file but also virtual +fonts solving problems with accents and spacing. Like pzcal, it +provides both lowercase and capital Latin math script letters. It is +highly recommended to use urwchancal.sty instead of pzcal.sty.
+Options are defined with the key=value interface provided by +kvoptions:
+\RequirePackage{kvoptions} ++
The name of the math alphabet command alias (default \mathcal). +An existing command is overwritten without asking.
+\DeclareStringOption[mathcal]{cmdname} ++
For compatibility with eucal, the mathcal and mathscr options +are equivalent to cmdname=mathcal and cmdname=mathscr. The +option mathpzc prevents aliasing to a new name:
+\DeclareVoidOption{mathcal}{} % this is the default +\DeclareVoidOption{mathscr}{\renewcommand{\pzccal@cmdname}{mathscr}} +\DeclareVoidOption{mathpzc}{\renewcommand{\pzccal@cmdname}{mathpzc}} ++
The Zapf Chancery font can be scaled with the scaled option. The +default is to enlarge the font to get a matching size without making +it too dark:
+\DeclareStringOption[1.125]{scaled} + +\ProcessKeyvalOptions* ++
Define the font family pzcm as a scaled variant of pzc:
+\DeclareFontFamily{OT1}{pzcm}{} +\DeclareFontShape{OT1}{pzcm}{mb}{it}{<-> s * [\pzccal@scaled] pzcmi7t}{} ++
As suggested in The Comprehensive LaTeX Symbol List:
+\DeclareMathAlphabet{\mathpzc}{OT1}{pzcm}{mb}{it} ++
Make the new alphabet available under the command specified by the +cmdname option (default: overwrite“mathcal“):
+\@namedef\pzccal@cmdname{\mathpzc} ++
Alternative LaTeX script fonts that might be useful in math:
+