Browse Source

MRTsfacc: list mode, nested detection; MRTif: tllength, ifTwoToken

master
Jonathan Spratte 1 year ago
parent
commit
e64d7b1f8f

+ 1
- 0
.gitignore View File

@@ -11,5 +11,6 @@
11 11
 *.run.xml
12 12
 *.snm
13 13
 *.toc
14
+Doc/img/*-alone.pdf
14 15
 Example_Documents/MRTbeam/example_MRTbeam.pdf
15 16
 Example_Documents/MRTthesis/example_MRTthesis.pdf

+ 9
- 3
Doc/Makefile View File

@@ -6,6 +6,8 @@ FLAGS  = -halt-on-error
6 6
 TEXF   = ./tex
7 7
 # relative path to included TeX-files containing preamble stuff
8 8
 PREF   = ./preamble
9
+# relative path to images
10
+IMGF   = ./img
9 11
 ##########################################
10 12
 # }}}
11 13
 # Automatically defined variables {{{
@@ -24,7 +26,7 @@ FMT    = $(NAME).fmt
24 26
 ## the name 'quick' maybe misleading! 'all' might be faster if $(FILE) hasn't
25 27
 ## changed. 'quick' is for quickly running TeX assuming that you know what
26 28
 ## you're doing
27
-quick: $(FMT)
29
+quick: img $(FMT)
28 30
 	$(TEX) $(FLAGS) -fmt="$(NAME)" $(FILE)
29 31
 	#$(TEX) $(FLAGS) $(FILE);
30 32
 # }}}
@@ -37,11 +39,15 @@ $(OUT): $(FILE) $(SFILES) $(PREAMB)# {{{
37 39
 $(FMT): $(FILE) $(PREAMB)# {{{
38 40
 	$(TEX) -ini -enc -jobname="$(NAME)" "&$(TEX)" mylatexformat.ltx """$(FILE)"""
39 41
 # }}}
40
-.PHONY: clean cleantex cleansubfoldertex quick all
41
-clean: cleantex cleansubfoldertex
42
+img:
43
+	cd $(IMGF); make -j4
44
+.PHONY: clean cleantex cleansubfoldertex cleanimg quick all img
45
+clean: cleantex cleansubfoldertex cleanimg
42 46
 cleantex: # {{{
43 47
 	-rm $(shell find $(NAME)\.* | grep -Ev '\.tex$$' | grep -Ev '\.sty$$' | grep -Ev '\.bib$$')
44 48
 # }}}
45 49
 cleansubfoldertex: # {{{
46 50
 	-cd $(TEXF); rm $(shell cd $(TEXF); find * | grep -v tex);
47 51
 # }}}
52
+cleanimg:
53
+	cd $(IMGF)); make clean

+ 28
- 0
Doc/img/Makefile View File

@@ -0,0 +1,28 @@
1
+# User defined variables {{{
2
+##########################################
3
+TEX   = pdflatex
4
+FLAG  = -halt-on-error
5
+AINP  = .alone.tex
6
+AOUT  = -alone.pdf
7
+##########################################
8
+# }}}
9
+# Automatically defined variables {{{
10
+##########################################
11
+ALONE = $(wildcard ./*$(AINP))
12
+AOUTP = $(ALONE:%$(AINP)=%$(AOUT))
13
+##########################################
14
+# }}}
15
+
16
+all: alone
17
+alone: $(AOUTP)
18
+%-alone.pdf: %.alone.tex
19
+	$(TEX) $(FLAGS) -jobname="$<" "\input{$<}"
20
+	-rm $<.aux
21
+	-rm $<.log
22
+	mv $<.pdf $@
23
+
24
+.PHONY: all alone clean clean_alone
25
+
26
+clean: clean_alone
27
+clean_alone:
28
+	-rm $(AOUTP)

+ 38
- 0
Doc/img/sfacc_height_table.alone.tex View File

@@ -0,0 +1,38 @@
1
+\documentclass[british,sfacc=height]{MRTalone}
2
+\usepackage{collcell}
3
+
4
+\begin{document}
5
+\begin{MRTtable}
6
+  [
7
+    col=
8
+      {
9
+        *2{>{\collectcell\hatex}c<{\endcollectcell}}
10
+        *2{>{\collectcell\hatst}c<{\endcollectcell}}
11
+        >{\hskip4\tabcolsep}l
12
+        *2{>{\collectcell\hatex}c<{\endcollectcell}}
13
+        *2{>{\collectcell\hatst}c<{\endcollectcell}}
14
+      }
15
+    ,pre=
16
+      {%
17
+        \newcommand\hatex[1]{$\hat!{#1}$}%
18
+        \newcommand\hatst[1]{$\hat*{#1}$}%
19
+      }
20
+  ]
21
+  \multicolumn{2}{c}{original} & \multicolumn{2}{c}{shifted} &&
22
+  \multicolumn{2}{c}{original} & \multicolumn{2}{c}{shifted} \\
23
+
24
+    a & A & a & A   &&   n & N & n & N \\
25
+    b & B & b & B   &&   o & O & o & O \\
26
+    c & C & c & C   &&   p & P & p & P \\
27
+    d & D & d & D   &&   q & Q & q & Q \\
28
+    e & E & e & E   &&   r & R & r & R \\
29
+    f & F & f & F   &&   s & S & s & S \\
30
+    g & G & g & G   &&   t & T & t & T \\
31
+    h & H & h & H   &&   u & U & u & U \\
32
+    i & I & i & I   &&   v & V & v & V \\
33
+    j & J & j & J   &&   w & W & w & W \\
34
+    k & K & k & K   &&   x & X & x & X \\
35
+    l & L & l & L   &&   y & Y & y & Y \\
36
+    m & M & m & M   &&   z & Z & z & Z \\
37
+\end{MRTtable}
38
+\end{document}

+ 39
- 0
Doc/img/sfacc_list_table.alone.tex View File

@@ -0,0 +1,39 @@
1
+\documentclass[british,sfacc=list]{MRTalone}
2
+\usepackage{collcell}
3
+
4
+\begin{document}
5
+\begin{MRTtable}
6
+  [
7
+    col=
8
+      {
9
+        *2{>{\collectcell\hatex}c<{\endcollectcell}}
10
+        *2{>{\collectcell\hatst}c<{\endcollectcell}}
11
+        >{\hskip4\tabcolsep}l
12
+        *2{>{\collectcell\hatex}c<{\endcollectcell}}
13
+        *2{>{\collectcell\hatst}c<{\endcollectcell}}
14
+      }
15
+    ,pre=
16
+      {%
17
+        \newcommand\hatex[1]{$\hat[0mu]{#1}$}%
18
+        \newcommand\hatst[1]{$\hat{#1}$}%
19
+      }
20
+  ]
21
+  \multicolumn{2}{c}{original} & \multicolumn{2}{c}{shifted} &&
22
+  \multicolumn{2}{c}{original} & \multicolumn{2}{c}{shifted} \\
23
+
24
+    a & A & a & A   &&   n & N & n & N \\
25
+    b & B & b & B   &&   o & O & o & O \\
26
+    c & C & c & C   &&   p & P & p & P \\
27
+    d & D & d & D   &&   q & Q & q & Q \\
28
+    e & E & e & E   &&   r & R & r & R \\
29
+    f & F & f & F   &&   s & S & s & S \\
30
+    g & G & g & G   &&   t & T & t & T \\
31
+    h & H & h & H   &&   u & U & u & U \\
32
+    i & I & i & I   &&   v & V & v & V \\
33
+    j & J & j & J   &&   w & W & w & W \\
34
+    k & K & k & K   &&   x & X & x & X \\
35
+    l & L & l & L   &&   y & Y & y & Y \\
36
+    m & M & m & M   &&   z & Z & z & Z \\
37
+\end{MRTtable}
38
+\end{document}
39
+

+ 13
- 1
Doc/preamble/doc_macros.tex View File

@@ -1,5 +1,6 @@
1 1
 \makeatletter
2 2
 \newcommand*\pkg[1]{\textrm{#1}}
3
+\newcommand*\pkgWopt[2]{\opt{[#2]}\penalty500\pkg{#1}}
3 4
 \newcommand*\cls[1]{\textrm{#1}}
4 5
 \newcommand*\TikZ{\pkg{Ti\textit{k}Z}}
5 6
 \newcommand*\env[1]{\texttt{#1}}
@@ -12,7 +13,18 @@
12 13
     \texttt{\expandafter\eatspace\string\ \detokenize{#1}}%
13 14
   }%<<<
14 15
 \def\cs@PDFString#1{(macro #1)}
15
-\protected\def\meta#1{\texttt{$\langle$\textit{#1}$\rangle$}}
16
+\protected\def\meta#1{\texttt{$\langle$\textit{\meta@a{#1}}$\rangle$}}
17
+\ExplSyntaxOn
18
+\newcommand\meta@a[1]%>>>
19
+  {
20
+    \group_begin:
21
+    \tl_set:Nn \l_docMRTbundle_tmp_tl { #1 }
22
+    \regex_replace_once:nnN { \d+$ } { \c{textsubscript} \cB{ \0 \cE} }
23
+      \l_docMRTbundle_tmp_tl
24
+    \l_docMRTbundle_tmp_tl
25
+    \group_end:
26
+  }%<<<
27
+\ExplSyntaxOff
16 28
 \newcommand*\metaEnclosed[3]{\texttt{#1}\meta{#2}\texttt{#3}}
17 29
 \newcommand*\marg[1]{\metaEnclosed\{{#1}\}}
18 30
 \newcommand*\oarg[1]{\metaEnclosed[{#1}]}

+ 11
- 0
Doc/tex/doc_MRTif.tex View File

@@ -44,6 +44,11 @@ the first and second argument, respectively, an expansion is made.
44 44
 \end{describemacroTF}
45 45
 \dscremaininglines{3}
46 46
 
47
+\begin{describemacroTF}[G,N,GN]{MRTifTwoToken}[\marg{arg}]
48
+  Tests if \meta{arg} is exactly two tokens.
49
+\end{describemacroTF}
50
+\dscremaininglines{3}
51
+
47 52
 \begin{describemacroTF}[G,N,GN]{MRTifLetter}[\marg{arg}]
48 53
   Tests if \meta{arg} is a letter, meaning of category code 11.
49 54
 \end{describemacroTF}
@@ -87,6 +92,12 @@ the first and second argument, respectively, an expansion is made.
87 92
 \end{describemacroTF}
88 93
 \dscremaininglines{4}
89 94
 
95
+\begin{describemacro}{MRTtllength,MRTtllengthN}[\marg{arg}]
96
+  Expands to the number of tokens or groups inside of \meta{arg}. Unprotected
97
+  spaces are ignored. The ordinary version needs two expansions while the |N|
98
+  version needs four.
99
+\end{describemacro}
100
+
90 101
 \section{Dependencies}
91 102
 \pkg{MRTif} loads the \pkg{pdftexcmds} package to make the \hologo{pdfTeX}
92 103
 primitive \cs{pdfstrcmp} available as \cs{pdf@strcmp} for \hologo{LuaTeX}.

+ 155
- 67
Doc/tex/doc_MRTsfacc.tex View File

@@ -1,74 +1,162 @@
1
-\chapter{The \pkg{MRTsfacc} package}
1
+\chapter{The \pkg{MRTsfacc} package}\label{sec:sfacc}
2 2
 This package is provided to remedy an issue related with sans serif maths, to be
3 3
 more precise to fix the placement of \cs{mathaccentV}, which is internally used
4
-by macros such as \cs{hat} and \cs{dot}. It is therefore loaded by both,
5
-\cls{MRTthesis} and \cls{MRTbeam}. The \cls{beamer} class provides a fix for the
6
-same issue which is unfortunately only working for \cls{beamer}'s default font
7
-by fixing the font metrics.
8
-
9
-\cls{MRTsfacc} has a different approach by patching \cs{mathaccentV} to move the
10
-accent horizontally depending on the height of the accented character.
11
-Furthermore it is tested whether the character is an alphabetic one by checking
12
-the category code. If it is not an alphabetic character the shift isn't applied.
13
-
14
-The package forwards any option to \cs{MRTsfaccSet}. \cs{MRTsfaccSet} tests
15
-whether its argument is a valid float using \cs{MRTifFloatTF} and sets the share
16
-of the letters' height which is used as the horizontal displacement. So you can
17
-either use the option during load time to set the share or \cs{MRTsfaccSet} at
18
-any later point. The default share is
19
-\makeatletter\texttt{\MRTsfacc@shift}\makeatother.
20
-
21
-One can use \texttt{*} to enforce the shift and \texttt{!}\@ to enforce the
22
-omitting of that shift. Consider the following example:
23
-\verb$\hat!{m}$ produces $\hat!{m}$, \verb$\hat*{m}$ produces $\hat*{m}$, and
24
-\verb$\hat{m}$ produces $\hat{m}$, which is the same as \verb$\hat*{m}$ since
25
-\texttt{m} has by default the category code of an alphabetic character.
26
-
27
-The tokens \texttt{*} and \texttt{!}\@ must not be enclosed by braces if you
28
-want to specify the behaviour of \cs{mathaccentV}, so \verb$\hat{*}\hat{!}$
29
-results in $\hat{*}\hat{!}$.
30
-
31
-\begin{MRTtable}
4
+by macros such as \cs{hat} and \cs{dot} with \pkg{amsmath} loaded. It is
5
+therefore loaded by all three, \cls{MRTthesis}, \cls{MRTbeam} and
6
+\cls{MRTalone}. The \cls{beamer} class provides a fix for the same issue which
7
+is unfortunately only working for \cls{beamer}'s default font by fixing the font
8
+metrics (and as far as I know only works with \hologo{pdfLaTeX}).
9
+
10
+\cls{MRTsfacc} has two different approaches by patching \cs{mathaccentV} to move
11
+the accent horizontally -- either depending on the height of the accented
12
+character or a defined offset in a list of possible arguments.
13
+
14
+The package is designed with \pkg{mathastext} with the \opt{italics} option in
15
+mind. It might work for other sans serif maths solutions as well. It requires
16
+\pkg{amsmath} to be loaded.
17
+
18
+Independent on the used approach the accent macros check whether their argument
19
+is one meeting a special criterion (a character of category 11 or a known
20
+element). Furthermore both versions should detect whether the argument is just
21
+another accent macro nested so that in \bverb|\dot{\bar{a}}| the \cs{dot} would
22
+still find the |a| as a known argument. This nested usage works only if the
23
+nested macro uses \cs{mathaccentV} internally and each level of nesting is an
24
+exact match of the approach's criterion or does only contain two tokens or
25
+groups (so in above example the \cs{bar} and the |{a}|) with the first one being
26
+a \cs{mathaccentV} using macro.
27
+
28
+\section{Options}%>>>
29
+The package has the following options:
30
+\begin{describeopt}{height}
31
+  If this option is used the offset is dependent on the height of the accented
32
+  character. Read the description in \autoref{sec:sfacc:height}.
33
+\end{describeopt}
34
+\begin{describeopt}{list}
35
+  If this option is used the offset is defined by a list of known arguments.
36
+  Read the description in \autoref{sec:sfacc:list}.
37
+\end{describeopt}
38
+\begin{describeopt}{notest}
39
+  By default the package does test whether the definition of \cs{mathaccentV}
40
+  meets the known definition from the \pkg{amsmath} package. If something does
41
+  redefine \cs{mathaccentV} or the definition has changed but you're sure that
42
+  \pkg{MRTsfacc} still works with (it redefines it anyway) you can deactivate
43
+  that test with this option. If \pkg{amsmath}'s definition of \cs{mathaccentV}
44
+  has changed, please contact the me as described in \autoref{sec:bugs}.
45
+\end{describeopt}
46
+
47
+Every other option is passed on to \cs{MRTsfaccSet}, its description is included
48
+in \autoref{sec:sfacc:height:macros}. This will have no effect if the \opt{list}
49
+option is used.
50
+%<<<
51
+
52
+\section{\opt{height} Variant}\label{sec:sfacc:height}%>>>
53
+This variant checks whether the argument is a single character with category
54
+code 11. If this test does not return true, the shift isn't applied.
55
+
56
+\autoref{tab:sfacc:height} shows the results of this approach. While this
57
+approach is easier to adapt to other fonts -- one has to change only one
58
+parameter -- it is always a compromise trying to match every character as good
59
+as possible.
60
+
61
+\begin{table}% >>>
62
+  \centering
63
+  \includegraphics{img/sfacc_height_table-alone.pdf}
64
+  \caption
65
+    {%
66
+      Comparison of shifted accents against original placement with the use of
67
+      the \opt{height} variant.%
68
+      \label{tab:sfacc:height}%
69
+    }%
70
+\end{table}% <<<
71
+
72
+
73
+\subsection{Macros}\label{sec:sfacc:height:macros}%>>>
74
+\begin{describemacro}{<accent>}[\meta{*/!}\marg{arg}]%>>>
75
+  \cs{<accent>} can be any of the maths accent macros using \cs{mathaccentV}
76
+  internally (e.g. \cs{bar}, \cs{dot}, etc.).\\
77
+  The \meta{*/!} can either be \texttt{*} or \texttt{!}\@ or omitted entirely.
78
+  If the starred version is used, the shift is enforced regardless of the
79
+  argument, if the exclamation mark is given it is prohibited.
80
+\end{describemacro}%<<<
81
+
82
+\begin{describemacro}{MRTsfaccSet}[\marg{float}]%>>>
83
+  The shift width depends on a multiple of the box's height. The multiple can be
84
+  set with this macro and should be a valid float. This is tested using
85
+  \cs{MRTifFloatTF}. The package default for this share is
86
+  \makeatletter\texttt{\MRTsfacc@shift}\makeatother.
87
+\end{describemacro}%<<<
88
+%<<<
89
+%<<<
90
+
91
+\section{\opt{list} Variant}\label{sec:sfacc:list}%>>>
92
+This variant checks whether the argument is a known element from a list in which
93
+the offset is defined in the unit of \texttt{mu}.
94
+
95
+It has the advantage that you can define individual offsets for every argument.
96
+In addition not only characters can be added to the list but almost arbitrary
97
+stuff. The drawback is that everything has to be added that you want to be
98
+recognized.
99
+\autoref{tab:sfacc:list} shows the results of this approach.
100
+
101
+\begin{table}% >>>
102
+  \centering
103
+  \includegraphics{img/sfacc_list_table-alone.pdf}
104
+  \caption
105
+    {%
106
+      Comparison of shifted accents against original placement with the use of
107
+      the \opt{list} variant.%
108
+      \label{tab:sfacc:list}%
109
+    }%
110
+\end{table}% <<<
111
+
112
+\subsection{Macros}
113
+\begin{describemacro}{<accent>}[\oarg{opt}\marg{arg}]%>>>
114
+  \cs{<accent>} can be any of the maths accent macros using \cs{mathaccentV}
115
+  internally (e.g. \cs{bar}, \cs{dot}, etc.).\\
116
+  \meta{opt} can either be a defined element from the list or a length in the
117
+  unit of \texttt{mu}. So with \texttt{foo} a defined list element, both
118
+  \bverb|\hat[foo]{bar}| and \bverb|\hat[4mu]{bar}| would be valid. If
119
+  \meta{opt} is a known element the offset of that element is used regardless of
120
+  the given \meta{arg} else (if it is used) the given length is used as the
121
+  offset. If the optional argument isn't used at all, it'll be tested whether
122
+  \meta{arg} is a known element and if so the appropriate offset will be used.
123
+  Else no offset will be applied.
124
+\end{describemacro}%<<<
125
+
126
+\begin{describemacro}{MRTsfaccShift}[\marg{element}\marg{shift}]%>>>
127
+  Adds \meta{element} to the list of known arguments and saves \meta{shift} for
128
+  it. If \meta{element} is already known it'll get redefined. \meta{shift} has
129
+  to be given in \texttt{mu}.
130
+\end{describemacro}%<<<
131
+
132
+\begin{describemacro}{MRTsfaccShiftLet}%>>>
133
+  [\marg{element1}\marg{element2}]
134
+  Adds \meta{element1} to the list of known arguments and defines the
135
+  offset to be the one currently used by \meta{element2}.
136
+  \meta{element2} has to be known, if it isn't an error will be thrown.
137
+\end{describemacro}%<<<
138
+
139
+\begin{describemacro}{MRTsfaccLoadShiftList}[\marg{list}]
140
+  The package comes with definitions for some fonts (see
141
+  \autoref{tab:sfacc:listfiles}). With this macro you can load them. If you
142
+  define a list for a font (or font combination) not listed in the table you
143
+  might contact me as described in \autoref{sec:bugs} and I'll gladly add it
144
+  to the package.
145
+\end{describemacro}
146
+%<<<
147
+
148
+\begin{MRTtable}%>>>
32 149
   [
33
-    col=
34
-      {
35
-        *2{>{\collectcell\hatex}c<{\endcollectcell}}
36
-        *2{>{\collectcell\hatst}c<{\endcollectcell}}
37
-        >{\hskip4\tabcolsep}l
38
-        *2{>{\collectcell\hatex}c<{\endcollectcell}}
39
-        *2{>{\collectcell\hatst}c<{\endcollectcell}}
40
-      }
41
-    ,cap={Comparison of shifted accents against original placement}
42
-    ,label=tab:sfacc
43
-    ,pre=
44
-      {%
45
-        \newcommand\hatex[1]{$\hat!{#1}$}%
46
-        \newcommand\hatst[1]{$\hat*{#1}$}%
47
-      }
48
-    ,pos=!bp
150
+    ,col={>{\ttfamily}l >{\raggedright\arraybackslash}p{.55\linewidth}}
151
+    ,cap={Available shift definition lists}
152
+    ,label={tab:sfacc:listfiles}
49 153
   ]
50
-  \multicolumn{2}{c}{original} & \multicolumn{2}{c}{shifted} &&
51
-  \multicolumn{2}{c}{original} & \multicolumn{2}{c}{shifted} \\
52
-  
53
-    a & A & a & A   &&   n & N & n & N \\
54
-    b & B & b & B   &&   o & O & o & O \\
55
-    c & C & c & C   &&   p & P & p & P \\
56
-    d & D & d & D   &&   q & Q & q & Q \\
57
-    e & E & e & E   &&   r & R & r & R \\
58
-    f & F & f & F   &&   s & S & s & S \\
59
-    g & G & g & G   &&   t & T & t & T \\
60
-    h & H & h & H   &&   u & U & u & U \\
61
-    i & I & i & I   &&   v & V & v & V \\
62
-    j & J & j & J   &&   w & W & w & W \\
63
-    k & K & k & K   &&   x & X & x & X \\
64
-    l & L & l & L   &&   y & Y & y & Y \\
65
-    m & M & m & M   &&   z & Z & z & Z \\
66
-\end{MRTtable}
67
-
68
-The resulting \cs{mathaccentV} macro is not expandable and therefore created
69
-\cs{protected}. You can take a look at the results in \autoref{tab:sfacc}.
154
+    \normalfont List & To be used with\\
155
+    helvet & \pkg{helvet} and \pkgWopt{mathastext}{italic,defaultmathsizes}
156
+    \\
157
+\end{MRTtable}%<<<
70 158
 
71 159
 \section{Dependencies}
72 160
 \pkg{MRTsfacc} loads the \pkg{MRTif} package and uses its tests
73
-\cs{MRTifLetterGTF} and \cs{MRTifFloatTF}. It also depends on \pkg{amsmath}
74
-being loaded.
161
+\cs{MRTifLetterGTF}, \cs{MRTifFloatTF}, \cs{MRTifStringsMatchXXTF} and
162
+\cs{MRTifTwoTokenTF}. It also depends on \pkg{amsmath} being loaded.

+ 47
- 2
MRTif/MRTif.sty View File

@@ -1,5 +1,5 @@
1
-\newcommand*\MRTif@version{0.0.2}
2
-\newcommand*\MRTif@date{2018-07-31}
1
+\newcommand*\MRTif@version{0.0.3}
2
+\newcommand*\MRTif@date{2018-11-06}
3 3
 
4 4
 \NeedsTeXFormat{LaTeX2e}
5 5
 
@@ -10,6 +10,16 @@
10 10
   ]
11 11
 \RequirePackage{pdftexcmds}
12 12
 
13
+\edef\endMRTifargument{\detokenize{{.$^_&}{}}{.$^_&}{}UnlikelyString}
14
+\newcommand\MRTif@endMRTifargument[1]% >>>
15
+  {%
16
+    \ifx\endMRTifargument#1%
17
+      \expandafter\@firstoftwo
18
+    \else
19
+      \expandafter\@secondoftwo
20
+    \fi
21
+  }% <<<
22
+
13 23
 \newcommand*\MRTif@groupify@TF[1]% >>>
14 24
   {%
15 25
     \expandafter\newcommand\csname MRTif#1GTF\endcsname{}%
@@ -244,6 +254,25 @@
244 254
 \MRTif@create@TandF@N@TandF{OneToken}
245 255
 \MRTif@create@TandF@N@TandF{OneTokenG}
246 256
 % <<<
257
+% MRTifTwoToken >>>
258
+\newcommand\MRTifTwoTokenTF[1]% >>>
259
+  {%
260
+    \MRTifEmptyTF{#1}{\@secondoftwo}
261
+      {%
262
+        \MRTifOneToken@a#1.\end@MRTifOneTokenTF
263
+          {\@secondoftwo}
264
+          {%
265
+            \MRTifTwoToken@a#1.\end@MRTifTwoTokenTF
266
+          }%
267
+      }%
268
+  }% <<<
269
+\newcommand\MRTifTwoToken@a{}% >>>
270
+\long\def\MRTifTwoToken@a#1#2#3#4\end@MRTifTwoTokenTF
271
+  {\MRTifEmptyTF{#4}}% <<<
272
+\MRTif@groupify@TF{TwoToken}
273
+\MRTif@create@TandF@N@TandF{TwoToken}
274
+\MRTif@create@TandF@N@TandF{TwoTokenG}
275
+% <<<
247 276
 % MRTifLetter >>>
248 277
 \newcommand\MRTifLetterTF[1]% >>>
249 278
   {%
@@ -517,6 +546,22 @@
517 546
     %\
518 547
   %}% <<<
519 548
 %
549
+% MRTtllength >>>
550
+\newcommand\MRTtllength@inner[1]% >>>
551
+  {%
552
+    \MRTif@endMRTifargument{#1}
553
+      {\relax}
554
+      {+1\MRTtllength@inner}%
555
+  }% <<<
556
+\newcommand\MRTtllength[1]% >>>
557
+  {%
558
+    \the\numexpr0\MRTtllength@inner#1\endMRTifargument
559
+  }% <<<
560
+\newcommand\MRTtllengthN[1]% >>>
561
+  {%
562
+    \expandafter\MRTtllength\expandafter{#1}%
563
+  }% <<<
564
+% <<<
520 565
 
521 566
 \endinput
522 567
 % vim: fdm=marker foldmarker=>>>,<<< ft=tex

+ 56
- 0
MRTsfacc/MRTsfacc.list.helvet.tex View File

@@ -0,0 +1,56 @@
1
+\ProvidesFile{MRTsfacc.list.helvet.tex}
2
+  [2018-11-06 provides mathaccentV shifts for the helvet font]
3
+\MRTsfaccShift{a}{4mu}%
4
+\MRTsfaccShift{A}{5.4mu}%
5
+\MRTsfaccShift{b}{0mu}%
6
+\MRTsfaccShift{B}{3.5mu}%
7
+\MRTsfaccShift{c}{3mu}%
8
+\MRTsfaccShift{C}{4mu}%
9
+\MRTsfaccShift{d}{6.5mu}%
10
+\MRTsfaccShift{D}{3mu}%
11
+\MRTsfaccShift{e}{3.5mu}%
12
+\MRTsfaccShift{E}{4.4mu}%
13
+\MRTsfaccShift{f}{4.4mu}%
14
+\MRTsfaccShift{F}{4.7mu}%
15
+\MRTsfaccShift{g}{3mu}%
16
+\MRTsfaccShift{G}{4.7mu}%
17
+\MRTsfaccShift{h}{2mu}%
18
+\MRTsfaccShift{H}{4.5mu}%
19
+\MRTsfaccShift{i}{4mu}%
20
+\MRTsfaccShiftLet{\imath}{i}%
21
+\MRTsfaccShift{I}{5mu}%
22
+\MRTsfaccShift{j}{4mu}%
23
+\MRTsfaccShiftLet{\jmath}{j}%
24
+\MRTsfaccShift{J}{7mu}%
25
+\MRTsfaccShift{k}{1mu}%
26
+\MRTsfaccShift{K}{3mu}%
27
+\MRTsfaccShift{l}{5mu}%
28
+\MRTsfaccShift{L}{1.5mu}%
29
+\MRTsfaccShift{m}{4mu}%
30
+\MRTsfaccShift{M}{4.5mu}%
31
+\MRTsfaccShift{n}{3.8mu}%
32
+\MRTsfaccShift{N}{4.5mu}%
33
+\MRTsfaccShift{o}{3.5mu}%
34
+\MRTsfaccShift{O}{4.5mu}%
35
+\MRTsfaccShift{p}{3.5mu}%
36
+\MRTsfaccShift{P}{3.5mu}%
37
+\MRTsfaccShift{q}{3.5mu}%
38
+\MRTsfaccShift{Q}{4.5mu}%
39
+\MRTsfaccShift{r}{3.3mu}%
40
+\MRTsfaccShift{R}{3.5mu}%
41
+\MRTsfaccShift{s}{3mu}%
42
+\MRTsfaccShift{S}{4mu}%
43
+\MRTsfaccShift{t}{3.5mu}%
44
+\MRTsfaccShift{T}{3.5mu}%
45
+\MRTsfaccShift{u}{3.4mu}%
46
+\MRTsfaccShift{U}{4.5mu}%
47
+\MRTsfaccShift{v}{2.5mu}%
48
+\MRTsfaccShift{V}{3.3mu}%
49
+\MRTsfaccShift{w}{2.3mu}%
50
+\MRTsfaccShift{W}{3.3mu}%
51
+\MRTsfaccShift{x}{2.5mu}%
52
+\MRTsfaccShift{X}{3.7mu}%
53
+\MRTsfaccShift{y}{2.5mu}%
54
+\MRTsfaccShift{Y}{3.3mu}%
55
+\MRTsfaccShift{z}{3mu}%
56
+\MRTsfaccShift{Z}{4mu}%

+ 268
- 113
MRTsfacc/MRTsfacc.sty View File

@@ -1,5 +1,5 @@
1
-\newcommand*\MRTsfacc@version{0.0.3}
2
-\newcommand*\MRTsfacc@date{2018-10-02}
1
+\newcommand*\MRTsfacc@version{0.0.4}
2
+\newcommand*\MRTsfacc@date{2018-11-07}
3 3
 
4 4
 \NeedsTeXFormat{LaTeX2e}
5 5
 
@@ -10,13 +10,14 @@
10 10
   ]
11 11
 
12 12
 \RequirePackage{MRTif}
13
+\RequirePackage{amsmath}
13 14
 
14 15
 \providecommand\@firstofthree[3]{#1}
15 16
 \providecommand\@secondofthree[3]{#2}
16 17
 \providecommand\@thirdofthree[3]{#3}
17 18
 
18 19
 \def\MRTsfacc@shift{0.25}
19
-\newcommand\MRTsfaccSet[1]
20
+\newcommand\MRTsfaccSet[1]%>>>
20 21
   {%
21 22
     \MRTifFloatTF{#1}
22 23
       {\def\MRTsfacc@shift{#1}}
@@ -30,140 +31,294 @@
30 31
             package maintainer.%
31 32
           }%
32 33
       }%
33
-  }
34
-\newif\if@MRTsfacc@patching@
35
-\DeclareOption{patching}{\@MRTsfacc@patching@true}
36
-\DeclareOption{mathastext}{\@MRTsfacc@patching@false}
34
+  }%<<<
35
+\newif\if@MRTsfacc@notest@
36
+\newif\if@MRTsfacc@height@
37
+\@MRTsfacc@height@true
38
+\DeclareOption{height}{\@MRTsfacc@height@true}
39
+\DeclareOption{list}{\@MRTsfacc@height@false}
40
+\DeclareOption{notest}{\@MRTsfacc@notest@true}
37 41
 \DeclareOption*{\expandafter\MRTsfaccSet\expandafter{\CurrentOption}}
38 42
 \ProcessOptions\relax
39 43
 
44
+% Test whether \mathaccentV has the correct meaning >>>
45
+\if@MRTsfacc@notest@
46
+\else
47
+  % this is amsmath's definition of \mathaccentV (2018-06-11)
48
+  \AtBeginDocument% >>>
49
+    {%
50
+      \begingroup
51
+      \newcommand*\MRTsfacc@mathaccentV@test[5]% >>>
52
+        {%
53
+          \ifmmode
54
+            \gdef\macc@tmp{\macc@depth\@ne}%
55
+            \setbox\z@\hbox
56
+              {%
57
+                \let\mathaccentV\macc@test
58
+                \let\use@mathgroup\@gobbletwo
59
+                \let\select@group\@gobblethree
60
+                \frozen@everymath{}%
61
+                $#5$%
62
+              }%
63
+            \macc@tmp
64
+            \ifnum\macc@depth=\@ne
65
+              \global\let\macc@nucleus\@empty
66
+              \mathaccent"\accentclass@
67
+            \else
68
+              \@xp\macc@nested
69
+            \fi
70
+            #2#3#4{#5}\macc@nucleus
71
+          \else
72
+            \@xp\nonmatherr@\csname #1\endcsname
73
+          \fi
74
+        }% <<<
75
+      \ifx\MRTsfacc@mathaccentV@test\mathaccentV
76
+      \else
77
+        \PackageError{MRTsfacc}{Compatibility with amsmath might be broken}
78
+          {%
79
+            This version of MRTsfacc might be incompatible with your version of
80
+            amsmath.%
81
+            \MessageBreak
82
+            This is tested by comparing the definition of
83
+            \string\mathaccentV\space with a known\MessageBreak definition.%
84
+            \MessageBreak
85
+            Read the manual of this `MRTsfacc`. Afterwards you might contact the
86
+            package\MessageBreak maintainer of this package.%
87
+          }%
88
+      \fi
89
+      \endgroup
90
+    }% <<<
91
+\fi
92
+% <<<
93
+
94
+\newcommand\MRTsfacc@mathaccentV[5]% >>>
95
+  {%
96
+    \global\let\macc@nucleus\@empty
97
+    \mathaccent"\accentclass@#2#3#4{#5}\macc@nucleus
98
+  }% <<<
99
+
100
+\newif\if@MRTsfacc@found@known@
101
+\edef\MRTsfacc@mathaccentV@detokenized{\detokenize{\mathaccentV}}
102
+\long\def\MRTsfacc@mathaccentV@using@inner#1 #2 #3\endMRTsfacc@arg% >>>
103
+  {%
104
+    \MRTifStringsMatchXXTF{\MRTsfacc@mathaccentV@detokenized}{#2 }
105
+  }% <<<
106
+\newcommand\MRTsfacc@mathaccentV@using[1]% >>>
107
+  {%
108
+    \expandafter\MRTsfacc@mathaccentV@using@inner\meaning#1 . .\endMRTsfacc@arg
109
+  }% <<<
110
+\newcommand\MRTsfacc@testnest[2]% >>>
111
+  {%
112
+    \MRTifTwoTokenTF{#2}
113
+      {%
114
+        \@MRTsfacc@found@known@false
115
+        \setbox\z@\hbox
116
+          {%
117
+            \let\MRTsfacc@testknown#1\relax
118
+            \let\mathaccentV\MRTsfacc@testnest@
119
+            \let\use@mathgroup\@gobbletwo
120
+            \let\select@group\@gobblethree
121
+            \frozen@everymath{}%
122
+            $#2$%
123
+          }%
124
+        \if@MRTsfacc@found@known@
125
+          \expandafter\@firstoftwo
126
+        \else
127
+          \expandafter\@secondoftwo
128
+        \fi
129
+      }
130
+      {\@secondoftwo}%
131
+  }% <<<
132
+\newcommand\MRTsfacc@testnest@[5]% >>>
133
+  {%
134
+    \MRTsfacc@testknown{#5}
135
+      {%
136
+        \gdef\MRTsfacc@known{#5}%
137
+        \global\@MRTsfacc@found@known@true
138
+      }
139
+      {%
140
+        \MRTifTwoTokenTF{#5}
141
+          {%
142
+            \expandafter\MRTsfacc@mathaccentV@using\expandafter{\@firstoftwo#5}%
143
+              {\@firstoftwo}
144
+              {\@secondoftwo}%
145
+          }
146
+          {\@secondoftwo}%
147
+          {%
148
+            #5%
149
+          }
150
+          {%
151
+            \global\@MRTsfacc@found@known@false
152
+          }%
153
+      }%
154
+  }% <<<
155
+
40 156
 % stupid package for math font is stupid. Have to cure the sickness >>>
41
-\if@MRTsfacc@patching@
157
+\if@MRTsfacc@height@
42 158
 % true >>>
43
-  \RequirePackage{amsmath}
44
-  \newcommand\MRTsfacc@kern%>>>
159
+  \newcommand*\MRTsfacc@patch@mathaccentV% >>>
160
+    {%
161
+      \protected\long\def\mathaccentV##1##2##3##4% >>>
162
+        {%
163
+          \ifmmode
164
+            \def\mathaccentV@args{{##1}{##2}{##3}{##4}}%
165
+            \expandafter\@firstofone
166
+          \else
167
+            \@xp\nonmatherr@\csname ##1\endcsname
168
+            \expandafter\@gobble
169
+          \fi
170
+          {\futurelet\next\mathaccentV@a}%
171
+        }% <<<
172
+    }% <<<
173
+  \newcommand*\MRTsfacc@kern% >>>
45 174
     {%
46 175
       \MRTsfacc@shift\ht\MRTsfacc@box
47
-    }%<<<
176
+    }% <<<
48 177
   \newbox\MRTsfacc@box
49
-  \newcommand*\MRTsfacc@patch@mathaccentV%>>>
178
+  \newcommand*\mathaccentV@a[1]% >>>
50 179
     {%
51
-      \let\mathaccentV@orig\mathaccentV
52
-      \protected\long\def\mathaccentV##1##2##3##4% >>>
180
+      \expandafter\ifx\next!%
181
+        \expandafter\@firstofthree
182
+      \else
183
+        \expandafter\ifx\next*%
184
+          \expandafter\expandafter\expandafter\@secondofthree
185
+        \else
186
+          \expandafter\expandafter\expandafter\@thirdofthree
187
+        \fi
188
+      \fi
189
+      {\expandafter\MRTsfacc@mathaccentV\mathaccentV@args}
190
+      {\expandafter\mathaccentV@shifted\mathaccentV@args}
191
+      {\expandafter\mathaccentV@b\mathaccentV@args{#1}}%
192
+    }% <<<
193
+  \newcommand*\mathaccentV@b[5]% >>>
194
+    {%
195
+      \MRTifLetterGTF{#5}
196
+        {\mathaccentV@shifted{#1}{#2}{#3}{#4}{#5}}
53 197
         {%
54
-          \def\mathaccentV@args{{##1}{##2}{##3}{##4}}%
55
-          \futurelet\next\mathaccentV@a
56
-        }% <<<
57
-      \newcommand*\mathaccentV@a[1]% >>>
198
+          \MRTsfacc@testnest\MRTifLetterGTF{#5}
199
+            {\mathaccentV@shifted{#1}{#2}{#3}{#4}{#5}}
200
+            {\MRTsfacc@mathaccentV{#1}{#2}{#3}{#4}{#5}}%
201
+        }%
202
+    }% <<<
203
+  \newcommand*\mathaccentV@shifted[5]% >>>
204
+    {%
205
+      \mathchoice
206
+        {\mathaccentV@shifted@a{display}{#1}{#2}{#3}{#4}{#5}}
207
+        {\mathaccentV@shifted@a{text}{#1}{#2}{#3}{#4}{#5}}
208
+        {\mathaccentV@shifted@a{script}{#1}{#2}{#3}{#4}{#5}}
209
+        {\mathaccentV@shifted@a{scriptscript}{#1}{#2}{#3}{#4}{#5}}%
210
+    }% <<<
211
+  \newcommand*\mathaccentV@shifted@a[6]% >>>
212
+    {%
213
+      \setbox\MRTsfacc@box\hbox{$\csname #1style\endcsname#6$}%
214
+      \MRTsfacc@mathaccentV{#2}{#3}{#4}{#5}%
215
+        {%
216
+          #6%
217
+          \kern\MRTsfacc@kern
218
+        }%
219
+      \kern-\MRTsfacc@kern
220
+    }% <<<
221
+\else% <<<
222
+% false >>>
223
+  \newcommand*\MRTsfacc@patch@mathaccentV% >>>
224
+    {%
225
+      \protected\def\mathaccentV##1##2##3##4% >>>
58 226
         {%
59
-          \expandafter\ifx\next!%
60
-            \expandafter\@firstofthree
227
+          \ifmmode
228
+            \expandafter\@firstofone
61 229
           \else
62
-            \expandafter\ifx\next*%
63
-              \expandafter\expandafter\expandafter\@secondofthree
64
-            \else
65
-              \expandafter\expandafter\expandafter\@thirdofthree
66
-            \fi
230
+            \@xp\nonmatherr@\csname ##1\endcsname
231
+            \expandafter\@gobble
67 232
           \fi
68
-          {\expandafter\mathaccentV@orig\mathaccentV@args}
69
-          {\expandafter\mathaccentV@shifted\mathaccentV@args}
70
-          {\expandafter\mathaccentV@b\mathaccentV@args{##1}}%
233
+          {%
234
+            \@ifnextchar[%]
235
+              {\mathaccentV@b{##1}{##2}{##3}{##4}}
236
+              {\mathaccentV@a{##1}{##2}{##3}{##4}}%
237
+          }%
71 238
         }% <<<
72
-      \newcommand*\mathaccentV@b[5]% >>>
239
+    }% <<<
240
+  \newcommand*\MRTsfacc@ifknown[1]% >>>
241
+    {%
242
+      \ifcsname\MRTsfacc@shift{#1}\endcsname
243
+        \expandafter\@firstoftwo
244
+      \else
245
+        \expandafter\@secondoftwo
246
+      \fi
247
+    }% <<<
248
+  \newcommand*\MRTsfacc@mathaccentV@shifted@expandhelper[6]% >>>
249
+    {%
250
+      \mathaccentV@shifted{#2}{#3}{#4}{#5}
251
+        {\csname\MRTsfacc@shift{#1}\endcsname}{#6}%
252
+    }% <<<
253
+  \newcommand\mathaccentV@a[5]% >>>
254
+    {%
255
+      \MRTsfacc@ifknown{#5}
73 256
         {%
74
-          \MRTifLetterGTF{##5}
75
-            {\mathaccentV@shifted{##1}{##2}{##3}{##4}{##5}}
76
-            {\mathaccentV@orig{##1}{##2}{##3}{##4}{##5}}%
77
-        }% <<<
78
-      \newcommand*\mathaccentV@shifted[5]% >>>
257
+          \mathaccentV@shifted{#1}{#2}{#3}{#4}
258
+            {\csname\MRTsfacc@shift{#5}\endcsname}{#5}%
259
+        }%
79 260
         {%
80
-          \mathchoice%
81
-            {\mathaccentV@shifted@a{display}{##1}{##2}{##3}{##4}{##5}}
82
-            {\mathaccentV@shifted@a{text}{##1}{##2}{##3}{##4}{##5}}
83
-            {\mathaccentV@shifted@a{script}{##1}{##2}{##3}{##4}{##5}}
84
-            {\mathaccentV@shifted@a{scriptscript}{##1}{##2}{##3}{##4}{##5}}%
85
-        }% <<<
86
-      \newcommand*\mathaccentV@shifted@a[6]% >>>
261
+          \MRTsfacc@testnest\MRTsfacc@ifknown{#5}
262
+            {%
263
+              \expandafter\MRTsfacc@mathaccentV@shifted@expandhelper\expandafter
264
+                {\MRTsfacc@known}{#1}{#2}{#3}{#4}{#5}%
265
+            }
266
+            {\MRTsfacc@mathaccentV{#1}{#2}{#3}{#4}{#5}}%
267
+        }%
268
+    }% <<<
269
+  \long\def\mathaccentV@b#1#2#3#4[#5]#6% >>>
270
+    {%
271
+      \MRTsfacc@ifknown{#5}
87 272
         {%
88
-          \setbox\MRTsfacc@box\hbox{$\csname ##1style\endcsname##6$}%
89
-          \kern\MRTsfacc@kern
90
-          \mathaccentV@orig{##2}{##3}{##4}{##5}%
273
+          \mathaccentV@shifted{#1}{#2}{#3}{#4}
274
+            {\csname\MRTsfacc@shift{#5}\endcsname}{#6}%
275
+        }
276
+        {\mathaccentV@shifted{#1}{#2}{#3}{#4}{#5}{#6}}%
277
+    }% <<<
278
+  \newcommand\mathaccentV@shifted[6]% >>>
279
+    {%
280
+      \MRTsfacc@mathaccentV{#1}{#2}{#3}{#4}
281
+        {%
282
+          #6%
283
+          \mkern#5\relax
284
+        }
285
+      \mkern-#5\relax
286
+    }% <<<
287
+  \renewcommand*\MRTsfacc@shift[1]% >>>
288
+    {%
289
+      MRTsfacc@shift@\detokenize{#1}%
290
+    }% <<<
291
+  \newcommand*\MRTsfaccShift[2]% >>>
292
+    {%
293
+      \expandafter\def\csname MRTsfacc@shift@\detokenize{#1}\endcsname{#2}%
294
+    }% <<<
295
+  \newcommand*\MRTsfaccShiftLet[2]% >>>
296
+    {%
297
+      \MRTsfacc@ifknown{#2}
298
+        {%
299
+          \expandafter\MRTsfaccShiftLet@a\csname\MRTsfacc@shift{#2}\endcsname
300
+            {#1}%
301
+        }
302
+        {%
303
+          \PackageError{MRTsfacc}{No shift defined for `\detokenize{#2}`.}
91 304
             {%
92
-              \kern-\MRTsfacc@kern
93
-              %\copy\MRTsfacc@box % or ##6 both have drawbacks
94
-              ##6%
305
+              You have to use an already defined shift as second argument for
306
+              \string\MRTsfaccShiftLet.
95 307
             }%
96
-        }% <<<
97
-    }%<<<
98
-  \AtBeginDocument{\MRTsfacc@patch@mathaccentV}
99
-\else% <<<
100
-% false >>>
101
-  \RequirePackage[italic,defaultmathsizes]{mathastext}
102
-  \RequirePackage{xparse}
103
-  \newlength\MRTsfacc@mu
104
-  \newcommand*\MRTsfacc@getmu%>>>
308
+        }%
309
+    }% <<<
310
+  \newcommand*\MRTsfaccShiftLet@a[2]% >>>
105 311
     {%
106
-      \begingroup
107
-        \setbox0\hbox{$\mkern1mu$}%
108
-        \expandafter
109
-      \endgroup
110
-      \expandafter\MRTsfacc@mu\the\wd0
111
-    }%<<<
112
-  \ExplSyntaxOn
113
-  \NewDocumentCommand \MRTsfaccAll {}
114
-    {
115
-      \clist_set_eq:NN \l_MRTsfacc_chars_clist \c_MRTsfacc_chars_clist
116
-    }
117
-  \NewDocumentCommand \MRTsfaccSingle { m m }
118
-    {
119
-      \clist_remove_all:Nn \l_MRTsfacc_chars_clist { #1 }
120
-      \AtBeginDocument { \MRTsfacc@apply@single [ #2 ] { #1 } }
121
-    }
122
-  \NewDocumentCommand \MRTsfaccHelvet {}
123
-    {
124
-      %\MRTsfaccSet{.2}
125
-      %\MRTsfaccAll
126
-      %\MRTsfaccSingle
127
-    }
128
-  \clist_const:Nn \c_MRTsfacc_chars_clist%>>>
129
-    {
130
-      A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,
131
-      a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
132
-    }%<<<
133
-  \clist_new:N \l_MRTsfacc_chars_clist
134
-  \MRTsfaccAll
135
-  \newcommand*\MRTsfacc@pttomu[1]%>>>
136
-    {
137
-      \fp_eval:n { #1 / \MRTsfacc@mu } mu
138
-    }%<<<
139
-  \newcommand*\MRTsfacc@apply%>>>
140
-    {
141
-      \clist_map_function:NN \c_MRTsfacc_chars_clist \MRTsfacc@apply@single
142
-    }%<<<
143
-  \ExplSyntaxOff
144
-  \newcommand*\MRTsfacc@apply@single@a[2]%>>>
145
-    {%
146
-      \typeout{Moving accents for #2 with #1}
147
-      \MTsetmathskips{#2}{-#1}{#1}%
148
-    }%<<<
149
-  \newcommand*\MRTsfacc@apply@single[2][\MRTsfacc@shift]%>>>
150
-    {%
151
-      \begingroup
152
-        \setbox0\hbox{$#2$}%
153
-        \ht0=#1\ht0
154
-        \edef\MRTsfacc@tmp{\MRTsfacc@pttomu{\ht0}}%
155
-        \expandafter
156
-      \endgroup
157
-      \expandafter\MRTsfacc@apply@single@a\expandafter{\MRTsfacc@tmp}{#2}%
158
-    }%<<<
159
-  \AtBeginDocument%>>>
312
+      \expandafter\let\csname\MRTsfacc@shift{#2}\endcsname#1%
313
+    }% <<<
314
+  \newcommand*\MRTsfaccLoadShiftList[1]% >>>
160 315
     {%
161
-      \MRTsfacc@getmu
162
-      \MRTsfacc@apply
163
-    }%<<<
316
+      \input{MRTsfacc.list.#1.tex}%
317
+    }% <<<
164 318
 % <<<
165 319
 \fi
166 320
 % <<<
321
+\AtBeginDocument{\MRTsfacc@patch@mathaccentV}
167 322
 
168 323
 
169 324
 \endinput

Loading…
Cancel
Save