From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- .../latex/contrib/textualicomma/textualicomma.dtx | 168 +++++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 macros/latex/contrib/textualicomma/textualicomma.dtx (limited to 'macros/latex/contrib/textualicomma/textualicomma.dtx') diff --git a/macros/latex/contrib/textualicomma/textualicomma.dtx b/macros/latex/contrib/textualicomma/textualicomma.dtx new file mode 100644 index 0000000000..8eaf3d505d --- /dev/null +++ b/macros/latex/contrib/textualicomma/textualicomma.dtx @@ -0,0 +1,168 @@ +%\iffalse +%<*package> +%% \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 \~} +% +%\fi +% \iffalse +% Doc-Source file to use with LaTeX2e +% Copyright (C) 2017-18 Sebastian Friedl +% +% This work is subject to the LaTeX Project Public License, Version 1.3c or -- at +% your option -- any later version of this license. +% The work consists of the files textualicomma.dtx, textualicomma.ins, +% textualicomma-doc.dtx and the derived file textualicomma.sty +% +% This work has the LPPL maintenance status 'maintained'. +% Current maintainer of the work is Sebastian Friedl. +% \fi +% +% +% +% \changes{1.0}{2017/12/03}{Initial release} +% \changes{1.1}{2018/08/23}{Take care of dependencies and requirements} +% +% +% \subsubsection*{Initialization} +% \begin{macrocode} +\ProvidesPackage{textualicomma}% + [2018/08/23 v1.1 Use textual comma characters as decimal separators] +\NeedsTeXFormat{LaTeX2e} +% \end{macrocode} +% +% +% +% \bigskip +% \subsubsection*{Load dependencies and check requirements} +% Load the \sty{amstext} package to enable escaping to horizontal mode: +% \begin{macrocode} +\RequirePackage{amstext} +% \end{macrocode} +% +% Check whether "\rmfamily", "\sffamily" and "\ttfamily" are available: +% \begin{macrocode} +\AtBeginDocument{% + \ifx\rmfamily\@undefined% + \PackageError{textualicomma}% + {\noexpand\rmfamily is undefined. textualicomma doesn't work}% + {textualicomma requires the \noexpand\rmfamily command to be + defined; otherwise, this package won't work properly}% + \PackageWarning{textualicomma}{Emergency stop}% + \stop% + \fi% + \ifx\sffamily\@undefined% + \PackageError{textualicomma}% + {\noexpand\sffamily is undefined. textualicomma doesn't work}% + {textualicomma requires the \noexpand\sffamily command to be + defined; otherwise, this package won't work properly}% + \PackageWarning{textualicomma}{Emergency stop}% + \stop% + \fi% + \ifx\ttfamily\@undefined% + \PackageError{textualicomma}% + {\noexpand\ttfamily is undefined. textualicomma doesn't work}% + {textualicomma requires the \noexpand\ttfamily command to be + defined; otherwise, this package won't work properly}% + \PackageWarning{textualicomma}{Emergency stop}% + \stop% + \fi% +} +% \end{macrocode} +% +% +% +% \subsubsection*{Package options} +% Provide a \opt{sffamily} option for using the sans serif font: +% \begin{macrocode} +\newif\if@txticmma@sffamily +\@txticmma@sffamilyfalse +\DeclareOption{sffamily}{\@txticmma@sffamilytrue} +% \end{macrocode} +% +% Provide a \opt{ttfamily} option for using the typewriter font: +% \begin{macrocode} +\newif\if@txticmma@ttfamily +\@txticmma@ttfamilyfalse +\DeclareOption{ttfamily}{\@txticmma@ttfamilytrue} +% \end{macrocode} +% +% Process all options passed to \sty{textualicomma}: +% \begin{macrocode} +\ProcessOptions +% \end{macrocode} +% +% +% +% \subsubsection*{Configuration} +% Use the roman text font family by default: +% \begin{macrocode} +\def\txticmma@ffamily{\rmfamily} +% \end{macrocode} +% +% If one of the \opt{sffamily} or \opt{ttfamily} options has been used, changes are applied: +% \begin{macrocode} +\if@txticmma@sffamily\def\txticmma@ffamily{\sffamily}\fi +\if@txticmma@ttfamily\def\txticmma@ffamily{\ttfamily}\fi +% \end{macrocode} +% +% \begin{macro}{\textualicommafont} +% Provide a command for switching the font family inside the document: +% \begin{macrocode} +\def\textualicommafont#1{\def\txticmma@ffamily{#1}} +% \end{macrocode} +% \end{macro} +% +% +% +% \subsubsection*{Defining the \enquote{textual intelligent comma}} +% At the very beginning, provide access to the textual comma character. +% Also, define a math character referring to the comma contained in the math font, +% to be used in enumerations: +% \begin{macrocode} +\AtBeginDocument{% + \def\m@thtextcomma{\text{\txticmma@ffamily,}} + \mathchardef\mathcomma\mathcode`\,% + \mathcode`\,="8000 % +} +% \end{macrocode} +% +% Make the comma character active and map it to the \enquote*{smart comma}: +% \begin{macrocode} +{\catcode`,=\active + \gdef,{\futurelet\@let@token\sm@rtcomma} +} +% \end{macrocode} +% +% Last but not least, define the \enquote*{smart comma} \dots +% \begin{macrocode} +\def\sm@rtcomma{% + \ifx\@let@token\@sptoken\m@thtextcomma\protect\,\else + \ifx\@let@token\space \else + \m@thtextcomma\fi\fi} +% \end{macrocode} +% +% \dots\ and allow changing the period's font: +% \begin{macrocode} +\DeclareMathSymbol{.}{\mathalpha}{operators}{`.} +% \end{macrocode} +% +% +% +% \subsubsection*{Famous last words} +% That's enough code. "\endinput". +% \begin{macrocode} +\endinput +% \end{macrocode} \ No newline at end of file -- cgit v1.2.3