diff options
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r-- | Master/texmf-dist/doc/latex/pm-isomath/README | 60 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/pm-isomath/manifest.txt | 34 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/pm-isomath/pm-isomath.pdf | bin | 0 -> 586666 bytes | |||
-rw-r--r-- | Master/texmf-dist/source/latex/pm-isomath/pm-isomath.dtx | 1107 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/pm-isomath/pm-isomath.sty | 202 |
5 files changed, 1403 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/pm-isomath/README b/Master/texmf-dist/doc/latex/pm-isomath/README new file mode 100644 index 00000000000..9a6a9f4a436 --- /dev/null +++ b/Master/texmf-dist/doc/latex/pm-isomath/README @@ -0,0 +1,60 @@ +The PM-ISOmath package, version 1.00 of 2017-08-22 +Original author: Claudio Beccari, 2017 +LaTeX Project Public Licence LPPL v.1.3 (or later) + +The PM-ISOmath name stands for "Poor Man ISO Math". In substance + this package is a poor man solution to the task of typesetting + math fulfilling the ISO regulations "for physical sciences and technology" (formerli regulations ISO 31/XI, now ISO\,80000). + These regulations refer mostly to the family, series and shape + of fonts to be used with symbols of various nature. + +This package gets inspiration from the ISOmath package by Günter +Milde, but tries to get the same results without using any math +[font] groups (or families). As pdfLaTeX users may recall, this +typesetting program may se at maximum 16 math [font] groups (or +math font families); sometimes this number results in an error +that forbids the user to use the symbols s/he needs. + +The trick used in this package consists in employing text fonts +within the \text command (defined by the amsmath package that, therefore, is a dependence to which pmisomath is subjected) and +chose text font families, series, and shapes to be used within +that command argument. + +The commands are such as to fulfil some math requirements; for +example while in the scope of the \boldmath declaration, the +series is automatically set to bold without any user intervention. +The font size is automatically taken care by \text, so that fonts +have the correct size also while typesetting exponents or subscripts. + +Nevertheless, through proper advanced command options, the user +remains the person principally responsible of using the right +font for the right symbol in a document that must fulfil the +ISO regulations. + +This package is usable only with pdfLaTeX; LuaLaTeX and XeLaTeX +can access OpenType math fonts through the package unicode-math, +and with the "math-style=ISO" option they have the math switching +commands agree with the ISO regulations. + +pdfLATeX users have available some packages to fulfil the ISO requirements; principally the ISOmath package thet is subject +to a number of limitations due the the particular math environment +of the user, and libertinust1math that produces a complete set-up +with math fonts that match very well text fonts that are darker +than the standard default Computer Modern ones (including the +CM-super and the Latin Modern ones). + +This package works very well with the Latin Modern fonts; in +practice in math mode it uses the same Latin text fonts, and +the corresponding families, series, and shapes of the LGR +encoded CBfonts; it may work also with the CM and the CM-super +fonts, but the original author never uses them, therefore he +cannot guarantee any suitable result. + +For installation of this package, simply run the pmisomath.dtx +through pdfLaTeX (and only pdfLaTeX); move the produced sty file +to the .../tex/latex/pmisomath/ folder; if it does not exist, +create it; similarly move pmisomath.dtx to .../source/latex/pmisomath/ +and pmisomath.pdf to .../doc/latex/pmisomath/. + + + diff --git a/Master/texmf-dist/doc/latex/pm-isomath/manifest.txt b/Master/texmf-dist/doc/latex/pm-isomath/manifest.txt new file mode 100644 index 00000000000..cefa22bcf99 --- /dev/null +++ b/Master/texmf-dist/doc/latex/pm-isomath/manifest.txt @@ -0,0 +1,34 @@ +This is the manifest.txt file that accompanies the package PM-ISOmath, +version 1.00 of 2017 + +Original author: Claudio Beccari, 2017 + +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 +2003/12/01 or later. + +This work itself and every derived work are subject to the above +licence. + +This work has the LPPL maintenance status "author-maintained". + +The actual maintainer (2017) is Claudio Beccari: +claudio dot beccari at gmail dot com + +This work consists of the files listed in manifest.txt, that is: + manifest.txt + README + pm-isomath.dtx + +The derived files are + pm-isomath.pdf + pm-isomath.sty + +The pm-isomath.dtx file is a self extracting and self documenting +one; if you run pdflatex (and only pdflatex) on it you get at the +same time the English documentation and the package file. + +The derived file pm-isomath.sty may be used only with pdflatex. diff --git a/Master/texmf-dist/doc/latex/pm-isomath/pm-isomath.pdf b/Master/texmf-dist/doc/latex/pm-isomath/pm-isomath.pdf Binary files differnew file mode 100644 index 00000000000..d006a1a0755 --- /dev/null +++ b/Master/texmf-dist/doc/latex/pm-isomath/pm-isomath.pdf diff --git a/Master/texmf-dist/source/latex/pm-isomath/pm-isomath.dtx b/Master/texmf-dist/source/latex/pm-isomath/pm-isomath.dtx new file mode 100644 index 00000000000..7461ddd510e --- /dev/null +++ b/Master/texmf-dist/source/latex/pm-isomath/pm-isomath.dtx @@ -0,0 +1,1107 @@ +% \iffalse meta-comment +%<*internal> +\begingroup +\input docstrip.tex +\keepsilent + + +\preamble + ______________________________________________________ + The PM-ISOmath bundle + Copyright (C) 2017 Claudio Beccari + All rights reserved + + License information appended + +\endpreamble +\postamble + +Copyright 2017 Claudio Beccari + +Distributable under the LaTeX Project Public License, +version 1.3c or higher (your choice). The latest version of +this license is at: http://www.latex-project.org/lppl.txt + +This work is "author-maintained" + +This work consists of this file pm-isomath.dtx, a README file +the manifest.txt file, and the derived files: + pm-isomath.sty, pm-isomath.pdf. + +\endpostamble + +\askforoverwritefalse + +\generate{\file{pm-isomath.sty}{\from{pm-isomath.dtx}{style}} + } + +\def\tmpa{plain} +\ifx\tmpa\fmtname\endgroup\expandafter\bye\fi +\endgroup +%</internal> +% +% Copyright 2017 Claudio Beccari +% +% This file is part of the PM-ISOmath bundle +% ------------------------------------------- +% +% It 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 2003/12/01 or later. +% +% This file has the LPPL maintenance status "author-maintained". +% +% The list of all files belonging to the PM-ISOmath bundle is +% given in the file `manifest.txt'. +% +% The set of derived (unpacked) files belonging to the distribution +% and covered by LPPL is created by the self unpacking file +% pm-isomath.dtx which is the principal part of the distribution. +% +% \fi +% +% \iffalse +%^^A The following trick uses the same date for every file header. +%<style>\NeedsTeXFormat{LaTeX2e}[2017/01/01] +%<*driver> +\ProvidesFile{pm-isomath.dtx}[% +%</driver> +%<style>\ProvidesPackage{pm-isomath}[% +%<*driver,style> +2017/08/22 v.1.0.00 +%<style>Poor man package for typesetting ISO compliant math when using pdfLaTeX] +%</driver,style> +%<*driver> +] +%</driver> +%<*driver> +\documentclass{ltxdoc} +\GetFileInfo{pm-isomath.dtx} +\title{\texttt{PM-ISOmath}\\The Poor Man ISO math bundle} +\date{\fileversion\space--- \filedate} + \author{Claudio Beccari\thanks{E-mail: \texttt{claudio dot beccari at gmail dot com}}} + +\usepackage{metalogo,multicol,enumitem,url,booktabs} +\usepackage[utf8]{inputenc} +\usepackage[LGR,T1]{fontenc} +\usepackage{lmodern} +\usepackage{pm-isomath} +\let\originalmeta\meta +\renewcommand\meta[1]{{\normalfont\originalmeta{#1}}} +\def\prog#1{\textsf{#1}} +\def\pack#1{\textsf{\slshape#1}} +\def\env#1{\textit{#1}}\let\amb\env +\def\file#1{\texttt{#1}} +\def\marg#1{{\normalfont\texttt{\{}\meta{#1}\texttt{\}}}} +\def\Marg#1{{\texttt{\{#1\}}}} +\def\opz#1{{normalfont\textsl{#1}}} +\def\oarg#1{{\normalfont\texttt{[\meta{#1}]}}} +\def\Oarg#1{{\normalfont\texttt{[#1]}}} +\def\parg#1{{\normalfont\texttt{(\meta{#1})}}} +\def\Parg#1{{\normalfont\texttt{(#1)}}} +\providecommand\pdfLaTeX{pdf\/\LaTeX} +\providecommand\pdfTeX{pdf\/\TeX} +\newenvironment{ttsintassi}{\flushleft\ttfamily\obeylines}{\endflushleft} +\begin{document}\errorcontextlines=9 +\maketitle +\begin{multicols}{2} +\tableofcontents +\end{multicols} + \setlength\hfuzz{20pt} + \DocInput{pm-isomath.dtx} +\end{document} +%</driver> +% \fi +% +% ^^A \CheckSum{}% +% \begin{abstract} +% The ISO regulation for typesetting math in the field of physics +% and technology are pretty stringent and imply legal questions +% that we do not treat here; It suffices to say the an +% ``Expertise'' for a Legal Court that does not fulfil such +% regulations in certain countries may be rejected by the Court, +% independently from its expert contents. +% +% Authors may not like them, but in the filed of \emph{applied +% sciences}, or better, of \emph{experimental sciences} that +% use measured quantities and units of measure, they are compulsory. +% +% With \LuaLaTeX\ and \XeLaTeX, while using OpenType math fonts +% there should not be any difficulty in fulfilling the regulations, +% but with \pdfLaTeX; things are not so simple. There exist some +% facilities, but sometimes they do not work. +% +% This package provides some robust work-arounds to bypass the +% difficulties experienced by some \pdfLaTeX\ users. +% \end{abstract} + +% \section{Introduction} +% The ISO regulations (formerly ISO\,31/XI, now ISO\,80000) are +% stringent rules to typeset mathematics in the domains of physics +% and applied sciences; their title explicitly mentions ``physics +% and technology'', but their careful reading let understand that +% they apply to alla sciences that use the ``mathematics of +% quantities''. Such entities form a special group or space, +% where the elements are couples of two ordered elements $(x, y)$, +% where $y$ represents the unit of measure and $x$ represents the +% ratio of the quantity to the unit of measure. Such paired +% elements may not e separated, therefore some special +% mathematical rules are established in order to operate on +% such entities. +% +% Add to these special mathematical bases the facto that the +% measure component of the quantity is pretty fuzzy and it +% is always accompanied by a certain degree of uncertainty; +% metrologists are the the masters in measuring quantities +% and handling their measures and uncertainties, but although +% for simplicity measures are handled by lay people as rational +% numbers (after all aren't the the ratio of something to be +% measured and the unit of measure?) we are facing the domain +% of fuzzy sets. +% +% Furthermore quantities are so many that any work in applied +% sciences should contain a nomenclature list in order to +% explain which symbol is used for which quantity. This is +% where the ISO regulations set some order and they published +% a long list of named quantities with their preferred symbols +% and their ``normal'' units according to the prescriptions +% of the Comité International des Pois et Mésures, that +% established the the International System of measures +% (Systhème International, SI). +% +% This ISO nomenclature is used uniformly by most, if not all, +% people involved in applied sciences; therefore among the few +% letters of the Latin and Greek alphabets almost none is free +% to be used for other purposes. +% +% This means that the usual math italic alphabet can be used for +% very few symbols if confusion is to be avoided. Other series +% and shapes must be judiciously used and the ISO regulations +% say how. +% +% There are no problems when typesetting applied science +% documents with \LuaLaTeX\ or \XeLaTeX, at least if the +% proper OpenType math fonts are used; Such fonts have +% available so mani slots (code points) that may contain +% any variation of any glyph; it suffices to specify the +% option |math style = ISO| to the math handling package +% |unicode-math| and to select an OpenType math font. The +% only problem, if any, is to know which font series and +% shapes should be used according to the ISO regulations. +% +% These regulations can be purchased from the ISO site in +% Switzerland; they are quite expensive and the cost is +% affordable by associated professional studios or large +% academic and/or research institutions. +% +% For private users I'd suggest to download the PDF document +% \url{https://www.nist.gov/pml/special-publication-811-extended-%contents}. This document has been produced by the National +% Institute for Science and Technology, the Institutions that +% several years ago was appointed to replace the United States +% National Bureau of Standards. Thei staff is made essentially +% by metrologists and this guide is written to give precise +% instructions for handling the applied science mathematics +% according to the ISO Regulations; Is establishes also several +% rules for writing text about mathematics and metrology. It +% is extremely valuable for anglophones, but, with the due +% differences concerning the mother languages, it is extremely +% useful also for people using other languages than English. +% +% \section{The \pdfLaTeX\ handicaps} +% Users of \pdfLaTeX, on the opposite are in trouble. In facts +% this typesetting program suffers from an inherited limitation: +% math fonts are encoded with the old 128 glyph encodings; this +% is not a limitation set forth by the underlying interpreter +% \pdfTeX. Matter of fact there exist the quite recent +% LibertinusT1math fonts for \pdfLaTeX, created by Michal Sharpe, +% that to my best knowledge are the only ones with 256 glyph +% encodings. Package |libertinust1math| accepts the |ISO| option +% that allows to fulfil the ISO regulations; it accepts other +% options depending on which the number of math groups, beyond +% the essential first four ones, increases by three to six units, +% reaching a maximum of ten; there remains enough free math +% groups to satisfy any user requirement. +% +% But even while using such LibertinusT1math fonts, \pdfTeX\ +% suffers from another handicap derived from the knuthian +% original \TeX-the-program and by the NFSS (New FonT Selection +% Scheme, which is not new any more, because it dates back to +% 1994, when \LaTeX\,209 became obsolete and was substituted +% by \LaTeXe.). I am not complaining about these \pdfTeX\ and +% \LaTeX\ limitations; for decades people have been happily +% typesetting math with results that are much superior to any +% other typesetting program if it does not use some \TeX\ software. +% +% The handicap I am talking about is the way math alphabets are +% handled at the moment by \pdfTeX and \LaTeX; such alphabets +% are loaded in the form of math groups, the number of which +% cannot exceed 16 (numbered from 0 to 15); each group loads +% three sizes for normal math style, for script style and for +% script-script style. +% +% By default four groups are always loaded; group~0 for +% operators; group~1 for letters; group~2 for symbols; +% group~3 for large operators and delimiters; users very +% often load also the two symbol-fonts provided by the +% American Mathematical Society, and this means two more +% math groups. Apparently there are ten more groups for +% other math groups. It seems that this number is abundantly +% sufficient to handle any situation, but it is not so. The +% author of this extension already reached the limit of~16 +% without doing anything special -- at least he thought so, +% but he was evidently wrong. Users who use packages such +% as the Fourier or the KPfonts have to pay special attention +% to their documentation because they might specify options +% that imply loading up to 14 math groups. +% +% Several authors provided packages to help users produce +% perfect documents that fulfil the ISO regulations; I would +% like to cite the excellent Package|ISOmath| by Günter Milde, +% entitled ``Mathematical style for science and technology''. +% It should be the perfect package to use in order to fulfil +% the ISO regulations; sometimes it succeeds with excellent +% results, but more often than not the results are just partial, +% because of the limitations of the math fonts available to +% \pdfLaTeX\ that are in contrast with the requirements of +% the ISO regulations. +% +% Therefore, dear reader, before using the poor man solutions +% of this package, try |ISOmath|, if your font set passes all +% the requirements described in this package documentation, +% you don't need the poor man patches offered by this package. +% +% \section{ISO rules summary} +% This summary does not replace the original ISO document nor +% what is written in the instructions published by NIST. It +% simply recalls those rules that this package tries to implement. +% In the following the word ``quantity'' is used to represent +% any physical entity that may be measured according to the +% metrological standards; the word ``variable'' is used to +% represent a mathematical entity that represents variable data. +%\begin{enumerate}[noitemsep] +% \item +% All quantity and variable symbols are represented by one +% letter (with as many appositions are needed); but no acronyms +% are allowed; in computer science programming many strings +% are called variables, in the sense that they may represent +% variable data; but computer programs are not mathematics, +% rather they are a special language that tells the computer +% what to do, even mathematics, but the language is not the +% one that represents math. Unfortunately som acronyms have +% gained strong popularity and wide usage, but they are +% forbidden by the ISO rules; example: \emph{CMRR} is often +% used to mean ``common mode rejection ratio'', but this is +% an improper usage of mathematics. Obviously this rule +% must be applied by the user, because \LaTeX\ is a +% typesetting language and does not understand the real +% meaning of what it typesets. +% \item +% All quantity symbols must be set in italics, slanted type +% is allowed, but serifed italics should be referred, unless +% the ISO rules prescribe a sans serif font. This implies that +% the differential symbol be in upright font to avoid confusion +% with the physical quantity $d$; the Napier number `e' must be +% set in upright font to avoid confusion with the elementary +% electric charge $e$; the imaginary unit j in electrical +% engineering, i in other applied sciences) be in upright font +% in order to avoid confusion with the electric current density +% $j$ or the electric current $i$; more difficult: the +% transcendental number $\ISOpi=3.14159\dots$ be distinguished +% from the plane angle $\pi$; and similar other numerical constants represented by Latin or Greek letters. +% \item +% All symbols that do not represent quantities should be +% typeset in an upright font, preferably a serifed font, +% except when the ISO rules require a sans serif font. +% This rule include numbers and their digits, symbols that +% represent constant numeric values, all appositions both +% in subscript and superscript position. Appositions are not +% quantities or variables: for example in $V_i$, the +% subscript $i$ is a variable because it represents the $i$-th +% element in a sequence, such as $V_0, V_1, V_2, \dots$; on +% the opposite $V_{\mathrm{i}}$ is an apposition because `i' +% means, say, `input'. +% \item +% Upright bold roman or black board bold symbols represent sets. +% \item +% Italic bold symbols represent matrices; une column matrices +% may represent vectors in an algebraic way and should be +% treated as any other matrix; generally multirow and multicolumn +% matrices are typeset with uppercase letters, while lowercase +% ones are reserved for vectors; but in some sciences also vectors +% may have uppercase letters. Geometrical vectors that might be +% typeset wit a medium series upper o lowercase italic letter +% with an arrow on top of it are nor treated by the ISO +% regulations that speak of vectors irrespective if they are +% considered as one column matrices od oriented segments; +% apparently oriented segments should be treated the same as +% one column matrices. +% \item +% Labels to geometrical entities, such as points, segments, +% angles (not their measures) should be set in upright +% medium series sans serif fonts; the same rule applies +% to labels used in sketches and drawings representing +% machinery, electric circuitry, and the like when the label +% refers to an object and not to its measure: ``the lens +% $\mathsf{L}_1$'', ``the switch $\mathsf{S}_2$'', ``the +% planetary gear $\mathsf{G}_3$'', and so on. +% \item +% Tensors should be set in slanted bold sans serif font. +% \item +% The above rules apply to both Latin and Greek +% letters.\label{enum:latin-greek} +%\end{enumerate} +% +% Such font rules for families, series and shapes are difficult +% to implement with \pdfLaTeX\ for many reasons that do not imply +% only the limited number of math groups, but also the categories +% of symbols; Greek letters in particular are troublesome for a +% couple of reasons connected with rule~\ref{enum:latin-greek}: +%\begin{itemize}[noitemsep] +%\item +% Uppercase greek letters are taken from the ``operators'' +% alphabet and are letter symbols; therefore they are upright; +% but if they represent quantities they must be in italics, +% or at least slanted; +%\item +% Lowercase Greek letters are taken from the ``letters'' alphabet +% and are ordinary symbols; they are slanted, and this is fine, +% but as ordinary symbols they cannot be modified by commands +% such as |\mathrm|; furthermore upright lowercase Greek letters +% are not available. +%\end{itemize} +% +% \section{Some existing solutions} +% Several packages to be used with \pdfLaTeX\ allow for upright +% Greek letters, especially those packages for French typography, +% where the national rules (in contrst with the ISO regulations) +% require that all math entities typeset with Greek letters be +% upright. Among these the |fourier| and the |kpfont|. Other +% packages such as |newpxmath| and |newtxmath| are intended for +% general use, but with suitable options and extra math groups +% let the user employ upright lowercase letters as well as +% slanted uppercase ones. +% +% Package |libertinust1math| allows the use of the 256~glyph +% encoded fonts and are less sensitive to the limit of 16~math +% groups, Is many options allow to use the various font styles +% without requiring the |\boldmath| declaration; this implies +% that medium and bold series are both preloaded without +% actually using extra math alphabets beyond the small number +% it uses for its full functionality. An option |ISO| is +% already available to fulfill the ISO regulations. Maybe +% the only drawback of the fonts used is that they match text +% fonts that are blacker than the standard Computer or Latin +% Modern fonts. The auxiliary font selection commands used in +% the |ISOmath| package are already implemented with this +% |libertinust1math| one. +% +% Of course the |ISOmath| package might solve all problems if the +% user math environment has the necessary functionalities, in +% particular all the math alphabets needed for the task and +% there are no difficulties with the number of math groups. +% +% \section{The poor man solution} +% The poor man solution is very simple in theory; it handles +% text fonts in math expressions through the |\text| command +% of the |amsmath| package; of course there are functionalities +% to chose families series and shapes in a comfortable way +% by means of the powerful command definition commands provided +% by the |xparse| package; for Greek letters it uses the +% functionalities of the |alphabeta| package, that allows to use +% in text mode the same control sequences that are used +% in math mode. The default families for Latin and Greek letters +% are the Latin Modern ones that allow a piecewise continuous +% scaling of any available particular font of the collection. +% +% Needless to say, this poor man solution has advantages and +% disadvantages over the other indicated solutions. +% +% The main advantage is that no math groups are involved, +% therefore the user may couple any font family with any +% series and shape that family allows; the default +% family for Greek fonts are the Latin Modern compliant +% LGR encoded collection of CBfonts; they are always +% available with any updated and complete \TeX\ system +% installation. +% +% This is also a disadvantage, in the sense that Latin Modern +% fonts might not be the best ones to use with any specific +% text font; for example they have an x-height smaller than +% the Palatino ones, and a larger `em' unit compared to the +% Times ones; they have also a slightly lighter `color' +% than most other fonts. +% +% Nevertheless they work very well with the ISO regulations +% and in spite of the disadvantages listed above, they are +% usable without problems. 'This documentation is typeset +% with Latin Modern fonts and this very package. The examples +% shown in a following chapter show the ease with which the +% ISO regulations may be fulfilled. +% +% There are other Greek fonts that may be used in place if +% those of the CBfonts collection, especially those distributed +% by the Greek Font Society (GFS) that are already part of the +% \TeX\ system distribution; they are LGR encoded and have their +% specific |.fd| files. They are not so rich in series and shapes +% (some of them may lack the bold extended series and sometimes +% lack also the bold series); I would say the the GFS Bodoni +% family is sufficiently rich of series and shapes, and may be used +% also for the Latin fonts. +% +% There are also the Greek fonts that are ``companions'' to the +% Times fonts. So the user is not limited to the Latin Modern +% fonts, but admittedly there is not a great choice and, if it +% is necessary, the disadvantage of an unmatching Greek font is +% the price to pay if the user has to use \pdfLaTeX. +% +% \section{Usage} +% The usage of the package is very simple; in your preamble +% add the line +%\begin{ttsintassi} +%\cs{usebackage}\Oarg{engineer}\Marg{pm-isomath} +%\end{ttsintassi} +% The |engineer| option is used to set the imaginary unit the +% way electrical engineers usually do. +% +% The main macros that support the whole package, and that may +% be used also by the end user, are: +%\begin{ttsintassi} +%\cs{MathLatin}\marg{letter}\marg{family}\oarg{series}\parg{shape} +%\end{ttsintassi} +%and +%\begin{ttsintassi} +%\cs{MathGreek}\marg{letter}\marg{family}\oarg{series}\parg{shape} +%\end{ttsintassi} +% where \cs{MathLatin} sets the text encoding to |T1|, while +% \cs{MathGreek} set it to |LGR|. In both commands the arguments +% specified with \marg{family}\oarg{series}\parg{shape} are all +% optional, including the first one in spite of being surrounded +% by curly braces. In both cases the default values for each +% argument are respectively |lmr|, |m|, and |n| (normal upright). +% +% Such default values, after loading |pm-isomath|, may be globally +% redefined by using in the preamble: +%\begin{ttsintassi} +%\cs{renewcommand}\Marg{ISOfam}\marg{family} +%\cs{renewcommand}\Marg{ISOser}\marg{series} +%\cs{renewcommand}\Marg{ISOsha}\marg{shape} +%\end{ttsintassi} +% We discourage this global redefinitions unless the user really +% knows what s/he is doing; in practice it must be checked that +% T1 encoded families and LGR encoded ones have the same family +% names. If the encoding+family|.fd| files are not available +% either they have to be created, or such default values should +% not be redefined. +% +% For Latin letters to use in the |\MathLatin| command mandatory +% argument there are no problems. +% +% For Greek letters you might use the math commands |\alpha|, +% |\beta|,\dots, |\Omega| commands, but it is much simpler to +% use the package commands |\ISOalpha|, |\ISObeta|,\dots, +% |\ISOOmega|. All these commands follow the syntax: +%\begin{ttsintassi} +%\cs{ISO}\meta{lettername}\marg{family}\oarg{series}\parg{shape} +%\end{ttsintassi} +% where all the arguments are optional, including the first in +% spite of being surrounded by curly braces. Such optional +% arguments must follow that order but all possible combinations +% are usable, for example: +%\begin{ttsintassi} +%\cs{ISOalpha} +%\cs{ISOalpha}\marg{family} +%\cs{ISOalpha}\oarg{series} +%\cs{ISOalpha}\parg{shape} +%\cs{ISOalpha}\marg{family}\oarg{series} +%\cs{ISOalpha}\marg{family}\parg{shape} +%\cs{ISOalpha}\oarg{series}\parg{shape} +%\cs{ISOalpha}\marg{family}\oarg{series}\parg{shape} +%\end{ttsintassi} +% This offers the maximum flexibility in using the necessary +% commands. +% +% The package defines other macros for fulfilling the rules +% relative to the differential symbol and the numerical constants +% represented with letters; Furthermore defines the commands +% for the |\ohm| unit of measure and the |\micro| SI prefix; +% this latter macro uses a special shape of the CBfonts where +% an upright shape with serifed lowercase Greek letters is +% available; if another family lacking this shape is being used, +% then the normal upright shape is used. In typesetting this +% documentation, evidently there are no problems, but with other +% font selections, especially with Greek fonts, there might be +% some mismatching shapes. +% +% Commands similar to those defined by the |ISOmath| package +% are also defined so as to simplify the font selection for +% vectors, matrices and tensors. +% +% \section{Examples} +% \subparagraph{ISO Greek letters} +% In this example we typeset an array in math mode, where +% we show all the Greek letters that can be typeset with +% the \cs{ISO}\meta{letter} macros; the array is typeset +% in normal math style, but the ISO letters are in bold +% style so that there is no confusion with a normal +% bold math setting; some letters, equal to +% the Latin ones, are also defined because some users have +% experienced difficulties in remembering the correct signs +% especially while labelling diagrams. The +% array may be a useful reference, \ref{tab:isoletters}. +%\begin{table}[!tb] +%\def\T#1{\cs{ISO#1} & \csuse{ISO#1}[bx]} +%\[\begin{array}{lclclclc} +%\T{alpha} & \T{beta} & +%\T{gamma} & \T{delta} \\ +%\T{epsilon} & \T{zeta} & +%\T{eta} & \T{theta} \\ +%\T{iota} & \T{kappa} & +%\T{lambda} & \T{mu} \\ +%\T{nu} & \T{xi} & +%\T{omicron}& \T{pi} \\ +%\T{rho} & \T{sigma} & +%\T{tau} & \T{upsilon} \\ +%\T{phi} & \T{chi} & +%\T{psi} & \T{omega} \\ +%\T{Gamma} & \T{Delta} & +%\T{Eta} & \T{Theta} \\ +%\T{Lambda} & \T{Xi} & +%\T{Pi} & \T{Rho} \\ +%\T{Sigma} & \T{Upsilon} & +%\T{Phi} & \T{Chi} \\ +%&&\T{Psi} & \T{Omega} +%\end{array}\] +%\caption{The \cs{ISO}\meta{letter} macros and their rendering in bold style} +%\label{tab:isoletters} +%\end{table} +% \subparagraph{A small matrix equation} +%\[ \vectorsymbol{b} = \matrixsymbol{M}\vectorsymbol{a} \] is +% typeset with the following code +%\begin{verbatim} +%\[ \vectorsymbol{b} = \matrixsymbol{M}\vectorsymbol{a} \] +%\end{verbatim} +% \subparagraph{A resistivity value} +% The resistivity of copper is $1.68\,\micro\ohm\,\mathrm{cm}$ (1.68\unit{\micro\ohm\,cm}) +% is typeset with the following code +%\begin{verbatim} +%$i.68\,\micro\ohm\,\mathrm{cm}$ (1.68\unit{\micro\ohm\,cm}) +%\end{verbatim} +%\subparagraph{A tensor} +%\[ \vectorsymbol{D} =\epsilon_0\vectorsymbol{\epsilon}\ped{r}\vectorsymbol{E}\] +%is typeset with the following code +%\begin{verbatim} +%\[ +%\vectorsymbol{D} = \epsilon_0\tensorsymbol{\epsilon}\ped{r}\vectorsymbol{E} +%\] +%\end{verbatim} +%\subparagraph{Solid angle} +% An energy flux of light form a isomorph source that irradiates +% the power $P$ through the solid angle $\Omega$ generates +% a flux \[\Phi = \frac{P}{\Omega}\] is typeset with the following +% code +%\begin{verbatim} +%\[\Phi = \frac{P}{\Omega}\] +%\end{verbatim} +% where, as you see the uppercase Greek letters are slanted, +% as the ISO rules require, instead of upright, as \LaTeX\ sets +% them by default. +% \subparagraph{A bold formula} +% This is the very important inverse Laplace transform +%{\boldmath\[ +%f(t) = \frac{1}{2\ISOpi\iu} -\mkern-19mu\int_{\sigma-\iu\infty}^{\sigma+\iu\infty}\eu^{pt}\diff p \qquad \text{for } \sigma > \sigma\ped{c} +%\]} +%%typeset with the following code +%\begin{verbatim} +%{\boldmath\[f(t)= +%f(t) = \frac{1}{2\ISOpi\iu} -\mkern-19mu +% \int_{\sigma-\iu\infty}^{\sigma+\iu\infty}\eu^{pt}\diff p +% \qquad \text{for } \sigma > \sigma\ped{c} +%\]} +%\end{verbatim} +% Notice the the use of |\boldmath| does not imply the use +% of new math groups; but the bold upright $\ISOpi$ is rendered +% without any problem. +% \subparagraph{Various styles of Greek fonts} Here are some +% examples of Greek fonts in various styles; within the same +% table bold and medium series fonts stay side by side, as well +% as font coming from different families.\medskip +% +%\bgroup\begin{lrbox}{0} +%\begin{tabular}{@{}ll@{}} +%\cs{ISOgamma}, \cs{ISOzeta}, \cs{ISOeta}, \cs{ISOOmega}& +%$\ISOgamma, \ISOzeta, \ISOeta, \ISOOmega$\\ +%\cs{ISOgamma}[bx], \cs{ISOzeta}[bx], \cs{ISOeta}[bx], \cs{ISOOmega}[bx]& +%$\ISOgamma[bx], \ISOzeta[bx], \ISOeta[bx], \ISOOmega[bx]$\\ +%\cs{ISOgamma}\{lmss\}, \cs{ISOzeta}\{lmss\}, \cs{ISOeta}\{lmss\}, \cs{ISOOmega}\{lmss\}& +%$\ISOgamma{lmss}, \ISOzeta{lmss}, \ISOeta{lmss}, \ISOOmega{lmss}$\\ +%\cs{ISOgamma}\{artemisia\}, \cs{ISOzeta}\{artemisia\}, \cs{ISOeta}\{artemisia\}, \cs{ISOOmega}\{artemisia\}& +%$\ISOgamma{artemisia}, \ISOzeta{artemisia}, \ISOeta{artemisia}, \ISOOmega{artemisia}$\\ +%\cs{ISOgamma}(rs), \cs{ISOzeta}(rs), \cs{ISOeta}(rs), \cs{ISOOmega}(rs)& +%$\ISOgamma(rs), \ISOzeta(rs), \ISOeta(rs), \ISOOmega(rs)$\\ +%\end{tabular}\end{lrbox} +%\noindent\resizebox{\textwidth}{!}{\usebox{0}}\egroup +% +%\section{Final remarks} +% This package |pm-isomath| is far from perfect, and its results are +% questionable; of course poor man solutions are just patches; +% incomplete solutions; But the results are not so bad. It has +% the indubitable advantage that is does not use any math group, +% therefore there is no risk to exceed the limit of 16~math groups. +% +% \StopEventually{} +% +% \section{The code} +% This package was loosely inspired by the |ISOmath| package +% by Günter Milde, but tacles the problem of insuffiente maximum +% number of math font groups so as to avoid any problem with such +% groups, and therfore all the caveats in Milde's package. That +% package is much more comfortable to use then this one; but +% it is subject to a number of conditions the, depending on the +% user environment, may even result in a complete failure. This +% package avoids problema with math font groups because it does +% not use any, but it is not so comfortable to use because often +% the user has to specify optional settings. +% +%The preliminary lines have been already defined; therefore we +% start with real code. +% +%The trick of this package is that all fonts different from the +% four or six (including the AMS symbol fonts) are textual fonts +% used in math typesetting through the intermediate action of +% the |\text| command defined by the |amsmath| package. +% Therefore we start by verifying if packages |amsmath|, +% |alphabeta| and |xparse| have already been loaded by in the +% preamble document; this implies a weak loading order, that is this +% package must be loaded after all the above packages are loaded; +% in facts of such packages are not loaded, they are by this +% package, and they are loaded without options. The package +% loading mechanism assures avoiding conflicts if packages are +% loaded without options; this is why if one of the three packages +% is loaded after this one but with some option specified an +% ``Option clash"" error flag is raised; this is where the +% ``weak'' loading error becomes an very ``strong'' one. + +%\iffalse +%<*style> +%\fi +% \begin{macrocode} +% The we verify if the document is being typeset with \pdfLaTeX; +% it it is not; and error flag is raised and reading of this +% package is immediately interrupted. For this purpose we need +% an engine-detecting package, and we generally use the |iftex| one. +\@ifpackageloaded{iftex}{}{\RequirePackage{iftex}} +\unless\ifPDFTeX + \PackageError{ISOrules4pdfLaTeX}{% + ******************************************\MessageBreak + This package should be used only when \MessageBreak + typesetting with pdfLaTeX. \MessageBreak + Skipping loading the package \MessageBreak + ******************************************\MessageBreak + }{% + ******************************************\MessageBreak + Press the X key and restart typesetting \MessageBreak + while using pdfLaTeX\MessageBreak + ******************************************\MessageBreak + } +\expandafeter\@firstoftwo +\else + \PackageInfo{ISOrules4pdfLaTeX}{% + ******************************************\MessageBreak + Typesetting this document with pdfLaTeX! \MessageBreak + ******************************************\MessageBreak + } +\expandafter\@secondoftwo +\fi +{\endinput}{\relax} +% \end{macrocode} +% Actually this package accepts an option: |engineer|. This +% option is for deciding if the imaginary uit should be +% defined as `i' or `j'. As we have remarked in the previous +% documentation, engineers, especially those who deal with +% electricity and electrical quantities, but also electronics +% and telecommunications engineers, use only `j'; all these +% varieties of engineers could not do anything in their profession +% if they don't use complex numbers and quantities (the latter +% called phasors). possible they are the applied scientists +% who use complex numbers more than any other scientist. +% This option has not been used to prepare this documented \TeX\ file. +% \begin{macrocode} +\newif\ifengineer \engineerfalse +\DeclareOption{engineer}{\engineertrue} +\ProcessOptions*\relax +% \end{macrocode} +% Are the necessary packages already loaded? +% \begin{macrocode} +\@ifpackageloaded{amsmath}{}{\RequirePackage{amsmath}} +\@ifpackageloaded{etoolbox}{}{\RequirePackage{etoolbox}} +\@ifpackageloaded{xparse}{}{\RequirePackage{xparse}} +% \end{macrocode} +% Now we have almost alla software instruments available. We +% define a macro to switch the definitions of certain math +% Greek symbols; some of these are defined in the \LaTeX\ +% kernel: the lowercase Greek variant letters; some others +% are defined in the |amsmath| package: the uppercase slanted +% greek letters. all these variant lettere have a name identical +% to the regular ones but prefixed with the string |var|; +% example |\epsilon| and |\varepsilon|, |\Omega| and |\varOmega|. +% We switch the control sequence definitions between the |var|-less +% ones and the |var|-prefixed ones. The first group of lowercase +% letters is switched because the glyphs give a better match with +% those produced with the textual Greek glyphs obtained when +% the ISO macros are used. +% \begin{macrocode} +\newcommand\switchvarsymbols[1]{% +\letcs{\tempA}{#1}\csletcs{#1}{var#1}\cslet{var#1}{\tempA}} +%%%% +\switchvarsymbols{epsilon} +\switchvarsymbols{theta} +\switchvarsymbols{rho} +\switchvarsymbols{phi} +%%%%% +\switchvarsymbols{Gamma} +\switchvarsymbols{Delta} +\switchvarsymbols{Theta} +\switchvarsymbols{Lambda} +\switchvarsymbols{Xi} +\switchvarsymbols{Pi} +\switchvarsymbols{Sigma} +\switchvarsymbols{Upsilon} +\switchvarsymbols{Phi} +\switchvarsymbols{Psi} +\switchvarsymbols{Omega} +% \end{macrocode} +% Eventually we load the |alphabeta| package; this package +% allows using the same macros used in math mode while +% typesetting in text mode. We find it very useful in this +% package. +% \begin{macrocode} +\@ifpackageloaded{alphabeta}{}{\RequirePackage{alphabeta}} +% \end{macrocode} +% The next line defines the default family, series and shape +% to be used in the macros that follow; as it can be seen +% the default family is the Latin Modern regular (or roman); +% the series i medium and the shape is normal (or upright). +% The codes used are the same used in the font description +% files with extension |.fd|. their name if obtained by merging +% the encoding name with the family name; Therefore the default +% font description file for Latin Characters is |t1lmr.fd|, +% while the one for Greek characters is |lgrlmr.fd|; these +% files define the series the contains that are identified +% with codes such as |m| (medium); |bx| (bold extended); +% |b| (bold). Other fonts, with different series may have +% also other codes. For each series the |.fd| defines the +% codes for shapes, and for every valid combination of +% series, shape and sizes it defines the specific font file +% to use. + +% We should not care for the font names, but in order to use +% different font families, series, and shapes the user should +% know their codes. this is generally a difficult task, but +% not impossible; is ``suffices'' to open the packages that +% allow to use the desired fonts, read the code and fin out +% the names of the |.fd| files; then search this file on the +% trees of the \TeX\ system, and eventually find out the +% codes for the available series and shapes. +% +% for the Latin and Greek |.fd| file we havethe series and +% shapes shown in table~\ref{tab:lmr-series-shapes}. +% +%\begin{table}[!tb]\centering +%\begin{tabular}{llllll} +%\toprule +% & & \multicolumn2c{Latin (T1)} +% & \multicolumn2c{Greek (LGR)} \\ +%\cmidrule(r){3-4} \cmidrule(l){5-6} +%Series & Code & Shape & Code & Shape & Code \\ +%\midrule +%medium & m & normal & n & normal & n \\ +% & & italics & it & italics & it \\ +% & & slanted & sl & slanted & sl \\ +% & & & & lipsian & li \\ +% & & & & serif & rs \\ +% & & & & serif oblique & ro \\ +% & & upright italics & ui & upright italics& ui \\ +% & & small caps & sc & small caps & sc \\ +%\midrule +% bold & b & & & lipsian & li \\ +% & & normal & n & & \\ +% % & slanted & sl & & \\ +%\midrule +% bold extended&bx& normal & n & normal & n \\ +% & & italics & it & italics & it \\ +% & & slanted & sl & slanted & sl \\ +% & & & & lipsian & li \\ +% % & & & serif & rs \\ +% % & & & serif oblique & rs \\ +% & & % & upright italics& ui \\ +% & & & & small caps & sc \\ +%\bottomrule +%\end{tabular} +%\caption{Seres and shapes available with the Latin Modern regular family with Latin and Greek fonts} +%\label{tab:lmr-series-shapes} +%\end{table} +% +% +% +% +%%%%%% Queste sono le impostazioni di default per la famiglia, +%%%%%% la serie e la forma: +% \begin{macrocode} +\def\ISOfam{lmr}\def\ISOser{m}\def\ISOsha{n} +% \end{macrocode} +% +% As explained in the initial documentation all fonts changing +% commands are constructed in such a way as to have a default +% family, series and shape common to both Latin and Greek fonts; +% therefore with thre optional arguments that the user can +% specify with different delimiters but respecting their order, +% the user can get eight different choice combinations that +% allow the selection of an almost limited less number of +% different looks. +% +% We now define the mains macros and service macros that allow +% such font selection; We have ti create similar macros that +% mostly differ in the choice of the encoding for Latin or +% for Greek letters. +% +% The user macros are defined by meanso of the defining commands +% provided by the |xparse| package, while the service macros use +% normal \LaTeX\ commands. The user commands follow this special +% syntax: +%\begin{ttsintassi} +%\cs{MathLatin}\marg{Latin letter}\marg{family}\oarg{series}\parg{shape} +%\cs{MathGreek}\marg{Greek letter}\marg{family}\oarg{series}\parg{shape} +%\end{ttsintassi} +% where in both cases the last three arguments are differently +% delimited values, even the first one of the three, in spite +% of being delimited by curly braces. In both cases the only +% mandatory argument is the Latin or Greek letter; the latter +% one my be specified by the macros |\alpha|, |\beta|,\dots, +% |\Omega|, the same ones that are normally used in math. +% \begin{macrocode} +\NewDocumentCommand\MathLatin{m gO{m}D(){it}}{\bgroup +\edef\y{\IfNoValueTF{#2}{\ISOfam}{#2}}% +\edef\x{\noexpand\egroup\noexpand\MLatin{\noexpand#1}{\y}}\x{#3}{#4}} + +\providecommand\MLatin[4]{\text{% +\def\ISOfam{#2}\def\ISOser{#3}\def\ISOsha{#4}% +\ifcsstring{math@version}{bold}{\def\ISOser{bx}}{}% +\usefont{T1}{\ISOfam}{\ISOser}{\ISOsha}#1}} + +\NewDocumentCommand\MathGreek{ m g O{m} d()}{% +\edef\y{\IfNoValueTF{#2}{\ISOfam}{#2}}% +\edef\x{\IfNoValueTF{#4}{\ISOsha}{#4}}% +\MGreek{#1}{\y}{#3}{\x}} + +\newcommand{\MGreek}[4]{\text{% +\def\ISOfam{#2}\def\ISOser{#3}\def\ISOsha{#4}% +\ifcsstring{math@version}{bold}{\def\ISOser{bx}}{}% +{\usefont{LGR}{\ISOfam}{\ISOser}{\ISOsha}#1}}} + +% \end{macrocode} +% We now define the macros for all lowercase Greek letters +% and several Uppercase ones (even some that are identical +% to some Latin Letters) that should save several keystrokes +% when entering Greek letters in the source file. The shorter +% the code to type in, the smaller the the number of typos. +% \begin{macrocode} +\newcommand\ISOalpha{\MathGreek{\alpha}} +\newcommand\ISObeta{\MathGreek{\beta}} +\newcommand\ISOgamma{\MathGreek{\gamma}} +\newcommand\ISOdelta{\MathGreek{\delta}} +\newcommand\ISOepsilon{\MathGreek{\epsilon}} +\newcommand\ISOzeta{\MathGreek{\zeta}} +\newcommand\ISOeta{\MathGreek{\eta}} +\newcommand\ISOtheta{\MathGreek{\theta}} +\newcommand\ISOiota{\MathGreek{\iota}} +\newcommand\ISOkappa{\MathGreek{\kappa}} +\newcommand\ISOlambda{\MathGreek{\lambda}} +\newcommand\ISOmu{\MathGreek{\mu}} +\newcommand\ISOnu{\MathGreek{\nu}} +\newcommand\ISOxi{\MathGreek{\xi}} +\newcommand\ISOomicron{\MathGreek{\omicron}} +\newcommand\ISOpi{\MathGreek{\pi}} +\newcommand\ISOrho{\MathGreek{\rho}} +\newcommand\ISOsigma{\MathGreek{\sigma}} +\newcommand\ISOtau{\MathGreek{\tau}} +\newcommand\ISOupsilon{\MathGreek{\upsilon}} +\newcommand\ISOphi{\MathGreek{\phi}} +\newcommand\ISOchi{\MathGreek{\chi}} +\newcommand\ISOpsi{\MathGreek{\psi}} +\newcommand\ISOomega{\MathGreek{\omega}} +\newcommand\ISOGamma{\MathGreek{\Gamma}} +\newcommand\ISODelta{\MathGreek{\Delta}} +\newcommand\ISOEta{\MathGreek{\Eta}} +\newcommand\ISOTheta{\MathGreek{\Theta}} +\newcommand\ISOLambda{\MathGreek{\Lambda}} +\newcommand\ISOXi{\MathGreek{\Xi}} +\newcommand\ISOPi{\MathGreek{\Pi}} +\newcommand\ISORho{\MathGreek{\Rho}} +\newcommand\ISOSigma{\MathGreek{\Sigma}} +\newcommand\ISOUpsilon{\MathGreek{\Upsilon}} +\newcommand\ISOPhi{\MathGreek{\Phi}} +\newcommand\ISOChi{\MathGreek{\Chi}} +\newcommand\ISOPsi{\MathGreek{\Psi}} +\newcommand\ISOOmega{\MathGreek{\Omega}} +% \end{macrocode} +% We redefine also the |\mathrm| and |\mathit| so that if they +% have to contain Greek letters the default shape is set equal +% to that of the enclosing command. Such macros are just those +% defined in the \LaTeX\ kernel where the |\ISOsha| redefinition +% is added. +% \begin{macrocode} +\DeclareRobustCommand{\mathrm}% +{\relax\ifmmode\else\expandafter\non@alpherr +\csname mathrm \endcsname\fi +\def\ISOsha{n}\expandafter\use@mathgroup +\csname M@OT1\endcsname\symoperators} + +\DeclareRobustCommand{\mathit}% +{\relax\ifmmode\expandafter\non@alpherr +\csname mathit \endcsname\fi +\def\ISOsha{it}\expandafter\use@mathgroup +\csname M@OT1\endcsname{9}} +% \end{macrocode} +% Imitating the |ISOmath| package we define also the macros +% for selecting the bold italics (produces results similar +% to those obtained with package|bm|, but it does not require +% any math group), and sans serif in both normal and bold +% slanted shape. +% \begin{macrocode} +\newcommand\mathbfit[1]{\MathLatin{#1}{lmr}[bx](it)} +\newcommand\mathsfit[1]{\MathLatin{#1}{lmss}[m](sl)} +\newcommand\mathsfbfit[1]{\MathLatin{#1}{lmss}[bx](sl)} +% \end{macrocode} +% Package |ISOmath| defines macros for typesetting vectors, +% matrices and tensors; we do the same, but avoid the +% abbreviation |sym| in place of |symbol|. +% \begin{macrocode} +\let\vectorsymbol\mathbfit +\let\matrixsymbol\mathbfit +\let\tensorsymbol\mathsfbfit +% \end{macrocode} +% +% We now define some macros for setting some elements in the +% proper fonts; the ideaa is the same as that for vectors, +% matrices and tensors, except that these macros produce +% directly the desired symbol without using arguments, if +% possible. +% +% The imaginary unit is subject to the state of the |engineer| +% switch, set with the proper option on calling the package. +% If such option has been specifies in calling this package, +% the |\iu| command is let to |\junit|, otherwise it's let +% to |\iunit|. In spite of this option driven aliases, both +% commands |\iunit| and |\junit| are stille available to the +% user. +% +% The Napier number `e' is defined in roman type, but as an +% operator; this number is not an operator in the mathematical +% sense, but it is most often uses as the base of an exponential; +% therefore such mathematica ``atom'' must be treated as an +% operator as well as when the official operator macro |\exp| +% is used. +% +% The transcendental number $\ISOpi$, different from the plane +% angle $\pi$, is defined so as to be typeset in upright +% style; similar definitions may be used for other numerical +% constants; we define just |\uppi| because we think it is the +% most used symbol in any kind of mathematics. The +% $\ISOpi{lmss}(n)$ Greek letter in upright sans serif font +% may indicate the subatomic particle ``pion'' so that a +% similar macro, say, |\sspi| or, more expressively, |\pion| +% may be given a suitable definition. +% +% The differential symbol is not an operator, but it requires +% a special treatment; a macro |\diff| for the differential +% symbol uses an empty`operator' and a negative shift to typeset +% an upright letter `d' with an operator spacing on its left, +% so that proper spacing is used in math typesetting; Notice +% that the given definition does not perform as the direct +% use of a thin math space before the upright `d', because +% spacing bteween math atoms depends on their category, while +% the thin space |\,| is absolute and does not change depending +% on the preceding math atom. +% +% The command |\unit| for appending the units of measure to +% the numerical value of the measure is added if no packages +% have already defined it; package |siunitx| is a particularly +% recommended one. Similar considerations hold true for the +% |\ap| and |\ped| (apex and pedex, respectively; i.e\ +% superscript and subscript); therefore such command definitions +% are deferred to the start of the document so as to be sure +% to avoid damaging other package settings. All these commands +% may be used in both text and math modes; therefore a robust +% macro |\textormath| is (re)defined even if often such command +% is already available; the |\DeclareRobustCommand| unconditionally +% declares and redeclares robust commands even if they are +% already defined; possibly an information line is written in +% the |.log| file in case a redefinition takes palace. These +% commands typeset their arguments in upright math fonts, but +% with the current font in text mode. +% +% The |\ohm| and |\micro| macros produce their symbols in +% upright style while in math mode, and with the current +% font and shape in text mode. +% +% \begin{macrocode} +\newcommand\iunit{\MathLatin{i}(n)} +\newcommand\junit{\MathLatin{j}(n)} +\ifengineer + \let\iu\junit +\else + \let\iu\iunit +\fi +% i +\let\eu\undefined +\DeclareMathOperator\eu{\MathLatin{e}(n)} +\providecommand\uppi{} +\renewcommand\uppi{\ISOpi(n)} +% +\providecommand*\diff{} +\renewcommand*\diff{\ensuremath{\mathop{}\!\MathLatin{d}(n)}} +% +\providecommand*\micro{} +\renewcommand*\micro{\textormath{\ifcsdef{textmicro}% +{\textmicro}{\ISOmu(rs)}}{\ISOmu(rs)}} +% +\providecommand*\ohm{} +\AtBeginDocument{\@ifpackageloaded{textcomp}{% +\renewcommand*\ohm{\textormath{{\textohm}}{\ISOOmega(n)}}}% +{\renewcommand*\ohm{\textormath{\ISOOmega(\f@shape)}{\ISOOmega(n)}}}} +% +\global\csletcs{bbl@it@ped}{undefined} +\global\csletcs{bbl@it@ap}{undefined} +% +\DeclareRobustCommand\textormath{% +\unless\ifmmode\expandafter\@firstoftwo +\else\expandafter\@secondoftwo\fi} +% +\AfterEndPreamble{\let\ped\undefined\let\ap\endefined +\DeclareRobustCommand*\ped[1]{% +\textormath{\textsubscript{#1}}{_{\mathrm{#1}}}}% +% +\providecommand\ap{} +\DeclareRobustCommand\ap[1]{% +\textormath{\textsuperscript{#1}}{^{\mathrm{#1}}}}% +% +\unless\ifcsname unit\endcsname +\DeclareRobustCommand{\unit}[1]{\,\textormath{#1}{\mathrm{#1}}} +\fi} + +\endinput +% \end{macrocode} +%This is the end +%\begin{center} +%\LARGE HAPPY \TeX{}ing\,! +%\end{center} +%\iffalse +%</style> +%\fi + +%\Finale +% \endinput
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/pm-isomath/pm-isomath.sty b/Master/texmf-dist/tex/latex/pm-isomath/pm-isomath.sty new file mode 100644 index 00000000000..519d9f4930f --- /dev/null +++ b/Master/texmf-dist/tex/latex/pm-isomath/pm-isomath.sty @@ -0,0 +1,202 @@ +%% +%% This is file `pm-isomath.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% pm-isomath.dtx (with options: `style') +%% ______________________________________________________ +%% The PM-ISOmath bundle +%% Copyright (C) 2017 Claudio Beccari +%% All rights reserved +%% +%% License information appended +%% +\NeedsTeXFormat{LaTeX2e}[2017/01/01] +\ProvidesPackage{pm-isomath}[% +2017/08/22 v.1.0.00 +Poor man package for typesetting ISO compliant math when using pdfLaTeX] + +%%typeset with the following code + +\@ifpackageloaded{iftex}{}{\RequirePackage{iftex}} +\unless\ifPDFTeX + \PackageError{ISOrules4pdfLaTeX}{% + ******************************************\MessageBreak + This package should be used only when \MessageBreak + typesetting with pdfLaTeX. \MessageBreak + Skipping loading the package \MessageBreak + ******************************************\MessageBreak + }{% + ******************************************\MessageBreak + Press the X key and restart typesetting \MessageBreak + while using pdfLaTeX\MessageBreak + ******************************************\MessageBreak + } +\expandafeter\@firstoftwo +\else + \PackageInfo{ISOrules4pdfLaTeX}{% + ******************************************\MessageBreak + Typesetting this document with pdfLaTeX! \MessageBreak + ******************************************\MessageBreak + } +\expandafter\@secondoftwo +\fi +{\endinput}{\relax} +\newif\ifengineer \engineerfalse +\DeclareOption{engineer}{\engineertrue} +\ProcessOptions*\relax +\@ifpackageloaded{amsmath}{}{\RequirePackage{amsmath}} +\@ifpackageloaded{etoolbox}{}{\RequirePackage{etoolbox}} +\@ifpackageloaded{xparse}{}{\RequirePackage{xparse}} +\newcommand\switchvarsymbols[1]{% +\letcs{\tempA}{#1}\csletcs{#1}{var#1}\cslet{var#1}{\tempA}} +%%%% +\switchvarsymbols{epsilon} +\switchvarsymbols{theta} +\switchvarsymbols{rho} +\switchvarsymbols{phi} +%%%%% +\switchvarsymbols{Gamma} +\switchvarsymbols{Delta} +\switchvarsymbols{Theta} +\switchvarsymbols{Lambda} +\switchvarsymbols{Xi} +\switchvarsymbols{Pi} +\switchvarsymbols{Sigma} +\switchvarsymbols{Upsilon} +\switchvarsymbols{Phi} +\switchvarsymbols{Psi} +\switchvarsymbols{Omega} +\@ifpackageloaded{alphabeta}{}{\RequirePackage{alphabeta}} + +%% & slanted & sl & & \\ +%% & & & serif & rs \\ +%% & & & serif oblique & rs \\ +%%%%%% Queste sono le impostazioni di default per la famiglia, +%%%%%% la serie e la forma: +\def\ISOfam{lmr}\def\ISOser{m}\def\ISOsha{n} +\NewDocumentCommand\MathLatin{m gO{m}D(){it}}{\bgroup +\edef\y{\IfNoValueTF{#2}{\ISOfam}{#2}}% +\edef\x{\noexpand\egroup\noexpand\MLatin{\noexpand#1}{\y}}\x{#3}{#4}} + +\providecommand\MLatin[4]{\text{% +\def\ISOfam{#2}\def\ISOser{#3}\def\ISOsha{#4}% +\ifcsstring{math@version}{bold}{\def\ISOser{bx}}{}% +\usefont{T1}{\ISOfam}{\ISOser}{\ISOsha}#1}} + +\NewDocumentCommand\MathGreek{ m g O{m} d()}{% +\edef\y{\IfNoValueTF{#2}{\ISOfam}{#2}}% +\edef\x{\IfNoValueTF{#4}{\ISOsha}{#4}}% +\MGreek{#1}{\y}{#3}{\x}} + +\newcommand{\MGreek}[4]{\text{% +\def\ISOfam{#2}\def\ISOser{#3}\def\ISOsha{#4}% +\ifcsstring{math@version}{bold}{\def\ISOser{bx}}{}% +{\usefont{LGR}{\ISOfam}{\ISOser}{\ISOsha}#1}}} + +\newcommand\ISOalpha{\MathGreek{\alpha}} +\newcommand\ISObeta{\MathGreek{\beta}} +\newcommand\ISOgamma{\MathGreek{\gamma}} +\newcommand\ISOdelta{\MathGreek{\delta}} +\newcommand\ISOepsilon{\MathGreek{\epsilon}} +\newcommand\ISOzeta{\MathGreek{\zeta}} +\newcommand\ISOeta{\MathGreek{\eta}} +\newcommand\ISOtheta{\MathGreek{\theta}} +\newcommand\ISOiota{\MathGreek{\iota}} +\newcommand\ISOkappa{\MathGreek{\kappa}} +\newcommand\ISOlambda{\MathGreek{\lambda}} +\newcommand\ISOmu{\MathGreek{\mu}} +\newcommand\ISOnu{\MathGreek{\nu}} +\newcommand\ISOxi{\MathGreek{\xi}} +\newcommand\ISOomicron{\MathGreek{\omicron}} +\newcommand\ISOpi{\MathGreek{\pi}} +\newcommand\ISOrho{\MathGreek{\rho}} +\newcommand\ISOsigma{\MathGreek{\sigma}} +\newcommand\ISOtau{\MathGreek{\tau}} +\newcommand\ISOupsilon{\MathGreek{\upsilon}} +\newcommand\ISOphi{\MathGreek{\phi}} +\newcommand\ISOchi{\MathGreek{\chi}} +\newcommand\ISOpsi{\MathGreek{\psi}} +\newcommand\ISOomega{\MathGreek{\omega}} +\newcommand\ISOGamma{\MathGreek{\Gamma}} +\newcommand\ISODelta{\MathGreek{\Delta}} +\newcommand\ISOEta{\MathGreek{\Eta}} +\newcommand\ISOTheta{\MathGreek{\Theta}} +\newcommand\ISOLambda{\MathGreek{\Lambda}} +\newcommand\ISOXi{\MathGreek{\Xi}} +\newcommand\ISOPi{\MathGreek{\Pi}} +\newcommand\ISORho{\MathGreek{\Rho}} +\newcommand\ISOSigma{\MathGreek{\Sigma}} +\newcommand\ISOUpsilon{\MathGreek{\Upsilon}} +\newcommand\ISOPhi{\MathGreek{\Phi}} +\newcommand\ISOChi{\MathGreek{\Chi}} +\newcommand\ISOPsi{\MathGreek{\Psi}} +\newcommand\ISOOmega{\MathGreek{\Omega}} +\DeclareRobustCommand{\mathrm}% +{\relax\ifmmode\else\expandafter\non@alpherr +\csname mathrm \endcsname\fi +\def\ISOsha{n}\expandafter\use@mathgroup +\csname M@OT1\endcsname\symoperators} + +\DeclareRobustCommand{\mathit}% +{\relax\ifmmode\expandafter\non@alpherr +\csname mathit \endcsname\fi +\def\ISOsha{it}\expandafter\use@mathgroup +\csname M@OT1\endcsname{9}} +\newcommand\mathbfit[1]{\MathLatin{#1}{lmr}[bx](it)} +\newcommand\mathsfit[1]{\MathLatin{#1}{lmss}[m](sl)} +\newcommand\mathsfbfit[1]{\MathLatin{#1}{lmss}[bx](sl)} +\let\vectorsymbol\mathbfit +\let\matrixsymbol\mathbfit +\let\tensorsymbol\mathsfbfit +\newcommand\iunit{\MathLatin{i}(n)} +\newcommand\junit{\MathLatin{j}(n)} +\ifengineer + \let\iu\junit +\else + \let\iu\iunit +\fi +\let\eu\undefined +\DeclareMathOperator\eu{\MathLatin{e}(n)} +\providecommand\uppi{} +\renewcommand\uppi{\ISOpi(n)} +\providecommand*\diff{} +\renewcommand*\diff{\ensuremath{\mathop{}\!\MathLatin{d}(n)}} +\providecommand*\micro{} +\renewcommand*\micro{\textormath{\ifcsdef{textmicro}% +{\textmicro}{\ISOmu(rs)}}{\ISOmu(rs)}} +\providecommand*\ohm{} +\AtBeginDocument{\@ifpackageloaded{textcomp}{% +\renewcommand*\ohm{\textormath{{\textohm}}{\ISOOmega(n)}}}% +{\renewcommand*\ohm{\textormath{\ISOOmega(\f@shape)}{\ISOOmega(n)}}}} +\global\csletcs{bbl@it@ped}{undefined} +\global\csletcs{bbl@it@ap}{undefined} +\DeclareRobustCommand\textormath{% +\unless\ifmmode\expandafter\@firstoftwo +\else\expandafter\@secondoftwo\fi} +\AfterEndPreamble{\let\ped\undefined\let\ap\endefined +\DeclareRobustCommand*\ped[1]{% +\textormath{\textsubscript{#1}}{_{\mathrm{#1}}}}% +\providecommand\ap{} +\DeclareRobustCommand\ap[1]{% +\textormath{\textsuperscript{#1}}{^{\mathrm{#1}}}}% +\unless\ifcsname unit\endcsname +\DeclareRobustCommand{\unit}[1]{\,\textormath{#1}{\mathrm{#1}}} +\fi} + +%% +%% Copyright 2017 Claudio Beccari +%% +%% Distributable under the LaTeX Project Public License, +%% version 1.3c or higher (your choice). The latest version of +%% this license is at: http://www.latex-project.org/lppl.txt +%% +%% This work is "author-maintained" +%% +%% This work consists of this file pm-isomath.dtx, a README file +%% the manifest.txt file, and the derived files: +%% pm-isomath.sty, pm-isomath.pdf. +%% +%% +%% End of file `pm-isomath.sty'. |