summaryrefslogtreecommitdiff
path: root/physics-ng.sty
diff options
context:
space:
mode:
authoreqkter <thyro@gmx.ru>2022-12-08 23:20:01 +0100
committereqkter <thyro@gmx.ru>2022-12-08 23:20:01 +0100
commitee70b7a2646b215dc38b46510e3edac921785f03 (patch)
treee4c420da8f34507f26db240fe76cebe9c6ba4def /physics-ng.sty
initial commit
Diffstat (limited to 'physics-ng.sty')
-rw-r--r--physics-ng.sty147
1 files changed, 147 insertions, 0 deletions
diff --git a/physics-ng.sty b/physics-ng.sty
new file mode 100644
index 0000000..763a687
--- /dev/null
+++ b/physics-ng.sty
@@ -0,0 +1,147 @@
+\ProvidesPackage{physics-ng}
+% physics-ng 1.0
+% This material is subject to the LaTeX Project Public License.
+% See http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html for the details of that license.
+%
+% Personal substitute to the obselete physics package, might not be adapted to every one
+% The derivative part and the Dirac brakets are respectively taken of by the
+% diffcoeff and braket packages.
+% It depends on asm ecosystem, siunitx, and esvect (for black board vector notation)
+% design for Fourier mathtype-font with sloped setting
+%
+% Created by Alexis Draussin
+% Updated on December 8, 2022
+% Uploaded on December 20, 2022
+
+\RequirePackage{amsmath}
+\RequirePackage{fourier}
+\RequirePackage{bm}
+\RequirePackage{siunitx}
+\RequirePackage{esvect}
+
+\DeclareOption{bb}{\let\arrowopt = 1}
+\DeclareOption{nobb}{\let\arrowopt = 0} % default
+\ExecuteOptions{nobb}
+\ProcessOptions\relax
+
+% incertitude command, using siunitx
+\newcommand{\incert}[3]{\left(\num{#1}\pm\num{#2}\right)~\si{#3}}
+
+% transforms: Laplace, Fourier and Z
+\DeclareMathAlphabet{\pazocal}{OMS}{zplm}{m}{n} % fourier overwrite the mathcal alpabet
+\newcommand{\LT}[1]{\ensuremath{\pazocal{L}\left\lbrace#1\right\rbrace}}
+\newcommand{\FT}[1]{\ensuremath{\pazocal{F}\left\lbrace#1\right\rbrace}}
+\newcommand{\ZT}[1]{\ensuremath{\pazocal{Z}\left\lbrace#1\right\rbrace}}
+
+% math constants
+\newcommand{\e}{\ensuremath{\mathrm{e}}}
+\newcommand{\im}{\ensuremath{\mathrm{i}}}
+\newcommand{\jm}{\ensuremath{\mathrm{j}}}
+
+% derivative
+\DeclareDocumentCommand\dd{ o g d() }{ % Differential 'd'
+ % o: optional n for nth differential
+ % g: optional argument for readability and to control spacing
+ % d: long-form as in d(cos x)
+ \IfNoValueTF{#2}{
+ \IfNoValueTF{#3}
+ {\mathrm{d}\IfNoValueTF{#1}{}{^{#1}}}
+ {\mathinner{\mathrm{d}\IfNoValueTF{#1}{}{^{#1}}\argopen(#3\argclose)}}
+ }
+ {\mathinner{\mathrm{d}\IfNoValueTF{#1}{}{^{#1}}#2} \IfNoValueTF{#3}{}{(#3)}}
+ }
+
+% vectors, bb arrows with \vv or \vv* (for indexes)
+\ifx\arrowopt 1 % just use esvect at this point
+ \newcommand{\vect}[1]{\ensuremath{\vv{#1}}} % italic arrowed
+ \newcommand{\mat}[1]{\ensuremath{{\mathrm{#1}}} % roman
+ \newcommand{\tensor}[1]{\ensuremath{\vv{\vv{\mathsf{#1}}}}} % arrow and sans-serif
+\else
+ \newcommand{\vect}[1]{\ensuremath{\bm{#1}}} % bold and italic
+ \newcommand{\mat}[1]{\ensuremath{\bm{\mathbf{#1}}}} % bold and roman
+ \newcommand{\tensor}[1]{\ensuremath{\bm{\mathsf{#1}}}} % bold and sans-serif
+\fi
+\newcommand{\vecu}[1]{\ensuremath{\hat{\vect{#1}}}} % vector unit
+\newcommand{\vecui}[1]{\ensuremath{\hat{\vect{e}}_{\bm{#1}}}} % vector unit wth index
+
+\newcommand{\abs}[1]{\ensuremath{\left|#1\right|}}
+\newcommand{\norm}[1]{\ensuremath{\left\|#1\right\|}}
+
+% Note on vectors:
+% - vec v = (v_i) = (v)_i
+% - product by scalar, no dot xv = x(v)_i
+% - |v| or bb with ||v||
+% - hat e_a = a / |a|
+% - scalar product, dot a . b = sum_i a_ib_i
+% - vector product, cross a x b = sum_j sum_k LeviCivita_ijk a_j b_k
+% - nabla roman, arrow in bb
+% - grad, rot and div with nable notation, letter in bb
+% - laplacian := nabla^2 only
+% - D'Alembertian := square only
+
+% Note on matrices:
+% - mat A = (a_ij) = (A)_ij
+% - scalar product, no dot xA = x(A)_ij
+% - matrix product, no dot AB = sum_j (A)ij(B)jk
+% - unit matrix I = (I)_ij = Krodelta_ij
+% - det A, rank A, tr A, ||A||
+
+% Note on tensors:
+% - dyatic product, between 2 vectors: a otimes b = (ab)_ij = a_ib_j
+% - tensor product, between 2 tensors: T otimes S = T_ij S_kl
+% - inner product, between 2 tensors: T . S = sum_j T_ij S_jk
+% - inner product with a vector: T . a = sum_j T_ij a_j
+% - scalar product, column: T:S = sum_i sum_j T_ij S_ji
+
+% bunch functions not base-declared
+\DeclareMathOperator{\tr}{tr}
+\DeclareMathOperator{\rank}{rank}
+\DeclareMathOperator{\sinc}{sinc}
+\DeclareMathOperator{\Ei}{Ei}
+\DeclareMathOperator{\Li}{Li}
+\DeclareMathOperator{\Si}{Si}
+\DeclareMathOperator{\erf}{erf}
+\DeclareMathOperator{\erfc}{erfc}
+\DeclareMathOperator{\arccot}{arccot}
+\DeclareMathOperator{\arcsec}{arcsec}
+\DeclareMathOperator{\arccsc}{arccsc}
+\DeclareMathOperator{\sech}{sech}
+\DeclareMathOperator{\csch}{csch}
+\DeclareMathOperator{\arsinh}{arsinh}
+\DeclareMathOperator{\arcosh}{arcosh}
+\DeclareMathOperator{\artanh}{artanh}
+\DeclareMathOperator{\arcoth}{arcoth}
+\DeclareMathOperator{\arsech}{arsech}
+\DeclareMathOperator{\arcsch}{arcsch}
+
+\DeclareDocumentCommand\nqty{}{{\ifnum\z@=`}\fi\@nqty}
+\DeclareDocumentCommand\@nqty{ t\big t\Big t\bigg t\Bigg g o d() d|| }
+{ % Flexible automatic bracketing of an expression in () or [] or {} or ||
+ % Handles manual override of sizing
+ \IfBooleanTF{#1}{\let\ltag\bigl \let\rtag\bigr}{
+ \IfBooleanTF{#2}{\let\ltag\Bigl \let\rtag\Bigr}{
+ \IfBooleanTF{#3}{\let\ltag\biggl \let\rtag\biggr}{
+ \IfBooleanTF{#4}
+ {\let\ltag\Biggl \let\rtag\Biggr}
+ {\let\ltag\left \let\rtag\right}
+ }
+ }
+ }
+ % Handles actual bracketing
+ \IfNoValueTF{#5}{
+ \IfNoValueTF{#6}{
+ \IfNoValueTF{#7}{
+ \IfNoValueTF{#8}
+ {()}
+ {\ltag\lvert{#8}\rtag\rvert}
+ }
+ {\ltag(#7\rtag) \IfNoValueTF{#8}{}{|#8|}}
+ }
+ {\ltag[#6\rtag] \IfNoValueTF{#7}{}{(#7)} \IfNoValueTF{#8}{}{|#8|}}
+ }
+ {\ltag\lbrace#5\rtag\rbrace \IfNoValueTF{#6}{}{[#6]} \IfNoValueTF{#7}{}{(#7)} \IfNoValueTF{#8}{}{|#8|}}
+ \ifnum\z@=`{\fi}
+}
+
+\newcommand{\comm}[2]{\ensuremath{\nqty[#1,#2]}}
+\newcommand{\acomm}[2]{\ensuremath{\nqty{#1,#2}}}