summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/decimal/decimal.dtx
blob: 545f0e1b51cc532dfaa84903f488b27bd7553c16 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
%% \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         \~}
%\iffalse
%
% (c) copyright 2003 A Syropoulos & RWD Nickalls
% This program can be redistributed and/or modified under the terms
% of the LaTeX Project Public License Distributed from CTAN
% archives in directory macros/latex/base/lppl.txt; either
% version 1 of the License, or any later version.
%
% However, the above copyright notice does not apply in the case of
% ``Crete University Press'' as this publisher is not allowed to
% use or alter this file in any way.
%
% Please report errors or suggestions for improvement to
%    
%    Apostolos Syropoulos        and/or  Dick Nickalls
%    apostolo@obelix.ee.duth.gr          dicknickalls@compuserve.com
%
%\fi
% \CheckSum{21}
% \iffalse This is a Metacomment
%
%<decimal, >\ProvidesFile{decimal.sty}
%
%<decimal, >  [2003/07/12 v1.0 Package `decimal.sty']
%
%    \begin{macrocode}
%<*driver>
\documentclass{ltxdoc}
\usepackage{decimal}
\newcommand{\hidot}{\ensuremath{\raise.95ex\hbox{.}}}
\GetFileInfo{decimal.drv}
\begin{document}
   \DocInput{decimal.dtx}
\end{document}
%</driver>
%    \end{macrocode}
% \fi
%\StopEventually{}
%\MakeShortVerb{\|}
%\title{The `decimal' package}
%\author{A.Syropoulos and R.W.D.Nickalls}
% \date{2003/07/12}
%\maketitle
% \begin{abstract}
% In traditional English typography the decimal point in printed as
% slightly raised dot. This little package provides this functionallity
% by making the period (``.'') active in math mode. In addition, we
% redefine the commad |\.| so that it produces a dot in math mode, while
% it retains its ordinary functionality in text mode. 
%\end{abstract}
%
% \section{Introduction}
% The decimal point is variously used as  a comma (European), a
% full point (North American), or as a raised full point (English).
% While the comma and full point have always been supported,
% the English decimal point has been somewhat overlooked---until now.
%
% The \textsl{decimal} package places the height of the decimal
% point level with the center of the `equals' sign, as shown by 
% $x=0.3456$, by re-implementing a math mode full point as the 
% |\cdot| character. However, in old texts the practice was to place
% the full point rather higher, as in $25{\hidot}345$. While this is a bit 
% too high for visual comfort nowadays, the reason for the original high
% position lies in the name used by metal type-setters for the decimal point, 
% namely a ``turned' full point, as mentioned in the following extract from 
% an $80$~year-old \textsl{Authors' \& Printers' Dictionary}.%
% \footnote{Collins H (1921). Authors' \& Printers' Dictionary: a guide for 
% authors, editors, printers, correctors of the press, compositors, and 
% typists. With a full list of abbreviations. An attempt to codify the best
% typographical practices of the present day. (pub: Humphrey Milford, 
% London).}
%
%\begin{center}
%\begin{minipage}{0.7\textwidth}
%\begin{itemize}
% \item [\ ]\textbf{\hspace{-5mm}decimal fractions}, no decimal can be plural,
% or take verb in pl., however many figures it contains; (typ.)
% print in figures. The decimal
% point in all cases to be a full point turned.
%\end{itemize}
%\end{minipage}
%\end{center}
%
% But what is meant by a full point `turned'? The clue comes from an entry 
% in the dictionary on `turned commas', as follows.
%\begin{center}
%\begin{minipage}{0.7\textwidth}
%\begin{itemize}
%  \item [\ ]\textbf{\hspace{-5mm}turned commas} (typ.),
%   those used at the commencement of a quotation, as these~``, two
%   apostrophes being  at the end.
%\end{itemize}
%\end{minipage}
%\end{center}
% If we  use a turned comma to  show the location  a  full point would occupy 
% if `turned' in the same way,  we  can see that the position is somewhat 
% high, as in the decimal fraction $2$`$6$. Swapping the turned
% comma for a similarly turned full point we obtain~$2{\hidot}6$, which 
% shows the decimal point in essentially the position we observe in older 
% texts. All is now clear---the typesetter simply turned the metal block of 
% the full point through $180\deg$ and, \textsl{eh presto}, he had a practical
%  decimal point, albeit slightly on the high side.
%
% \section{Usage}
%
% First use  the \textsl{decimal} package using the |\usepackage{}| command 
% in the preamble.
%\begin{center}
% |\usepackage{decimal}|
%\end{center}
% The \textsl{decimal} package will now operate globally to
% implement the English decimal point where one types a fullpoint in
% math mode. For example the value $123.456$ is obtained by typing
% |$123.456$|. The correct positioning of the decimal is preserved even
% when the smaller mathmode fonts are used, as shown in the following two 
% examples.
% $$
%  23.562^{1.23^{\,2.6}}\hspace{2cm}
%  j = \sqrt{  \underbrace{{ax^2 + bx +c }}_{-3.78} \ +\cos(3\pi/4 +\theta)}
% $$
%
% On those occasions when a true full point is
% required in math mode (e.g.~at the end of a series of equations)
% then this is implemented by typing |\.|. For example
% $$
%   y = ax^2 + bx +c\.
% $$
% is obtained by typing |$y = ax^2 + bx +c\.$|.
%
% It is important to appreciate that there are math mode commands which 
% include a full point as an integral part of the command, and in these cases 
% one must, of course,  \textsl{not} use the |\.| command. A common situation 
% where this arises is in the typesetting of unbalanced vertical braces, in 
% which case a full point is used by one of the commands to represent the 
% absent brace. For example, the structure
% $$
% \left\{
% \begin{array}{l}
% \displaystyle   x = -b/6 \\
% \displaystyle   y = (4ac - b^2)/7
% \end{array}
% \right.
% $$
% is typeset by the following code
%\begin{verbatim}
% $$
% \left\{
%   \begin{array}{l}
%   \displaystyle   x =  -b/6 \\
%   \displaystyle   y = (4ac - b^2)/7
%   \end{array}
% \right.
% $$
%\end{verbatim}
% which uses the command \verb!\right.! to balance the left brace
% command \verb!\left\{! before the array. Since the full point
% is part of the command then there is no need to use the |\.| command.
% If we now add some punctuation to the above structure, say, a
% comma terminating the first line and a full point to terminate
% the second line as follows,
% $$
%  \left\{
% \begin{array}{l}
%  \displaystyle   x = -b/6, \\
%  \displaystyle   y = (4ac - b^2)/3\.
% \end{array}
% \right.
% $$
% then we  add the full point using
% the command |\.|  as shown in the following code.
%\begin{verbatim}
% $$
% \left\{
%  \begin{array}{l}
%   \displaystyle   x =  -b/6, \\
%   \displaystyle   y = (4ac - b^2)/7\.
%  \end{array}
% \right.
%
%\end{verbatim}
% Outside math mode the command \verb!\.! performs its usual
% function of placing a dot above a character, for example
% the command \verb!\.{a}! generates the  \.{a} character.
%
% \section{The Implementation}
%
% The code of the package is quite simple. Initially, we introduce a new
% command which has the functionality of the |\.| command. Then we redefine
% the |\.| command so that it produces a dot in math mode, while it 
% retains its original functionality in text mode.
%    \begin{macrocode}
%<*decimal>
\let\peri@d\.
\def\.{\ifmmode\mbox{.}\else\expandafter\peri@d\fi}
%    \end{macrocode}
% One thing we need to do is to define a new math command which will yield a 
% |\cdot| without any leading or trailing white space. 
%    \begin{macrocode}
\DeclareMathSymbol{\cd@t}{\mathord}{symbols}{"01}
%    \end{macrocode}
% Now, we are ready to change the mathcode of the period so that it produces
% the desired result in math mode. Note that this ``trick'' is documented
% in the \TeX{}book and in the book ``Digital Typography Using \LaTeX,''
% Springer-Verlag New York, ISBN 0-387-95217-9, 2003.   
%    \begin{macrocode}
\mathcode`\.="8000
{\catcode`\.=\active%
 \gdef.{\cd@t} }
%</decimal>
%    \end{macrocode}
%
% \Finale