% \iffalse meta-comment
%
% Copyright (C) 2023 by Mario Fantini <marfant7@gmail.com>
% ---------------------------------------------------------
% 
% 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.
%
% This work has the LPPL maintenance status 'maintained'.
% 
% The Current Maintainer of this work is Mario Fantini.
%
% This work consists of the files isphysicalmath.dtx and isphysicalmath.ins
% and the derived file isphysicalmath.sty.
%
% \fi
%
% \iffalse
%<*driver>
\ProvidesFile{isphysicalmath.dtx}
%</driver>
%<package>\NeedsTeXFormat{LaTeX2e}[2005/12/01]
%<package>\ProvidesPackage{isphysicalmath}
%<*package>
[2023/09/18 v1.0.0 .dtx isphysicalmath file]
%</package>
%<package>% option [dc]: changes dots in commas.
%<package>\DeclareOption{dc}{
%<package>\def\ispmdc#1.#2{{#1,#2}}
%<package>}
%<package>% option [comma]: scientific international notation for thousands.
%<package>\DeclareOption{comma}{
%<package>	\def\ispmnovem#1#2#3#4#5#6#7#8#9{#1#2#3,#4#5#6,#7#8#9}
%<package>	\def\ispmocto#1#2#3#4#5#6#7#8{#1#2,#3#4#5,#6#7#8}
%<package>	\def\ispmseptem#1#2#3#4#5#6#7{#1,#2#3#4,#5#6#7}
%<package>	\def\ispmsex#1#2#3#4#5#6{#1#2#3,#4#5#6}
%<package>	\def\ispmquinque#1#2#3#4#5{#1#2,#3#4#5}
%<package>	\def\ispmquattuor#1#2#3#4{#1,#2#3#4}
%<package>}
%<package>\ExecuteOptions{dc}
%<package>\ExecuteOptions{comma}
%<package>\ProcessOptions\relax
%<package>% space between value and measurement unit
%<package>\newcommand{\ispms}{\hspace{0.5mm}}
%<package>% normal text rendering for first measurement unit
%<package>\newcommand{\ispmntone}[1]{\textnormal{#1}}
%<package>% jolly: the default setting is --- normal text rendering for a generic 'entity'.
%<package>% If you are a developer, you can modify it when and how you want.
%<package>\newcommand{\ispm}[1]{\textnormal{#1}}
%<package>% normal text rendering for first and second measurement units
%<package>\newcommand{\ispmnttwo}[2]{\textnormal{#1}\textnormal{#2}}
%<package>% space between first and second measurement units
%<package>\newcommand{\ispmss}{\hspace{0.15mm}}
%<package>% \ispm if you have only a measurement unit
%<package>% e.g. $F = 20 \ispmone{N}$
%<package>\newcommand{\ispmone}{\ispms\ispmntone}
%<package>% \ispm if you have two measurement units
%<package>% e.g. $L = 20 \ispmtwo{N}{m}$
%<package>\newcommand{\ispmtwo}[2]{\ispms\ispmnttwo\ispmss{#1}\ispmnttwo\ispmss{#2}}
%<package>% normal text rendering for third measurement unit
%<package>\newcommand{\ispmntr}[1]{\textnormal{#1}}
%<package>% ispm if you have three measurement units
%<package>% e.g. $V = 8 \ispmtwo{m}{m}\ispmthird{m}$
%<package>\newcommand{\ispmthird}[1]{\ispmss\ispmntr{#1}}
%<*driver>
\documentclass{ltxdoc}
\usepackage{isphysicalmath}[2023/09/18]
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern} 
\usepackage{hyperref}
\usepackage{amssymb}
\usepackage{makeidx}
\makeindex
\def\indice{%
\renewcommand*\contentsname{General index}%
\tableofcontents%
\clearpage}

\EnableCrossrefs         
\CodelineIndex
\RecordChanges
\begin{document}
  \DocInput{isphysicalmath.dtx}
  \PrintChanges
\end{document}
%</driver>
% \fi
%
% \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{v1.0.0}{2023/09/18}{Initial version}
%
%\indice
%
%\GetFileInfo{isphysicalmath.dtx}
%
%\title{The \textsf{isphysicalmath} package\thanks{This document
%corresponds to  \textsf{isphysicalmath}~\fileversion, dated \filedate.}}
%\author{Mario Fantini \\ \texttt{marfant7@gmail.com}}
%
%\maketitle
%
%\begin{abstract}
%This package helps user to write mathematical and  physical formulas
%-- their numerical values, their measurement units, their factors, their
%dimensions -- in a 
%scientific way (international mainly), by an elegant formatting.
%\end{abstract}
%\section{Introduction}
%
%\LaTeX{} is a powerful language, but to take advantage of it, to respect 
%its quality and to observe the discipline of matters that \LaTeX{} interacts with---it
%requires some devices.
%
%If you are interested in math and physics, here comes \textsl{isphysicalmath} inside \LaTeX{}
%as far as international scientific notation and formatting of formulas,
% quantities, numerical values, factors, dimensions, measurement units. \\
%
%The name \textsl{isphysicalmath} means either:
%\begin{itemize}
%	\item Physics is Math's daughter;
%	\item International System of units (SI) is observed.
%\end{itemize}
%
%\section{Conventions}
%To have a clear doc text, I'll not refer to physical quantities
%dimensions every times; for them, the measurement units 
%\textsl{isphysicalmath} acting is valid too.
%
%\section{Dependencies}
% \textsl{isphysicalmath} has not dependencies.
%
%Internally,  it uses standard \LaTeX{} built-in commands like: \texttt{\textbackslash textnormal},
%\texttt{\textbackslash hspace\{\}};
% however, it performs its activity in complex math environment too.
%\newpage
%\section{Usage}
%
%\DescribeMacro{\ispm}
%
%\textit{hp.} It is a jolly command. The default setting substitutes the famous
% \LaTeX{} built-in command \texttt{\textbackslash textnormal}, in other words
% \texttt{\textbackslash textnormal} is the value of \texttt{\textbackslash ispm}
% variable. So, if you are a developer  you can modify this variable how and when you want.
% I use it for  generic ``entities''.  \\
%\textit{th.} Default setting: normal text rendering for a generic ``entity''.\\
%|\ispm|\marg{generic ``entity'' in place of argument}  \\ \\
%
%\DescribeMacro{\ispmone}
%
%\textit{hp.} You have only a measurement unit. \\
%\textit{th.} Horizontal space between measurement unit
%and numerical value,
%and normal text rendering for the measurement unit.\\
%|\ispmone|\marg{measurement unit in place of  argument}  \\ \\
% \DescribeMacro{\ispmtwo}
%
%\textit{hp.} You have two measurement units. \\
%\textit{th.} Horizontal space between the first measurement unit
%and numerical value, horizontal space  between the first measurement unit 
%and second measurement unit; normal text rendering for both measurement units.\\
%|\ispmtwo|\marg{the first measurement unit in place of the I argument}\marg{second
%measurement unit in place of II argument}  \\ \\
%\DescribeMacro{\ispmthird}
%
%\textit{hp.} You have three measurement units. \\
%\textit{th.} Horizontal space between the first measurement unit
%and numerical value, horizontal space between the first
%measurement unit and the second %measurement unit, horizontal space between
%the second measurement unit and  third measurement unit; normal text 
%rendering for all the measurement units.\\
%|\ispmtwo|\marg{the first measurement unit in place of the I argument}\marg{the second 
%measurement unit in place of the II argument}%
%|\ispmthird|\marg{third measurement unit in place of III argument} \\ 
% Or, e.g. if you have a fraction [see In-depth formatting' 
%(\autoref{subsec:inDepthFormatting})]:\\
%|\ispmone|\marg{the first measurement unit in place of the I argument (numerator)}
%|\ispmone|\marg{the second %measurement unit in place of the II argument (denominator)}
%|\ispmthird|\marg{third measurement unit in place of III argument} \\ \\
%
%\begin{environment}{dc}
% option \textit{dc} \\
%\textbackslash usepackage\oarg{dc}\{isphysicalmath\} \\
%
%$\forall x,y, \ldots \in \mathbb{N}$:\\ 
%|\ispmdc| \meta{x.y}  \\
%\end{environment}
%
%\begin{environment}{comma}
% option \textit{comma} \\
%\textbackslash usepackage\oarg{comma}\{isphysicalmath\} \\
%
%$\forall a,b,c,d,e,f,g,h,i \in \mathbb{N}$: \\ 
%|\ispmnovem| \meta{abcdefghi} \\
%|\ispmocto| \meta{abcdefgh} \\
%|\ispmseptem| \meta{abcdefg} \\
%|\ispmsex| \meta{abcdef} \\
%|\ispmquinque| \meta{abcde} \\
%|\ispmquattuor| \meta{abcd} \\
%\end{environment}
%\newpage
% \section{In-depth usage}
%\subsection{In-depth formatting}
%\label{subsec:inDepthFormatting}
%	\textsl{isphysicalmath} automatical settings:
%	\begin{itemize}
%		\item 0.5\ispmone{mm} between numerical value and first
%			measurement unit, <<first>> if there are others.
%		\item 0.15\ispmone{mm}  between two or three 
%			measurement units, or between  measurement units and their factors.
%		\item Normal text for measurement unit.
%	\end{itemize}
%
%\begin{description}
%	\item [Without \textsl{isphysicalmath}] ~\ \\
%		\begin{itemize}
%			\item Without mathematical environment:  
%			\begin{center}
%				F = 1 N
%			\end{center}
%I don't like this style, and it has not a logical meaning.
%		        \item By mathematical environment:
%
%\[F = 1 N\]
%
%I don't like this style, and it has not a logical meaning.
%
%The code:
%\begin{verbatim}
%\[ F = 1 N \]
%\end{verbatim}
%\end{itemize}
%
%
%\item [By \textsl{isphysicalmath}] ~\ \\
%	\begin{itemize}
%		\item With one measurement unit.
%
%	\[F = 1 \ispmone{N}\]
%
%	The code: 
%\begin{center}
%\begin{verbatim}
%\[
%F = 1 \ispmone{N}  
%\]
%\end{verbatim}
%\end{center}
%
%\item With two measurement units (a).
%
%	\[L = 1 \ispmtwo{N}{m}\]
%
%The code: 
%\begin{center}
%\begin{verbatim}
%\[
%	L = 1 \ispmtwo{N}{m}  
%\]
%\end{verbatim}
%\end{center}
%
%\item With two measurement units and a factor for the last unit. 
%\[L = 1 \ispmtwo{N}{mm}\ispmthird{(10$^{-3}$)}\]
%
%The code: 
%\begin{center}
%\begin{verbatim}
%\[
%	L = 1 \ispmtwo{N}{mm}\ispmthird{(10$^{-3}$)}  
%\]
%\end{verbatim}
%\end{center}
%
%\item With three measurement units.
%
%	\[V = 8 \ispmtwo{m}{m}\ispmthird{m}\]
%
%The code: 
%\begin{center}
%\begin{verbatim}
%\[
%V = 8 \ispmtwo{m}{m}\ispmthird{m} 
%\]
%\end{verbatim}
%\end{center}
%
%\item With a  declared additional inner \texttt{\textbackslash textnormal}, with inner 
%	\texttt{\textbackslash tiny} environment, 
%	and with inner mathematical environment (a).
%	\[
%		m = \gamma V = 1 \frac{\ispmone{kg}}
%		{\ispmone{m$^{\textnormal{\tiny 3}}$}}
%		\ispmthird{m$^3$}
%\]
%
%The code: 
%\begin{center}
%\begin{verbatim}
%\[
%m = \gamma V = 1 \frac{\ispmone{kg}}
%{\ispmone{m$^{\textnormal{\tiny 3}}$}}\ispmthird{m$^3$}
%\]
%\end{verbatim}
%\end{center}
%
%\item With inner mathematical environment (b).
%	\[
%		m = \gamma V = 1 \frac{\ispmone{kg}}
%		{\ispmone{m$^3$}}\ispmthird{m$^3$}
%	\]
%The code: 
%\begin{center}
%\begin{verbatim}
%\[
%m = \gamma V = 1 \frac{\ispmone{kg}}
%{\ispmone{m$^3$}}\ispmthird{m$^3$}
%\]
%\end{verbatim}
%\end{center}
%
%\item  With inner mathematical environment (c) and 
%	\texttt{\textbackslash large}, \texttt{\textbackslash normalsize} environments.
%\[
%	m = \gamma V = 1 \textnormal{\large$\frac{\ispmone{kg}}
%	{\ispmone{m$^3$}}$}\textnormal{\normalsize\ispmthird{m$^3$}}
%\]
%The code: 
%\begin{center}
%\begin{verbatim}
%\[
%m = \gamma V = 1 \large\frac{\ispmone{kg}}
%{\ispmone{m$^3$}}\normalsize\ispmthird{m$^3$}
%\]
%\end{verbatim}
%\end{center}
%
%\item With inner mathematical environments (d).
%
%The following is a  trascendental physical example, but it  could be useful like
%material for some mathematical need; however, this case demonstrates
%\LaTeX{} power and \textsl{isphysicalmath}.
%
%	\[u = 7  \ispmtwo{$\alpha$m}{$\beta$m$^2$}
%		\ispmthird{$\delta$s}
%	\]
%The code: 
%\begin{center}
%\begin{verbatim}
%\[
%u = 7  \ispmtwo{$\alpha$m}{$\beta$m$^2$}
%		\ispmthird{$\delta$s}
%\]
%\end{verbatim}
%\end{center}
%
%\item About physical quantities dimensions.
%
%e.g.
%\[
%F = m a = \ispmtwo{[M]}{[L]}\ispmthird{[T$^{-2}$]}
%\]
%The code: 
%\begin{center}
%\begin{verbatim}
%F = m a = \ispmtwo{[M]}{[L]}\ispmthird{[T$^{-2}$]}
%\end{verbatim}
%\end{center}
%\end{itemize}
%\end{description}
%
%\newpage
%\subsection{In-depth notation}
%
%Option \textsl{dc} and option \textsl{comma} are compatible,
%you can use both in the same document; e.g.: \\ 
%\texttt{\textbackslash usepackage[comma, dc]\{isphysicalmath\}} \\
%\begin{center}
% 1,234 \\
% 1,234,567 
%\end{center}
%The code: 
%\begin{verbatim}
%\ispmdc 1.234 \\
%\ispmseptem 1234567
%\end{verbatim}
%
%\subsubsection{option <dc>}
%
%\textsl{Usage}: \texttt{\textbackslash usepackage[dc]\{isphysicalmath\}} \\ 
%
%The code of this option is not mine, it already exists in \LaTeX{} literature, 
% I discovered it in \tiny\url{https://en.wikibooks.org/wiki/LaTeX}\normalsize. \\
%
%This option changes dots in commas. It is useful for some users who don't 
%use scientific international notation. It is convenient for users who 
%respect scientific international notation, so they change dots
%in commas to select thousands and not to separate the unit from
%negative numbers. \\
%
%e.g.
%\begin{center}
%	1.234 becomes 1,234
%\end{center}
%The code: 
%\begin{center}
%\begin{verbatim}
%\ispmdc 1.234
%\end{verbatim}
%\end{center}
%
%\subsubsection{option <comma>}
%
%\textsl{Usage}: \texttt{\textbackslash
%\{usepackage\}[comma]\{isphysicalmath\}} \\ 
%
%It adds comma after every three digits, according to international
%scientific notation.
%
%For this task there are six ispm commands, in the next \textsl{isphysicalmath}
%version I'll automate this goal introducing one single ispm command.  \\
%\begin{center}
%	100,000,000 \\
%	10,000,000 \\
%	1,000,000 \\
%	100,000 \\
%	10,000 \\
%	1,000
%\end{center}
%
%The code: 
%\begin{center}
%\begin{verbatim}
%\ispmnovem 100000000 \\
%\ispmocto 10000000 \\
%\ispmseptem 1000000 \\
%\ispmsex 100000 \\
%\ispmquinque 10000 \\
%\ispmquattuor 1000
%\end{verbatim}
%\end{center}
%\newpage
%
%\section{isphysicalmath url}%
%Package home URL: \tiny \url{https://github.com/MartDiVenus/LaTeX/tree/isphysicalmath} \normalsize%
%
%\section{Copyright}
%
%Copyright (C) 2023 by Mario Fantini <marfant7@gmail.com>
%
%This file 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: \\
%\url{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.
%
% This work has the LPPL maintenance status `maintained'. 
% 
% The Current Maintainer of this work is Mario Fantini.
%
% This work consists of the files isphysicalmath.dtx and isphysicalmath.ins
% and the derived file isphysicalmath.sty.
% \Finale
\endinput
