summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/siunitx/siunitx-locale.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/siunitx/siunitx-locale.dtx')
-rw-r--r--macros/latex/contrib/siunitx/siunitx-locale.dtx169
1 files changed, 169 insertions, 0 deletions
diff --git a/macros/latex/contrib/siunitx/siunitx-locale.dtx b/macros/latex/contrib/siunitx/siunitx-locale.dtx
new file mode 100644
index 0000000000..07a934b2fe
--- /dev/null
+++ b/macros/latex/contrib/siunitx/siunitx-locale.dtx
@@ -0,0 +1,169 @@
+% \iffalse meta-comment
+%
+% File: siunitx-locale.dtx Copyright (C) 2020,2021 Joseph Wright
+%
+% It may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License (LPPL), either version 1.3c of this
+% license or (at your option) any later version. The latest version
+% of this license is in the file
+%
+% https://www.latex-project.org/lppl.txt
+%
+% This file is part of the "siunitx bundle" (The Work in LPPL)
+% and all files in that bundle must be distributed together.
+%
+% The released version of this bundle is available from CTAN.
+%
+% -----------------------------------------------------------------------
+%
+% The development version of the bundle can be found at
+%
+% https://github.com/josephwright/siunitx
+%
+% for those people who are interested.
+%
+% -----------------------------------------------------------------------
+%
+%<*driver>
+\documentclass{l3doc}
+% The next line is needed so that \GetFileInfo will be able to pick up
+% version data
+\usepackage{siunitx}
+\begin{document}
+ \DocInput{\jobname.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \GetFileInfo{siunitx.sty}
+%
+% \title{^^A
+% \pkg{siunitx-locale} -- Localisation^^A
+% \thanks{This file describes \fileversion,
+% last revised \filedate.}^^A
+% }
+%
+% \author{^^A
+% Joseph Wright^^A
+% \thanks{^^A
+% E-mail:
+% \href{mailto:joseph.wright@morningstar2.co.uk}
+% {joseph.wright@morningstar2.co.uk}^^A
+% }^^A
+% }
+%
+% \date{Released \filedate}
+%
+% \maketitle
+%
+% \begin{documentation}
+%
+% This submodule is concerned with localisation of \pkg{siunitx} output
+% based on the locale. If the \pkg{translations} package is available, this
+% is loaded here and used to provide various fixed strings for output.
+%
+% \begin{function}{locale}
+% \begin{syntax}
+% |locale| = \meta{locale}
+% \end{syntax}
+% Selects the \meta{locale} used to apply standard settings for other
+% keys, principally |exponent-product|, |inter-unit-product|
+% and |output-decimal-marker|.
+% \end{function}
+%
+% \end{documentation}
+%
+% \begin{implementation}
+%
+% \section{\pkg{siunitx-locale} implementation}
+%
+% Start the \pkg{DocStrip} guards.
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% Identify the internal prefix (\LaTeX3 \pkg{DocStrip} convention): only
+% internal material in this \emph{submodule} should be used directly.
+% \begin{macrocode}
+%<@@=siunitx_locale>
+% \end{macrocode}
+%
+% \subsection{Locales}
+%
+% The basics for defining locales are easy: these are just meta keys.
+% \begin{macrocode}
+\keys_define:nn { siunitx }
+ {
+ locale .choice: ,
+ locale / DE .meta:n =
+ {
+ exponent-product = \cdot ,
+ inter-unit-product = \, ,
+ output-decimal-marker = { , }
+ } ,
+ locale / FR .meta:n =
+ {
+ exponent-product = \times ,
+ inter-unit-product = \, ,
+ output-decimal-marker = { , }
+ } ,
+ locale / UK .meta:n =
+ {
+ exponent-product = \times ,
+ inter-unit-product = \, ,
+ output-decimal-marker = .
+ },
+ locale / US .meta:n =
+ {
+ exponent-product = \times ,
+ inter-unit-product = \, ,
+ output-decimal-marker = .
+ } ,
+ locale / ZA .meta:n =
+ {
+ exponent-product = \times ,
+ inter-unit-product = \cdot ,
+ output-decimal-marker = { , }
+ }
+ }
+% \end{macrocode}
+%
+% \subsection{Localisation}
+%
+% Localisation makes use of the \pkg{translator} package. This only happens
+% if it is available, and is transparent to the user.
+% \begin{macrocode}
+\file_if_exist:nT { translations.sty }
+ {
+ \RequirePackage { translations }
+ \DeclareTranslation { English } { to~(numerical~range) } { to }
+ \DeclareTranslation { French } { to~(numerical~range) } { รก }
+ \DeclareTranslation { German } { to~(numerical~range) } { bis }
+ \DeclareTranslation { Spanish } { to~(numerical~range) } { a }
+ \keys_set:nn { siunitx }
+ {
+ list-final-separator =
+ {
+ \ifmmode \ \else \space \fi
+ \text { \GetTranslation { and } }
+ \ifmmode \ \else \space \fi
+ } ,
+ list-pair-separator =
+ {
+ \ifmmode \ \else \space \fi
+ \text { \GetTranslation { and } }
+ \ifmmode \ \else \space \fi
+ } ,
+ range-phrase =
+ {
+ \ifmmode \ \else \space \fi
+ \text { \GetTranslation { to~(numerical~range) } }
+ \ifmmode \ \else \space \fi
+ }
+ }
+ }
+% \end{macrocode}
+%
+% \end{implementation}
+%
+% \PrintIndex