From a4799313350c8a85179bc99161cc49c0af3e1558 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 14 Sep 2012 22:14:50 +0000 Subject: new latex package fnumprint (14sep12) git-svn-id: svn://tug.org/texlive/trunk@27668 c570f23f-e606-0410-a88d-b1316a301751 --- .../source/latex/fnumprint/fnumprint.dtx | 289 +++++++++++++++++++++ .../source/latex/fnumprint/fnumprint.ins | 23 ++ 2 files changed, 312 insertions(+) create mode 100644 Master/texmf-dist/source/latex/fnumprint/fnumprint.dtx create mode 100644 Master/texmf-dist/source/latex/fnumprint/fnumprint.ins (limited to 'Master/texmf-dist/source/latex/fnumprint') diff --git a/Master/texmf-dist/source/latex/fnumprint/fnumprint.dtx b/Master/texmf-dist/source/latex/fnumprint/fnumprint.dtx new file mode 100644 index 00000000000..4a1e4a7abe5 --- /dev/null +++ b/Master/texmf-dist/source/latex/fnumprint/fnumprint.dtx @@ -0,0 +1,289 @@ +% \iffalse meta-comment +% +% Copyright (C) 2012 by Robin Schneider +% +% 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. +% 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 2005/12/01 or later. +% +% The Current Maintainer of this work is Robin Schneider. +% +% This work consists of the files fnumprint.dtx and fnumprint.ins +% and the derived filebase fnumprint.sty. +% +% \fi +% +% \iffalse +%<*driver> +\ProvidesFile{\jobname.dtx} +% +%%% See file 'fnumprint.dtx' for copyright and licence. +%\NeedsTeXFormat{LaTeX2e}[1998/12/01] +%\ProvidesPackage{fnumprint} +%<*package> + [2012/08/27 v1.1 Printing fancy numbers] +% +% +%<*driver> +\documentclass[english]{ltxdoc} +\newcommand{\PackageURL}{https://github.com/ypid/latex-packages/tree/master/fnumprint} +\newcommand{\PackageCTANURL}{http://www.ctan.org/pkg/fnumprint} +\newcommand{\PackageAuthor}{Robin Schneider} +\newcommand{\PackageAuthorEmail}{ypid23@aol.de} +\newcommand{\PrintPackage}[1]{\textsf{#1}} +\usepackage{fnumprint} +\usepackage{ + babel, + csquotes, + xcolor, + url, + hypdoc, +} +\GetFileInfo{\jobname.dtx} +\hypersetup{ + pdftitle={A manual for \jobname}, + pdfauthor={\PackageAuthor{} <\PackageAuthorEmail>}, + pdfsubject={\fileinfo}, + baseurl={\PackageURL}, + pdfkeywords={This document corresponds to \textsf{\jobname}~\fileversion, + dated \filedate} +} + +\title{The \PrintPackage{\jobname} package\thanks{This document +corresponds to \textsf{\jobname}~\fileversion, dated \filedate.}} +\author{\PackageAuthor \\ + \texttt{\href{mailto:\PackageAuthorEmail?subject=LaTeX package \jobname}% + {\PackageAuthorEmail}% + }% +} + +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\begin{document} + \DocInput{\jobname.dtx} + \PrintChanges + \PrintIndex +\end{document} +% +% \fi +% +% \CheckSum{101} +% \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 \~} +% +% \changes{v0.1}{2011/06/12}{Initial version} %% ^^A date guessed +% \changes{v1.0}{2012/08/22}{Wrote this documentation and the \LaTeX{}-package +% and added support for English} +% \changes{v1.1}{2012/08/27}{Added optional parameter \enquote{ein}} +% \changes{v1.1a}{2012/08/27}{Added support for real numbers} +% +% \DoNotIndex{\RequirePackage, \DeclareOption, \ProcessOptions} +% \DoNotIndex{\PackageWarning, \MessageBreak} +% \DoNotIndex{\DeclareRobustCommand, \newcommand, \renewcommand} +% \DoNotIndex{\newenvironment} +% \DoNotIndex{\if, \else, \fi, \ifcase, \or, \ifthenelse, \AND, \value, \relax} +% \DoNotIndex{\equal, \@currname, \newcounter, \setcounter, \(, \), \NOT, \OR} +% \DoNotIndex{\endinput} +% +% \maketitle +% +% \phantomsection +% \addcontentsline{toc}{section}{\abstractname} +% \begin{abstract} +% The \PrintPackage{fnumprint} package can decide to typeset a +% number either as number or as word name (only in English or German). \\ +% Location on CTAN: \url{\PackageCTANURL} \\ +% Fork me on GitHub: \url{\PackageURL} \end{abstract} +% +% \tableofcontents +% +% \section{Introduction} +% The \PrintPackage{\jobname} package defines two macros which decide to +% typeset a number either as Arabic number or as word name for the number. If +% the number is between zero and twelve (including zero and twelve) then the +% word name will be used. This package uses the \PrintPackage{zahl2string} +% package to convert a number in the word name in German. The conversion of a +% number (0--12) to the English word name is implemented by this package. If +% the number is outside of the range then it will be typesetted with the +% \PrintPackage{numprint} package. +% +% \section{Usage} +% Just load the package placing +% \begin{quote} +% |\usepackage{fnumprint}| +% \end{quote} +% in the preamble of your \LaTeXe{} source file. In this case the last by +% \PrintPackage{fnumprint} supported language given as class option will be +% used. You can overwrite this with a package option like +% this: +% \begin{quote} +% |\usepackage[english]{fnumprint}| +% \end{quote} +% +% \DescribeMacro{\fnumprintc} +% The macro |\fnumprintc| \oarg{eins} \marg{\LaTeX{} counter name} takes a +% name of a LaTeX counter as not optional parameter and typesets it's +% value. The optional parameter is only active if the German language was +% selected. In this case it can be used to typeset \enquote{ein} instead of +% \enquote{eins}. This is for example necessary if you would like to typeset +% \enquote{ein Jahr}. +% +% \DescribeMacro{\fnumprint} +% The macro |\fnumprint| \oarg{eins} \marg{number} is like the |\fnumprintc| +% macro but it takes a number or a macro that expands to a number. A \TeX{} +% counter can also be used with this macro. +% +% \section{Examples} +% \begin{tabular}{ll} +% \textbf{macro} & \textbf{expanded macro} \\ +% |\fnumprint{-1}| & \fnumprint{-1} \\ +% |\fnumprint{0}| & \fnumprint{0} \\ +% |\fnumprint{1}| & \fnumprint{1} \\ +% |\fnumprint{3.14}| & \fnumprint{3.14} \\ +% |\fnumprint{10}| & \fnumprint{10} \\ +% |\fnumprint{12}| & \fnumprint{12} \\ +% |\fnumprint{13}| & \fnumprint{13} \\ +% |\fnumprint{\the\month}| & \fnumprint{\the\month} \\ +% |\fnumprint{\the\day}| & \fnumprint{\the\day} \\ +% |\fnumprintc{page}| & \fnumprintc{page} \\ +% \end{tabular} +% +% \section{ToDo} +% Here are some things that could be useful. +% \begin{itemize} +% \item Provide more features implemented by the \PrintPackage{zahl2string} +% package and create macros which implement these features for the +% English language. +% \end{itemize} +% +% \StopEventually{} +% +% \section{Implementation} +% \iffalse +%<*package> +% \fi +% This package depends on these packages. +% \begin{macrocode} +\RequirePackage{xifthen} +\RequirePackage[autolanguage]{numprint} +% \end{macrocode} +% \subsection{Language checking} +% I used a counter |fnumprint@language| to save the (last) selected language. +% Meaning from the counter values: +% +% \begin{tabular}{rl} +% \textbf{value} & \textbf{meaning} \\ +% 0 & no supported language selected \\ +% 1 & German selected \\ +% 2 & English selected \\ +% \end{tabular} +% \begin{macrocode} +\newcounter{fnumprint@language} +\setcounter{fnumprint@language}{0} +\DeclareOption{german}{\setcounter{fnumprint@language}{1}} +\DeclareOption{ngerman}{\setcounter{fnumprint@language}{1}} +\DeclareOption{english}{\setcounter{fnumprint@language}{2}} +\DeclareOption{USenglish}{\setcounter{fnumprint@language}{2}} +\DeclareOption{american}{\setcounter{fnumprint@language}{2}} +\DeclareOption{UKenglish}{\setcounter{fnumprint@language}{2}} +\DeclareOption{british}{\setcounter{fnumprint@language}{2}} +\DeclareOption{canadian}{\setcounter{fnumprint@language}{2}} +\DeclareOption{australian}{\setcounter{fnumprint@language}{2}} +\DeclareOption{newzealand}{\setcounter{fnumprint@language}{2}} +\ProcessOptions\relax +% \end{macrocode} +% If none of the supported languages was selected a package warning will appear. +% \begin{macrocode} +\ifcase\value{fnumprint@language} + \PackageWarning{\@currname}{No supported language selected + \MessageBreak + This package supports only English and German + \MessageBreak + There will be no word names printed} +% \end{macrocode} +% The zahl2string package will only be loaded if it is necessary. +% \begin{macrocode} +\or + \RequirePackage{zahl2string} +% \end{macrocode} +% \begin{macro}{\ns@en@neunzehn} +% This internal marco expands to the English word name for a number. +% It only goes from 0 to 19. It will only be defined if it is necessary. +% \begin{macrocode} +\or + \newcommand{\ns@en@neunzehn}[1]{% + \ifcase#1 zero\or one\or two\or three\or four\or five\or six\or% + seven\or eight\or nine\or ten\or eleven\or twelve\or thirteen\or% + fourteen\or fifteen\or sixteen\or seventeen\or% + eighteen\or nineteen\fi% + } +\fi +% \end{macrocode} +% \end{macro} +% \subsection{Macro definition} +% \begin{macro}{\fnumprint} +% Here is the |\fnumprint| macro definition. +% It takes one not optional parameter. +% The parameter must be a number or a macro which expands to a number. +% It can also take a optional parameter which replaces the German word +% \enquote{eins} with \enquote{ein}. +% \begin{macrocode} +\DeclareRobustCommand{\fnumprint}[2][]{% + \ifthenelse{\NOT \(\isin{,}{#2} \OR \isin{.}{#2} \) + \AND -1 < #2 \AND #2 < 13}{% + \ifthenelse{\value{fnumprint@language} = 1}{% + \ifthenelse{\equal{#1}{ein} \AND #2 = 1}{ein}{\numstr{#2}}% + }{% + \ifthenelse{\value{fnumprint@language} = 2}{% + \ns@en@neunzehn{#2}% + }{\numprint{#2}}% + }% + }{\numprint{#2}}% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\fnumprintc} +% Here is the |\fnumprintc| macro definition. +% It takes one not optional parameter. +% The parameter must be the name of a \LaTeX{} counter. +% It can also take a optional parameter which replaces the German word +% \enquote{eins} with \enquote{ein}. +% \begin{macrocode} +\DeclareRobustCommand{\fnumprintc}[2][]{% + \ifthenelse{-1 < \value{#2} \AND \value{#2} < 13}{% + \ifthenelse{\value{fnumprint@language} = 1}{% + \ifthenelse{\equal{#1}{ein} \AND \value{#2} = 1}{ein}{\numstring{#2}}}{% + \ifthenelse{\value{fnumprint@language} = 2}{% + \ns@en@neunzehn{\value{#2}}% + }{\cntprint{#2}}% + }% + }{\cntprint{#2}}% +} +\endinput +% \end{macrocode} +% \end{macro} +% +% \iffalse +% +% \fi +% +% \Finale +\endinput diff --git a/Master/texmf-dist/source/latex/fnumprint/fnumprint.ins b/Master/texmf-dist/source/latex/fnumprint/fnumprint.ins new file mode 100644 index 00000000000..5ab72d861a0 --- /dev/null +++ b/Master/texmf-dist/source/latex/fnumprint/fnumprint.ins @@ -0,0 +1,23 @@ +%% See file 'fnumprint.dtx' for copyright and licence. +\input docstrip.tex + +\keepsilent +\usedir{tex/latex/fnumprint} +\usepreamble\mypreamble +\askforoverwritefalse +\generate{\nopreamble\file{fnumprint.sty}{\from{fnumprint.dtx}{package}}} + +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space fnumprint.sty} +\Msg{*} +\Msg{* To produce the documentation run the files} +\Msg{* `fnumprint.dtx' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} + +\endbatchfile -- cgit v1.2.3