summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/linop
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2016-06-06 23:08:53 +0000
committerKarl Berry <karl@freefriends.org>2016-06-06 23:08:53 +0000
commitc8e15b68086c7c9b6fdfb816b8fe1c8e020a9989 (patch)
treef5ac385f33fbabe72a4fde0497624299887ed9b2 /Master/texmf-dist/tex/latex/linop
parent6257b52105585a7cdd3a20b33339c06c9ac4cb86 (diff)
linop (6jun16)
git-svn-id: svn://tug.org/texlive/trunk@41304 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/linop')
-rw-r--r--Master/texmf-dist/tex/latex/linop/linop.sty99
1 files changed, 99 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/linop/linop.sty b/Master/texmf-dist/tex/latex/linop/linop.sty
new file mode 100644
index 00000000000..f53938b4fab
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/linop/linop.sty
@@ -0,0 +1,99 @@
+%% linop.sty
+%% Copyright 2016 Johannes Weytjens
+%
+% 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 Johannes Weytjens
+%
+% This work consists of the file linop.sty
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{linop}
+
+\RequirePackage{xparse}
+\RequirePackage{bm}
+
+% provide commands that can be easily be renewed to change the style
+\newcommand{\linopstyle}{\hat}
+\newcommand{\linopstylewide}{\widehat}
+\newcommand{\linopspacewide}{\>}
+\newcommand{\linopspacewidehc}{\:}
+\newcommand{\linopconjugate}{\dagger}
+\newcommand{\linopsubscript}{\mathstrut}
+\newcommand{\linopsuperscript}{\mathstrut}
+\newcommand{\linopsuperscripthc}{\mathstrut}
+
+% main commands
+\DeclareDocumentCommand{\op}{s O{\linopspacewide} m G{} G{} G{}}{%
+ \IfBooleanTF#1%
+ {\linopstylewide{#3}_{\linopsubscript#4}^{#2 #5^{#6}\linopsuperscript}}
+ {\linopstyle{#3}_{\linopsubscript#4}^{#5^{#6}\linopsuperscript}}
+}
+
+\DeclareDocumentCommand{\hc}{s O{\linopspacewidehc} m G{} G{} G{}}{%
+ \IfBooleanTF#1%
+ {\linopstylewide{#3}_{\linopsubscript#4}^{#2 \linopconjugate#5^{#6}\linopsuperscripthc}}
+ {\linopstyle{#3}_{\linopsubscript#4}^{\linopconjugate#5^{#6}\linopsuperscripthc}}
+}
+
+% options
+\DeclareOption{bold}{%
+ \renewcommand{\linopstyle}{\mathbf}
+ \renewcommand{\linopstylewide}{\linopstyle}
+ \renewcommand{\linopspacewide}{}
+ \renewcommand{\linopspacewidehc}{}
+
+}
+
+\DeclareOption{bmbold}{%
+ \renewcommand{\linopstyle}{\bm}
+ \renewcommand{\linopstylewide}{\linopstyle}
+ \renewcommand{\linopspacewide}{}
+ \renewcommand{\linopspacewidehc}{}
+}
+
+\DeclareOption{wide}{%
+ \@ifpackagewith{linop}{bold}{\PackageWarning{linop}{The wide option will override the bold option. You probably want to choose one but not both.}}{}
+ \renewcommand{\linopstyle}{\widehat}
+}
+
+\DeclareOption{nohat}{%
+ \renewcommand{\linopstyle}{}
+ \newcommand{\linopstylewide}{}
+}
+
+\DeclareOption{star}{%
+ \renewcommand{\linopconjugate}{*}
+}
+
+\DeclareOption{compact}{%
+ \renewcommand{\linopsubscript}{}
+ \renewcommand{\linopsuperscript}{\phantom{\dagger}}
+ \renewcommand{\linopsuperscripthc}{}
+}
+
+\DeclareOption{square}{%
+ \DeclareDocumentCommand{\op}{s O{\linopspacewide} m O{} O{} O{}}{%
+ \IfBooleanTF#1%
+ {\linopstylewide{#3}_{\linopsubscript#4}^{#2 #5^{#6}\linopsuperscript}}
+ {\linopstyle{#3}_{\linopsubscript#4}^{#5^{#6}\linopsuperscript}}
+ }
+
+ \DeclareDocumentCommand{\hc}{s O{\linopspacewidehc} m O{} O{} O{}}{%
+ \IfBooleanTF#1%
+ {\linopstylewide{#3_{\linopsubscript#4}^{#2 \linopconjugate#5^{#6}\linopsuperscripthc}}}
+ {\linopstyle{#3}_{\linopsubscript#4}^{\linopconjugate#5^{#6}\linopsuperscripthc}}
+ }
+}
+
+\ProcessOptions\relax
+
+\endinput