% \iffalse meta-comment % % Copyright 1989-2019 Einar \'Arnason, Johannes L. Braams, Javier % Bezos 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 Javier Bezos. % % 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{646} % % \iffalse % Tell the \LaTeX\ system who we are and write an entry on the % transcript. %<*dtx> \ProvidesFile{icelandic.dtx} % %\ProvidesLanguage{icelandic} %\fi %\ProvidesFile{icelandic.dtx} [2019/07/04 v1.3 Icelandic support from the babel system] %\iffalse %% File iceland.dtx % %% Icelandic Language Definition File %% Copyright (C) 1996--2019 %% by Einar \'Arnason %% Johannes Braams, TeXniek %% Javier Bezos (>=1.2a) % %% % %<*filedriver> \documentclass{ltxdoc} \usepackage[T1]{fontenc} \OnlyDescription % \expandafter\def\csname u8:ǫ\endcsname{\k{o}} % \expandafter\def\csname u8:Ǫ\endcsname{\k{O}} \usepackage[utf8]{inputenc} \usepackage[icelandic.utf8old,english]{babel} \font\manual=logo10 % font used for the METAFONT logo, etc. \newcommand*\MF{{\manual META}\-{\manual FONT}} \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} \begin{center} \textbf{\Large A Babel language definition file for Icelandic}\\[3mm]^^A\] Einar \'Arnason\\ \texttt{einar@lif.hi.is} \end{center} \DocInput{icelandic.dtx} \end{document} % %\fi % \GetFileInfo{iceland.dtx} % % % \changes{icelandic-1.1c}{1997/05/21}{Removed code already present in % \file{babel.def}} % % \section{The Icelandic language} % % \subsection{Overview} % % The file \file{\filename}\footnote{The file described in this % section has version number 1.3 and was last revised on 2019-07-04 % by Javier Bezos to fix some issues.} defines all the language % definition macros for the Icelandic language % % Customization for the Icelandic language was made following % several official and semiofficial publications~\cite{74:_augl, % 77:_augl,88:_reglur,94:_si,97:_forst_fs}. These publications do % not always agree and we indicate those instances. % % For this language the character |"| is made active. In % table~\ref{tab:icelandic-extras} an overview is given of its % purpose. % \begin{table}[htb] % \begin{center} % \begin{otherlanguage*}{icelandic} % \begin{tabular}{lp{8cm}} % \verb="|= & disable ligature at this position. \\ % |"-| & an explicit hyphen sign, allowing hyphenation % in the rest of the word. \\ % |""| & like |"-|, but producing no hyphen sign % (for compund words with hyphen, e.g.\ |x-""y|). \\ % |"~| & for a compound word mark without a breakpoint. \\ % |"=| & for a compound word mark with a breakpoint, allowing % hyphenation in the composing words. \\ % |"`| & for Icelandic left double quotes (looks like ,,). \\ % |"'| & for Icelandic right double quotes. \\ % |">| & for Icelandic `french' left double quotes % (similar to $>>$).\\ % |"<| & for Icelandic `french' right double quotes % (similar to $<<$).\\ % |"o| & for old Icelandic "o \\ % |"O| & for old Icelandic "O \\ % |"ó| & for old Icelandic "ó \\ % |"Ó| & for old Icelandic "Ó \\ % |"e| & for old Icelandic "e \\ % |"E| & for old Icelandic "E \\ % |"é| & for old Icelandic "é \\ % |"É| & for old Icelandic "É \\ % |\tala| & for typesetting numbers\\ % |\grada| & for the `degree' symbol\\ % |\gradur| & for `degrees', e.g. 5~\gradur C\\ % |\upp| & for textsuperscript \\ % \end{tabular} % \end{otherlanguage*} % \caption{The shorthands and extra definitions made % by \file{icelandic.ldf}}\label{tab:icelandic-extras} % \end{center} % \end{table} % The shorthands in table~\ref{tab:icelandic-extras} can also be % typeset by using the commands in % table~\ref{tab:icelandic-commands}. % \begin{table}[htb] % \begin{center} % \begin{otherlanguage*}{icelandic} % \begin{tabular}{lp{8cm}} % |\ilqq| & for Icelandic left double quotes % (looks like ,,). \\ % |\irqq| & for Icelandic right double quotes % (looks like ``). \\ % |\ilq| & for Icelandic left single quotes % (looks like ,). \\ % |\irq| & for Icelandic right single quotes % (looks like `). \\ % |\iflqq| & for Icelandic `french' left double quotes % (similar to $>>$).\\ % |\ifrqq| & for Icelandic `french' right double quotes % (similar to $<<$).\\ % |\ifrq| & for Icelandic `french' right single quotes % (similar to $<$).\\ % |\iflq| & for Icelandic `french' left single quotes % (similar to $>$). \\ % |\dq| & the original quotes character (|"|). \\ % |\oob| & for old Icelandic "o \\ % |\Oob| & for old Icelandic "O \\ % |\ooob| & for old Icelandic "ó \\ % |\OOob| & for old Icelandic "Ó \\ % |\eob| & for old Icelandic "e \\ % |\Eob| & for old Icelandic "E \\ % |\eeob| & for old Icelandic "é \\ % |\EEob| & for old Icelandic "É \\ % \end{tabular} % \end{otherlanguage*} % \caption{Commands which produce quotes and old Icelandic % diacritics, defined by % \file{icelandic.ldf}}\label{tab:icelandic-commands} % \end{center} % \end{table} % % Version 1.2 does not raise an error with \textsf{luatex}, and in % addition Unicode strings are defined. Shorthands for ó, Ó, é and % É with ogonek now works with \verb|utf8| and \textsf{inputenc} in % 8-bit engines, but for compatibility and due to some limitations % they must be activated explicitly with the modifier % \verb|utf8old|, ie: % \begin{verbatim} % \usepackage[icelandic.utf8old]{babel} % \end{verbatim} % This modifier is not necessary with \textsf{xe/luatex}. Note with % the latter you need a font containing those glyphs (or at least % with the possibility to compose them), as well as defining the % \verb|EU1| or \verb|EU2| encoding (with \textsf{fontspec} and/or % \textsf{fontenc}).\footnote{If you definitely don't want to load % it, there is still an alternative -- the \texttt{strings=generic} % option described in the \textsf{babel} manual, which relies % entirely on the LICR, but this is discouraged.} For example: % \begin{verbatim} % \documentclass{article} % \usepackage[icelandic]{babel} % \usepackage{fontspec} % \setmainfont{Arial} % \begin{document} % Íslenska er indóevrópskt, germanskt og vesturnorrænt tungumál sem % er einkum talað og ritað á Íslandi og er móðurmál langflestra % Íslendinga. (From Wikipedia.) % \end{document} % \end{verbatim} % % The original definitions for the ogonek are preserved, even if % the results are not always satisfactory. To be fixed. % % See also below for some extra features. % % \begin{thebibliography}{1} % % \bibitem{88:_reglur} % Alþingi. % \newblock {\em Reglur um frágang þingskjala og prentun umræðna}, % 1988. % % \bibitem{74:_augl} % Auglýsing um greinarmerkjasetningu. % \newblock Stj.tíð B, nr. 133/1974, 1974. % % \bibitem{77:_augl} % Auglýsing um breyting auglýsingu nr. 132/1974 um íslenska % stafsetningu. % \newblock Stj.tíð B, nr. 261/1977, 1977. % % \bibitem{unknown72:_first_gramm_treat} % Einar Haugen, editor. % \newblock {\em First Grammatical Treatise}. % \newblock Longman, London, 2 edition, 1972. % % \bibitem{97:_forst_fs} % Staðlaráð Íslands og Fagráð í upplýsingatækni, Reykjavík. % \newblock {\em Forstaðall FS 130:1997}, 1997. % % \bibitem{94:_si} % STRÍ Staðlaráð Íslands. % \newblock {\em SI - kerfið}, 2 edition, 1994. % % \end{thebibliography} % % \StopEventually{} % % % \subsection{\TeX{}nical details} % % When this file was read through the option \Lopt{icelandic} we make % it behave as if \Lopt{icelandic} was specified. % % \begin{macrocode} \def\bbl@tempa{icelandic} \ifx\CurrentOption\bbl@tempa \def\CurrentOption{icelandic} \fi % \end{macrocode} % % The macro |\LdfInit| takes care of preventing that this file is % loaded more than once, checking the category code of the % \texttt{@} sign, etc. % \begin{macrocode} %<*code> \LdfInit\CurrentOption{captions\CurrentOption} % \end{macrocode} % % When this file is read as an option, i.e., by the |\usepackage| % command, \texttt{icelandic} will be an `unknown' language, so we % have to make it known. So we check for the existence of % |\l@icelandic| to see whether we have to do something here. % % \begin{macrocode} \ifx\l@icelandic\@undefined \@nopatterns{Icelandic} \adddialect\l@icelandic0 \fi % \end{macrocode} % % \begin{macro}{\if@Two@E} % We will need a new `if' : |\if@Two@E| is true if and only if % \LaTeXe{} is running \emph{not} in compatibility mode. It is % used in the definitions of the command |\tala| and |\upp|. % The definition is somewhat complicated, due to the fact that % |\if@compatibility| is not recognized as a |\if| in % \LaTeX-2.09 based formats. % \begin{macrocode} \newif\if@Two@E \@Two@Etrue \def\@FI@{\fi} \ifx\@compatibilitytrue\@undefined \@Two@Efalse \def\@FI@{\relax} \else \if@compatibility \@Two@Efalse \fi \@FI@ % \end{macrocode} % \end{macro} % % The icelandic hyphenation patterns can be used with % |\lefthyphenmin| and |\righthyphenmin| set to~2. % \changes{icelandic-1.1f}{2000/09/22}{Now use \cs{providehyphenmins} % to provide a default value} % \begin{macrocode} \providehyphenmins{\CurrentOption}{\tw@\tw@} % \end{macrocode} % % \subsection{Captionnames and date} % % The next step consists of defining the Icelandic equivalents for % the \LaTeX{} captionnames. % % \begin{macro}{\captionsicelandic} % The macro |\captionsicelandic| will define all strings used % used in the four standard document classes provided % with \LaTeX. % \changes{icelandic-1.1f}{2000/09/20}{Added \cs{glossaryname}} % \changes{icelandic-1.1g}{2002/01/00}{Only use 7-bit ASCII characters % in order to keep the texts input encoding independant} % \changes{icelandic-1.1g}{2002/01/09}{Added translation for Glossary} % % \begin{macro}{\dateicelandic} % The macro |\dateicelandic| redefines the command |\today| % to produce Icelandic dates. % \changes{icelandic-1.1c}{1997/10/01}{Use \cs{edef} to define % \cs{today} to save memory} % \changes{icelandic-1.1c}{1998/03/28}{use \cs{def} instead of % \cs{edef}} % \changes{icelandic-1.2a}{2015/12/28}{Define strings using % \cs{StartBabelCommands}} % \changes{icelandic-1.2b}{2016/01/14}{Warning if used with xe/lua % without EUx encondings} % % \begin{macrocode} \StartBabelCommands*{icelandic}{captions} [unicode, charset=utf8, fontenc=EU1 EU2 TU] \SetString{\prefacename}{Formáli} \SetString{\abstractname}{Útdráttur} \SetString{\appendixname}{Viðauki} \SetString{\listfigurename}{Myndaskrá} \SetString{\listtablename}{Töfluskrá} \SetString{\indexname}{Atriðisorðaskrá} \SetString{\enclname}{Hjálagt} \SetString{\pagename}{Blaðsíða} \SetString{\seename}{Sjá} \SetString{\alsoname}{Sjá einnig} \SetString{\proofname}{Sönnun} \SetString{\glossaryname}{Orðalisti} \StartBabelCommands*{icelandic}{date} [unicode, charset=utf8, fontenc=EU1 EU2 TU] \SetStringLoop{month#1name}{% janúar,febrúar,mars,apríl,maí,júní,% júlí,ágúst,september,október,nóvember,desember} % \end{macrocode} % % And now, the generic branch, using the LICR and assuming T1. % % \begin{macrocode} \StartBabelCommands*{icelandic}{captions} \SetString{\prefacename}{Form\'{a}li} \SetString{\refname}{Heimildir} \SetString{\abstractname}{\'{U}tdr\'{a}ttur} \SetString{\bibname}{Heimildir} \SetString{\chaptername}{Kafli} \SetString{\appendixname}{Vi{\dh}auki} \SetString{\contentsname}{Efnisyfirlit} \SetString{\listfigurename}{Myndaskr\'{a}} \SetString{\listtablename}{T\"{o}fluskr\'{a}} \SetString{\indexname}{Atri{\dh}isor{\dh}askr\'{a}} \SetString{\figurename}{Mynd} \SetString{\tablename}{Tafla} \SetString{\partname}{Hluti} \SetString{\enclname}{Hj\'{a}lagt} \SetString{\ccname}{Samrit} \SetString{\headtoname}{Til:} % in letter \SetString{\pagename}{Bla{\dh}s\'{\i}{\dh}a} \SetString{\seename}{Sj\'{a}} \SetString{\alsoname}{Sj\'{a} einnig} \SetString{\proofname}{S\"{o}nnun} \SetString{\glossaryname}{Or{\dh}alisti} \StartBabelCommands*{icelandic}{date} \SetStringLoop{month#1name}{% jan\'{u}ar,febr\'{u}ar,mars,apr\'{\i}l,ma\'{\i},j\'{u}n\'{\i},% j\'{u}l\'{\i},\'{a}g\'{u}st,september,okt\'{o}ber,n\'{o}vember,desember} \SetString\today{% {\number\day}.~\@nameuse{month\romannumeral\month name} {\number\year}} \EndBabelCommands % \end{macrocode} % \end{macro} % \end{macro} % % % \subsection{Icelandic quotation marks} % % % \begin{macro}{\dq} % We save the original double quote character in |\dq| to keep % it available, the math accent |\"| can now be typed as |"|. % \begin{macrocode} \begingroup \catcode`\"12 \def\x{\endgroup \def\@SS{\mathchar"7019 } \def\dq{"}} \x % \end{macrocode} % \end{macro} % % Now we can define the icelandic and icelandic `french' quotes. % The icelandic `french' guillemets are the reverse of french % guillemets. We define single icelandic `french' quotes for % compatibility. Shorthands are provided for a number of different % quotation marks, which make them useable both outside and % inside mathmode. % % \begin{macrocode} \let\ilq\grq \let\irq\grq \let\iflq\frq \let\ifrq\flq \let\ilqq\glqq \let\irqq\grqq \let\iflqq\frqq \let\ifrqq\flqq % \end{macrocode} % % \section{Shorthands} % % The code below is necessary because we need an extra active % character. This character is then used as indicated in % table~\ref{tab:icelandic-commands}. % % To be able to define the function of |"|, we also define a % couple of `support' macros. % % \begin{macrocode} \initiate@active@char{"} \declare@shorthand{icelandic}{"`}{\glqq} \declare@shorthand{icelandic}{"'}{\grqq} \declare@shorthand{icelandic}{">}{\frqq} \declare@shorthand{icelandic}{"<}{\flqq} % \end{macrocode} % and some additional commands: % \begin{macrocode} \declare@shorthand{icelandic}{"-}{\nobreak\-\bbl@allowhyphens} \declare@shorthand{icelandic}{"|}{% \textormath{\nobreak\discretionary{-}{}{\kern.03em}% \bbl@allowhyphens}{}} \declare@shorthand{icelandic}{""}{\hskip\z@skip} \declare@shorthand{icelandic}{"~}{\textormath{\leavevmode\hbox{-}}{-}} \declare@shorthand{icelandic}{"=}{\nobreak-\hskip\z@skip} % \end{macrocode} % % % \subsection{Old Icelandic} % \label{oldicelandic} % % \changes{icelandic-1.1}{1997/04/24}{Added definitions for old % icelandic.} % \changes{icelandic-1.2a}{2105/03/28}{Reorganized for luatex, % Unicode and utf8.} % % In old Icelandic some letters have special diacritical marks, % described for example in \emph{First Grammatical % Treatise}~\cite{unknown72:_first_gramm_treat,97:_forst_fs}. We % provide these in the \texttt{T1} encoding with the `ogonek', as % well in \verb|EU|$x$ encondings. The ogonek is placed with the % letters `o', and `O', `ó' and `Ó', `e' and `E', and `é' and % `É'. Shorthands are provided for these as well. % % The following code by Leszek Holenderski lifted from % \texttt{polish.dtx} is designed to position the diacritics % correctly for every font in every size in Computer Modern. In % other fonts they might be slightly misplaced. These macros need a % few extra dimension variables. % % \begin{macrocode} \newdimen\pl@left \newdimen\pl@down \newdimen\pl@right \newdimen\pl@temp % \end{macrocode} % % \begin{macro}{\sob} % The macro |\sob| is used to put the `ogonek' in the right % place. % % \begin{macrocode} \def\sob#1#2#3#4#5{%parameters: letter and fractions hl,ho,vl,vo \setbox0\hbox{#1}\setbox1\hbox{\k{}}\setbox2\hbox{p}% \pl@right=#2\wd0 \advance\pl@right by-#3\wd1 \pl@down=#5\ht1 \advance\pl@down by-#4\ht0 \pl@left=\pl@right \advance\pl@left by\wd1 \pl@temp=-\pl@down \advance\pl@temp by\dp2 \dp1=\pl@temp \leavevmode \kern\pl@right\lower\pl@down\box1\kern-\pl@left #1} % \end{macrocode} % \end{macro} % % \begin{macro}{\oob} % \begin{macro}{\Oob} % \begin{macro}{\ooob} % \begin{macro}{\OOob} % \begin{macro}{\eob} % \begin{macro}{\Eob} % \begin{macro}{\eeob} % \begin{macro}{\EEob} % % Now, just define the composite characters. % % \begin{macrocode} \DeclareTextCommandDefault{\oob}{\sob{o}{.85}{0}{.04}{0}} \DeclareTextCommandDefault{\Oob}{\sob{O}{.7}{0}{0}{0}} \DeclareTextCommandDefault{\ooob}{\sob{\'{o}}{.85}{0}{.04}{0}} \DeclareTextCommandDefault{\OOob}{\sob{\'{O}}{.7}{0}{0}{0}} \DeclareTextCommandDefault{\eob}{\sob{e}{1}{0}{.04}{0}} \DeclareTextCommandDefault{\Eob}{\sob{E}{1}{0}{.04}{0}} \DeclareTextCommandDefault{\eeob}{\sob{\'{e}}{1}{0}{.04}{0}} \DeclareTextCommandDefault{\EEob}{\sob{\'{E}}{1}{0}{.04}{0}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % And their shorthands. % % \begin{macrocode} \declare@shorthand{icelandic}{"o}{\oob} \declare@shorthand{icelandic}{"O}{\Oob} \declare@shorthand{icelandic}{"e}{\eob} \declare@shorthand{icelandic}{"E}{\Eob} \StartBabelCommands*{icelandic}{captions} [unicode, charset=utf8, fontenc=EU1 EU2 TU] \AfterBabelCommands{% \newcommand\icelandic@og{% \@ifundefined{T@\ifcase\bbl@engine\or EU2\or EU1\fi}% {\edef\icelandic@tempa##1{\noexpand\DeclareTextCommand{##1}{TU}}}% {\edef\icelandic@tempa##1{% \noexpand\DeclareTextCommand {##1}{\ifcase\bbl@engine\or EU2\or EU1\fi}}}% \icelandic@tempa{\oob}{ǫ}% \icelandic@tempa{\Oob}{Ǫ}% \icelandic@tempa{\ooob}{\'{ǫ}}% \icelandic@tempa{\OOob}{\'{Ǫ}}% \icelandic@tempa{\eob}{ę}% \icelandic@tempa{\Eob}{Ę}% \icelandic@tempa{\eeob}{\'{ę}}% \icelandic@tempa{\EEob}{\'{Ę}}% \declare@shorthand{icelandic}{"ó}{\ooob}% \declare@shorthand{icelandic}{"Ó}{\OOob}% \declare@shorthand{icelandic}{"é}{\eeob}% \declare@shorthand{icelandic}{"É}{\EEob}}} \StartBabelCommands*{icelandic}{captions} \AfterBabelCommands{% \providecommand\icelandic@og{% \declare@shorthand{icelandic}{"^^db}{\OOob}% \declare@shorthand{icelandic}{"^^e9}{\eeob}% \declare@shorthand{icelandic}{"^^c9}{\EEob}% \declare@shorthand{icelandic}{"^^fb}{\ooob}% \@expandtwoargs\in@{,utf8old,}{,\BabelModifiers,}% \ifin@ \declare@shorthand{icelandic}{"^^c3}{\icelandic@preq}% \@namedef{icelandic@preq@^^b3}{\ooob}% \@namedef{icelandic@preq@^^93}{\OOob}% \@namedef{icelandic@preq@^^a9}{\eeob}% \@namedef{icelandic@preq@^^89}{\EEob}% \def\icelandic@preq##1{% \@ifundefined{icelandic@preq@\string##1}% {"{}\UTFviii@two@octets ^^c3##1}% {\@nameuse{icelandic@preq@\string##1}}}% \fi}% \icelandic@og \let\icelandic@og\relax} \EndBabelCommands % \end{macrocode} % % \begin{macro}{\extrasicelandic} % \begin{macro}{\noextrasicelandic} % % The macro |\extrasicelandic| % will perform all the extra definitions needed for the Icelandic % language. The macro |\noextrasicelandic| is used to cancel the % actions of |\extrasicelandic|. % % For Icelandic the \texttt{"} character is % made active. This is done once, later on its definition may vary. % \begin{macrocode} \@namedef{extras\CurrentOption}{% \languageshorthands{icelandic}} \expandafter\addto\csname extras\CurrentOption\endcsname{% \bbl@activate{"}} % \end{macrocode} % Don't forget to turn the shorthands off again. % \changes{icelandic-1.1e}{1999/12/17}{Deactivate shorthands ouside of % Icelandic} % \begin{macrocode} \addto\noextrasicelandic{\bbl@deactivate{"}} % \end{macrocode} % \end{macro} % \end{macro} % % \subsection{Formatting numbers} % \label{numbers} % % \changes{icelandic-1.1a}{1997/04/26}{Added definitions for % formatting numbers in Icelandic and some extra utilities.} % This section is lifted from \texttt{frenchb.dtx} by D. Flipo. % In English the decimal part starts with a point and thousands % should be separated by a comma: an approximation of $1000\pi$ % should be inputed as |$3{,}141.592{,}653$| in math-mode and % as |3,141.592,653| in text. % \changes{icelandic-1.1b}{1997/05/05}{Added references to various % publications used} % % In Icelandic the decimal part starts with a comma and thousands % should be separated by a space~\cite{88:_reglur} or by a % period~\cite{97:_forst_fs}; we have the space. The above % approximation of $1000\pi$ should be inputed as % |$3\;141{,}592\;653$| in math-mode and as something like % |3~141,592~653| in text. Braces are mandatory around the comma in % math-mode, the reason is mentioned in the \TeX{}book p.~134: % the comma is of type |\mathpunct| (thus normally followed by a % space) while the point is of type |\mathord| (no space added). % % Thierry Bouche suggested that a second type of comma, of type % |\mathord| would be useful in math-mode, and proposed to % introduce a command (named |\decimalsep| in this package), % the expansion of which would depend on the current language. % % Vincent Jalby suggested a command |\nombre| to conveniently % typeset numbers: inputting |\nombre{3141,592653}| either in % text or in math-mode will format this number properly according % to the current language (Icelandic or non-Icelandic). We use % |\nombre| to define command |\tala| in Icelandic. % % |\tala| accepts an optional argument which happens to be % useful with the extension `dcolumn', it specifies the decimal % separator used in the \emph{source code}: % |\newcolumntype{d}{D{,}{\decimalsep}{-1}}| \\ % |\begin{tabular}{|d|}\hline | \\ % | 3,14 \\ | \\ % | \tala[,]{123,4567} \\ | \\ % | \tala[,]{9876,543}\\\hline| \\ % |\end{tabular} | \\ % will print a column of numbers aligned on the decimal point % (comma or point depending on the current language), each slice % of 3 digits being separated by a space or a comma according to % the current language. % % \begin{macro}{\decimalsep} % \begin{macro}{\thousandsep} % We need a internal definition, valid in both text and math-mode, % for the comma (|\@comma@|) and another one for the unbreakable % fixed length space (no glue) used in Icelandic (|\f@thousandsep|). % % The commands |\decimalsep| and |\thousandsep| get default % definitions (for the English language) when |icelandic| is loaded; % these definitions will be updated when the current language is % switched to or from Icelandic. % \begin{macrocode} \mathchardef\m@comma="013B \def\@comma@{\ifmmode\m@comma\else,\fi} \def\f@thousandsep{\ifmmode\mskip5.5mu\else\penalty\@M\kern.3em\fi} \newcommand{\decimalsep}{.} \newcommand{\thousandsep}{\@comma@} \expandafter\addto\csname extras\CurrentOption\endcsname{% \def\decimalsep{\@comma@}% \def\thousandsep{\f@thousandsep}} \expandafter\addto\csname noextras\CurrentOption\endcsname{% \def\decimalsep{.}% \def\thousandsep{\@comma@}} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\tala} % The decimal separator used when \emph{inputing} a number % with |\tala| \emph{has to be a comma}. % |\tala| splits the inputed number into two parts: what % comes before the first comma will be formatted by % \cs{@integerpart} while the rest (if not empty) will be % formatted by \cs{@decimalpart}. Both parts, once formatted % separately will be merged together with between them, either % the decimal separator \cs{decimalsep} or (in \LaTeXe{} % \emph{only}) the optional argument of |\tala|. % % \begin{macrocode} \if@Two@E \newcommand{\tala}[2][\decimalsep]{% \def\@decimalsep{#1}\@tala#2\@empty,\@empty,\@nil} \else \newcommand{\tala}[1]{% \def\@decimalsep{\decimalsep}\@tala#1\@empty,\@empty,\@nil} \fi \def\@tala#1,#2,#3\@nil{% \ifx\@empty#2% \@integerpart{#1}% \else \@integerpart{#1}\@decimalsep\@decimalpart{#2}% \fi} % \end{macrocode} % The easiest bit is the decimal part: % We attempt to read the first four digits of the decimal part, if % it has less than 4 digits, we just have to print them, otherwise % |\thousandsep| has to be appended after the third digit, and the % algorithm is applied recursively to the rest of the decimal part. % \begin{macrocode} \def\@decimalpart#1{\@@decimalpart#1\@empty\@empty\@empty} \def\@@decimalpart#1#2#3#4{#1#2#3% \ifx\@empty#4% \else \thousandsep\expandafter\@@decimalpart\expandafter#4% \fi} % \end{macrocode} % Formatting the integer part is more difficult because the slices % of 3 digits start from the \emph{bottom} while the number is % read from the top! % This (tricky) code is borrowed from David Carlisle's comma.sty. % \begin{macrocode} \def\@integerpart#1{\@@integerpart{}#1\@empty\@empty\@empty} \def\@@integerpart#1#2#3#4{% \ifx\@empty#2% \@addthousandsep#1\relax \else \ifx\@empty#3% \@addthousandsep\@empty\@empty#1#2\relax \else \ifx\@empty#4% \@addthousandsep\@empty#1#2#3\relax \else \@@integerpartafterfi{#1#2#3#4}% \fi \fi \fi} \def\@@integerpartafterfi#1\fi\fi\fi{\fi\fi\fi\@@integerpart{#1}} \def\@addthousandsep#1#2#3#4{#1#2#3% \if#4\relax \else \thousandsep\expandafter\@addthousandsep\expandafter#4% \fi} % \end{macrocode} % \end{macro} % % \subsection{Extra utilities} % % We now provide the Icelandic user with some extra utilities. % % \begin{macro}{\upp} % |\upp| is for typesetting superscripts. |\upp| relies on % \begin{macro}{\upp@size} % The internal macro |\upp@size| holds the size at which the % superscript will be typeset. The reason for this is that we have % to specify it differently for different formats. % \begin{macrocode} \ifx\sevenrm\@undefined \ifx\@ptsize\@undefined \let\upp@size\small \else \ifx\selectfont\@undefined % \end{macrocode} % In this case the format is the original \LaTeX-2.09: % \begin{macrocode} \ifcase\@ptsize \let\upp@size\ixpt\or \let\upp@size\xpt\or \let\upp@size\xipt \fi % \end{macrocode} % When |\selectfont| is defined we probably have NFSS available: % \begin{macrocode} \else \ifcase\@ptsize \def\upp@size{\fontsize\@ixpt{10pt}\selectfont}\or \def\upp@size{\fontsize\@xpt{11pt}\selectfont}\or \def\upp@size{\fontsize\@xipt{12pt}\selectfont} \fi \fi \fi \else % \end{macrocode} % If we end up here it must be a plain based \TeX{} format, so: % \begin{macrocode} \let\upp@size\sevenrm \fi % \end{macrocode} % \end{macro} % Now we can define |\upp|. When \LaTeXe{} runs in % compatibility mode (\LaTeX-2.09 emulation), |\textsuperscript| is % also defined, but does no good job, so we give two different % definitions for |\upp| using |\if@Two@E|. % \begin{macrocode} \if@Two@E \DeclareRobustCommand*{\upp}[1]{\textsuperscript{#1}} \else \DeclareRobustCommand*{\upp}[1]{% \leavevmode\raise1ex\hbox{\upp@size#1}} \fi % \end{macrocode} % % \end{macro} % % Some definitions for special characters. % |\grada| needs a special treatment: it is |\char6| % in T1-encoding and |\char23| in OT1-encoding. % \begin{macrocode} \ifx\fmtname\LaTeXeFmtName \DeclareTextSymbol{\grada}{T1}{6} \DeclareTextSymbol{\grada}{OT1}{23} \else \def\T@one{T1} \ifx\f@encoding\T@one \newcommand{\grada}{\char6} \else \newcommand{\grada}{\char23} \fi \fi % \end{macrocode} % % \begin{macro}{\gradur} % Macro for typesetting the abbreviation for `degrees' (as in % `degrees Celsius'). As the bounding box of the character `degree' % has \emph{very} different widths in CMR/DC and PostScript fonts, % we fix the width of the bounding box of |\gradur| to 0.3\,em, % this lets the symbol `degree' stick to the preceding % (e.g., |45\gradur|) or following character (e.g., |20~\gradur C|). % \begin{macrocode} \DeclareRobustCommand*{\gradur}{% \leavevmode\hbox to 0.3em{\hss\grada\hss}} % \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. % \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