diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/mattex/mattex.sty |
Initial commit
Diffstat (limited to 'macros/latex/contrib/mattex/mattex.sty')
-rw-r--r-- | macros/latex/contrib/mattex/mattex.sty | 186 |
1 files changed, 186 insertions, 0 deletions
diff --git a/macros/latex/contrib/mattex/mattex.sty b/macros/latex/contrib/mattex/mattex.sty new file mode 100644 index 0000000000..e06261d0d9 --- /dev/null +++ b/macros/latex/contrib/mattex/mattex.sty @@ -0,0 +1,186 @@ +%% The MatTeX package +%% +%% Copyright 2012 by Romeo Van Snick +%% +%% This file may be distributed and/or modified under the +%% conditions of the LaTeX Project Publishing License, either +%% version 1.2 of this license ot any later version. +%% The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.2 or later is part of all distributions of +%% LaTeX version 1999/12/01 or later. +%% +%% Matlab (c) is the property of its rightful owner. +%% +%% package version: v0.1 2012/01/12 +%% +%% email: romeovs@gmail.com +%% +%% note: this package is still in devolopment and I'm not a TeX guru, so errors will +%% exist. Feel free to email me if a bug turns up. +%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mattex}[2012/01/12 v1.0 a set of macros to import matlab values] + +% These are the required packages that need to be loaded +\RequirePackage{pgfkeys} +\RequirePackage{xstring} +\RequirePackage{siunitx} +\RequirePackage{xparse} +\RequirePackage{array} +\RequirePackage{collcell} +\ProcessOptions\relax + + +% PACKAGE OPTIONS + +% Define the name for the pgfkeys directory where the matlab variable will be stored in +\newcommand{\mtdirectory}[0]{mtmatlab} + +% PACKAGE CODE + +% This command allows you to set a variable +\DeclareDocumentCommand{\Mset}{m m g g} +{ + % set the value (mandatory) + \pgfkeyssetvalue{/\mtdirectory/#1/val}{#2} + + % set error if it is given + \IfNoValueTF{#3}{ + % if nothing was given, literally set nothing, so variables can be properly overwritten + \pgfkeyssetvalue{/\mtdirectory/#1/err}{} + \pgfkeyssetvalue{/\mtdirectory/#1/pmstr}{} + }{ + % if an argument was given, check if it was empty or not + \IfEq{#3}{}{ + % empty: set empty values + \pgfkeyssetvalue{/\mtdirectory/#1/err}{} + \pgfkeyssetvalue{/\mtdirectory/#1/pmstr}{} + }{ + % not empty: set values + \pgfkeyssetvalue{/\mtdirectory/#1/err}{#3} + \pgfkeyssetvalue{/\mtdirectory/#1/pmstr}{+-} + } + } + + % set exponent if it is given + \IfNoValueTF{#4}{ + % if nothing was given, literally set nothing, so variables can be properly overwritten + \pgfkeyssetvalue{/\mtdirectory/#1/exp}{} + \pgfkeyssetvalue{/\mtdirectory/#1/estr}{} + }{ + % if an argument was given, check if it was empty or not + \IfEq{#4}{}{ + % empty: set all to empty + \pgfkeyssetvalue{/\mtdirectory/#1/exp}{} + \pgfkeyssetvalue{/\mtdirectory/#1/estr}{} + }{ + % not empty: set values + \pgfkeyssetvalue{/\mtdirectory/#1/exp}{#4} + \pgfkeyssetvalue{/\mtdirectory/#1/estr}{e} + } + } + +} + +%% get string value +% this allows you the see which exact string is stored in the variable +\newcommand{\M}[1] +{% + \pgfkeysvalueof{/\mtdirectory/#1/val}% + \pgfkeysvalueof{/\mtdirectory/#1/pmstr}% + \pgfkeysvalueof{/\mtdirectory/#1/err}% + \pgfkeysvalueof{/\mtdirectory/#1/estr}% + \pgfkeysvalueof{/\mtdirectory/#1/exp}% +} + +%% get \SI +% allows you to use the variable as you would use \SI from siunitx +\newcommand{\MSI}[2] +{ + \SI{\M{#1}}{#2} +} + +%% get error literal +\newcommand{\Merrlit}[1]{% + \pgfkeysvalueof{/\mtdirectory/#1/err}% + \pgfkeysvalueof{/\mtdirectory/#1/estr}% + \pgfkeysvalueof{/\mtdirectory/#1/exp}% +} + +%% get value literal +\newcommand{\Mvallit}[1]{% + \pgfkeysvalueof{/\mtdirectory/#1/val}% + \pgfkeysvalueof{/\mtdirectory/#1/estr}% + \pgfkeysvalueof{/\mtdirectory/#1/exp}% +} + +%% get value as \num +\newcommand{\Mval}[1]{ + \num{\Mvallit{#1}} +} + +%% get error as \num +\newcommand{\Merr}[1]{ + % check if anything is in the err string and only try \num if there is + \IfEq{\pgfkeysvalueof{/\mtdirectory/#1/err}}{}{}{ + \num{\Merrlit{#1}} + } +} + +%% get error and value (no units) +\newcommand{\Mnum}[1]{ + \num{\M{#1}} +} + +%% Make and use matrices + +\ExplSyntaxOn +\tl_new:N \l_romeo_cells_tl +\int_new:N \l_romeo_row_int +\int_new:N \l_romeo_col_int +\NewDocumentCommand { \preparematrix } { O{} m m m } +{ + \tl_set:Nn \l_romeo_cells_tl { } + \int_set:Nn \l_romeo_row_int { #3 } + \int_set:Nn \l_romeo_col_int { #4 } + \prg_stepwise_inline:nnnn { 1 } { 1 } { \l_romeo_row_int } + { + \prg_stepwise_inline:nnnn { 1 } { 1 } { \l_romeo_col_int } + { + \int_compare:nF { ####1 = 1 } { \tl_put_right:Nn \l_romeo_cells_tl { & } } + \tl_put_right:Nn \l_romeo_cells_tl + { #2 ( ##1 , ####1 ) } + } + \tl_put_right:Nn \l_romeo_cells_tl { \\ #1 } + } +} +\DeclareExpandableDocumentCommand{ \usematrix } { } +{ \tl_use:N \l_romeo_cells_tl } +% written by egreg at stackexchange: +% http://tex.stackexchange.com/questions/40245/pgffor-and-the-alignment-character + + +%% tabular commands +% allows one to switch on/off header behaviour +% if the header is on, M and N header types are ignored (just "c" columm type applies) +\newtoggle{inTableHeader} % Track if still in header of table +\toggletrue{inTableHeader} % Set initial value +\newcommand*{\header}{\global\toggletrue{inTableHeader}} % set header to true +\newcommand*{\noheader}{\global\togglefalse{inTableHeader}} % set header to false + +% define the table colums +% first define a new command that is sensitive to the inTableHeader toggle +\newcommand*{\tabMval}[1]{\iftoggle{inTableHeader}{#1}{\Mval{#1}}} +\newcolumntype{v}{>{\collectcell\tabMval}c<{\endcollectcell}} + +\newcommand*{\tabMnum}[1]{\iftoggle{inTableHeader}{#1}{\Mnum{#1}}} +\newcolumntype{n}{>{\collectcell\tabMnum}c<{\endcollectcell}} + +\newcommand*{\tabMerr}[1]{\iftoggle{inTableHeader}{#1}{\Merr{#1}}} +\newcolumntype{e}{>{\collectcell\tabMerr}c<{\endcollectcell}} + +%% end of file |