summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/textualicomma/textualicomma.dtx
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/textualicomma/textualicomma.dtx
Initial commit
Diffstat (limited to 'macros/latex/contrib/textualicomma/textualicomma.dtx')
-rw-r--r--macros/latex/contrib/textualicomma/textualicomma.dtx168
1 files changed, 168 insertions, 0 deletions
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 \~}
+%</package>
+%\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