% fnspe 1.2a % This material is subject to the LaTeX Project Public License. % See https://www.latex-project.org/lppl/ for the details of that license. % % Useful commands for FNSPE students % % Created by Michal Zeman % Updated on September 20, 2017 % Uploaded on September 20, 2017 \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{fnspe}[2017/09/20 Package for FNSPE CTU in Prague made by Michal Zeman] \RequirePackage{xstring} \RequirePackage{bm} \RequirePackage{amsmath} \RequirePackage{amsfonts} \RequirePackage{mathrsfs} \RequirePackage{amsthm} \RequirePackage{amssymb} \RequirePackage{xcolor} \RequirePackage{listings} \RequirePackage{physics} \RequirePackage{tikz} % For arrow and dots in \xvec \RequirePackage{substr} \RequirePackage{mathtools} \newif\if@isointerval\@isointervalfalse \DeclareOption{isointerval}{ \@isointervaltrue } \newif\if@isoointerval\@isoointervalfalse \DeclareOption{isoointerval}{ \@isoointervaltrue } \newif\if@fnspeinterval\@fnspeintervalfalse \DeclareOption{fnspeinterval}{ \@fnspeintervaltrue } \newif\if@isotensor\@isotensorfalse \DeclareOption{isotensor}{ \@isotensortrue } \newif\if@undertensor\@undertensorfalse \DeclareOption{undertensor}{ \@undertensortrue } \newif\if@arrowtensor\@arrowtensorfalse \DeclareOption{arrowtensor}{ \@arrowtensortrue } \newif\if@oldcomplex\@oldcomplexfalse \DeclareOption{oldcomplex}{ \@oldcomplextrue } \newif\if@isocomplex\@isocomplexfalse \DeclareOption{isocomplex}{ \@isocomplextrue } \newif\if@deftext\@deftextfalse \DeclareOption{deftext}{ \@deftexttrue } \newif\if@defcolon\@defcolonfalse \DeclareOption{defcolon}{ \@defcolontrue } \ProcessOptions\relax \newlength\xvec@height% \newlength\xvec@depth% \newlength\xvec@width% \newcommand{\xvec}[1]{% \ifmmode% \settoheight{\xvec@height}{$#1$}% \settodepth{\xvec@depth}{$#1$}% \settowidth{\xvec@width}{$#1$}% \else% \settoheight{\xvec@height}{#1}% \settodepth{\xvec@depth}{#1}% \settowidth{\xvec@width}{#1}% \fi% \raisebox{.2ex}{\raisebox{\xvec@height}{\rlap{% \kern.05em% (Because left edge of drawing is at .05em) \begin{tikzpicture}[scale=1] \pgfsetroundcap \draw (.05em,.01)--(\xvec@width-.05em,0.01); \draw (\xvec@width-.05em,0.01)--(\xvec@width-.2em, .155em); \draw (\xvec@width-.05em,0.01)--(\xvec@width-.2em,-.125em); % \end{tikzpicture}% }}}% #1% } \lstset { language=[LaTeX]TeX, breaklines=true, basicstyle=\tt\scriptsize, morekeywords = [28]{ci,oi,lci,rci,rest,dif, hlf, degree, hem, htem, oover, realn, inte, ratin, compn, natun, impem, rot, dive, grad, lapl, varun, unit, expv, norm, abs, pder, tder,mat,curl,laplacian, divisionsymbol, floor, ceil, df, allsetzero, allset, cclass, ccinf, ccof}, keywordstyle=\color{blue}, identifierstyle=\color{magenta}, } %\catcode`_=\active %\newcommand_[1]{\IfSubStr{#1}{!}{\sb{\mathrm{\StrBehind{#1}{!}}}}{\sb{#1}} } \mathcode`\_=\string"8000 \catcode`\_=12 \begingroup \catcode`\_=\active \gdef_#1{\IfCharInString{!}{#1}{\sb{\mathrm{\StrBehind{#1}{!}}}}{\sb{#1}} } \endgroup \mathcode`\_=\string"8000 \catcode`\_=12 %\let\stdvec\vec \if@arrowtensor \renewcommand{\vec}[1]{\xvec{#1}} \else \renewcommand{\vec}[1]{\ensuremath{\if@undertensor \underline{#1} \else \bm{\mathrm{\MakeLowercase{#1}}} \fi}} \fi \newcommand{\mat}[1]{\ensuremath{\if@undertensor \underline{\underline{#1}} \else \if@arrowtensor \overset{\leftrightarrow}{#1} \else \bm{\mathrm{\MakeUppercase{#1}}} \fi \fi}} %\newcommand{\pder}[3][]{\ensuremath{\frac{\partial^#1 #2}{\partial #3^#1}}} \pdv \newcommand*{\tder}[3][]{\dv[#1]{#2}{#3}} %\dv \newcommand{\oi}[2]{\ensuremath{\if@fnspeinterval \left( #1 , #2 \right) \else \if@isoointerval \left( #1 , #2 \right) \else \left] #1 , #2 \right[ \fi \fi}} \newcommand{\ci}[2]{\ensuremath{\if@fnspeinterval \left< #1 , #2 \right> \else \left[ #1 , #2 \right] \fi}} \newcommand{\rci}[2]{\ensuremath{\if@fnspeinterval \left( #1 , #2 \right> \else \if@isoointerval \left( #1 , #2 \right] \else \left] #1 , #2 \right] \fi \fi}} \newcommand{\lci}[2]{\ensuremath{\if@fnspeinterval \left< #1 , #2 \right) \else \if@isoointerval \left[ #1 , #2 \right) \else \left[ #1 , #2 \right[ \fi \fi}} %\newcommand{\rest}[2]{\ensuremath{\left.#1\right|_{#2}}} \newcommand{\dif}[1]{\mathrm d #1} \newcommand{\hlf}{\frac{1}{2}} \newcommand{\degree}{\ensuremath{{}^{\circ}}} %\newcommand{\deg}{\degree} \newcommand{\hem}[1][1]{\hspace{#1em}} \newcommand{\htwoem}{\hspace{2em}} \newcommand{\htem}{\htwoem} \newcommand{\oover}[1]{\ensuremath{\frac{1}{#1}}} \newcommand{\realn}{\ensuremath{\mathbb{R}}} \newcommand{\compn}{\ensuremath{\mathbb{C}}} \newcommand{\inte}{\ensuremath{\mathbb{Z}}} \newcommand{\ratin}{\ensuremath{\mathbb{Q}}} \newcommand{\natun}{\ensuremath{\mathbb{N}}} \newcommand{\nnzero}{\ensuremath{\mathbb{N}_0}} \newcommand{\impem}{\hem \Rightarrow \hem} \newcommand{\rot}{\curl} %\newcommand{\dive}{\ensuremath{\nabla \cdot}} %\newcommand{\grad}{\ensuremath{\nabla}} \newcommand{\lapl}{\Delta} %\laplacian \newcommand{\varun}[2]{\ensuremath{\left[#1\right]=\mathrm{#2}}} \newcommand{\unit}[1]{\;\mathrm{#1}} \newcommand{\expv}[1]{\left<#1\right>} %\newcommand{\norm}[1]{\ensuremath{\left|\left|#1\right|\right|}} %\newcommand{\abs}[1]{\ensuremath{\left|#1\right|}} \if@oldcomplex \renewcommand{\Re}{\ensuremath{\mathfrak{Re}}} \else \renewcommand{\Re}{\ensuremath{\mathrm{Re}\;}} \fi \if@oldcomplex \renewcommand{\Im}{\ensuremath{\mathfrak{Im}}} \else \renewcommand{\Im}{\ensuremath{\mathrm{Im}\;}} \fi %\newcommand{\maxv}[1]{\vec{\mathcal{#1}}} %\newcommand{\maxs}[1]{\mathcal{#1}} \DeclarePairedDelimiter{\ceil}{\lceil}{\rceil} \DeclarePairedDelimiter{\floor}{\lfloor}{\rfloor} \if@deftext \newcommand{\df}{\stackrel{\mathclap{\normalfont{\mbox{\tiny def.}}}}{=}} \else \newcommand{\df}{\mbox{:=}} \fi \newcommand{\allset}[1]{\{1,2,\ldots,#1\}} \newcommand{\allsetzero}[1]{\{0,1,\ldots,#1\}} \newcommand{\cclass}{\mathscr{C}} \newcommand{\ccof}[1]{\cclass^{#1}} \newcommand{\ccinf}{\ccof{\infty}}