summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/syntrace/syntrace.sty
blob: c8cb0946c3468c6070de12e000f2ae0531baea00 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
%%
%% This is file `syntrace.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% syntrace.dtx  (with options: `package')
%% This is a generated file.
%% 
%% Copyright (C) 2006 by Mathieu Boretti
%% 
%% This file 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 2003/12/01 or later.
%% 
%% The current Maintainer of this work is Mathieu Boretti
%% 
%% This work consists of the file syntrace.ins and
%% syntrace.dtx and the derived file syntrace.sty
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{syntrace}[2006/08/17 v1.1 Package for dealing with trace in syntaxic tree]
\RequirePackage{ifthen}
\DeclareOption{synttree}{
\AtEndOfPackage{%
\IfFileExists{synttree.sty}{%
\RequirePackage{synttree}\syntraceaddresetmacro{synttree}%
}{%
\PackageWarning{syntrace}{Unable to locate synttree package}
}
}
}
\DeclareOption{qtree}{
\AtEndOfPackage{%
\IfFileExists{qtree.sty}{%
\RequirePackage{qtree}\syntraceaddresetmacro{Tree}%
}{%
\PackageWarning{syntrace}{Unable to locate qtree package}
}
}
}
\DeclareOption{i-start}{
\AtEndOfPackage{%
\setcounter{syntrace@startvalue}{8}
}
}
\ExecuteOptions{synttree}
\ProcessOptions
\newcounter{syntrace@startvalue}
\setcounter{syntrace@startvalue}{0}
\newcounter{syntrace@labelcounter}
\setcounter{syntrace@labelcounter}{\arabic{syntrace@startvalue}}
\renewcommand*{\thesyntrace@labelcounter}{%
    \alph{syntrace@labelcounter}%
}
\newcommand*{\syntrace@labelletter}{%
    \ensuremath{t}%
}
\newcommand*{\syntrace@displaytrace}[1]{%
    \raisebox{-.5\height}{\scriptsize\mbox{#1}}%
}
\newcommand*{\traceLabel}[1]{%
    \refstepcounter{syntrace@labelcounter}%
    \syntrace@displaytrace{\thesyntrace@labelcounter}%
    \label{syntrace-#1}%
}
\newcommand*{\traceReference}[1]{%
    \syntrace@labelletter\syntrace@displaytrace{\ref{syntrace-#1}}%
}
\newcommand*{\syntrace@reset}{%
    \setcounter{syntrace@labelcounter}{\arabic{syntrace@startvalue}}%
}
\newcommand*{\syntraceaddresetmacro}[1]{%
    \expandafter\ifx%
        \csname syntrace@old@#1\endcsname
        \relax%
        \PackageInfo{syntrace}{Adding auto-reset to #1}%
        \expandafter\let\csname syntrace@old@#1\expandafter\endcsname%
        \csname #1\endcsname%
        \expandafter\def\csname#1\endcsname{\@ifstar{%
                \csname syntrace@old@#1\endcsname%
            }{%
                \syntrace@reset%
                \csname syntrace@old@#1\endcsname%
            }%
        }%
    \else
        \PackageWarning{syntrace}{#1 allready set as auto-reset}%
    \fi
}
\newcommand*{\syntraceremoveresetmacro}[1]{%
    \expandafter\ifx%
        \csname syntrace@old@#1\endcsname
        \relax%
        \PackageWarning{syntrace}{#1 is not set as auto-reset}%
    \else
        \PackageInfo{syntrace}{Removing auto-reset from #1}%
        \expandafter\let\csname #1\expandafter\endcsname%
        \csname syntrace@old@#1\endcsname%
        \expandafter\let\csname syntrace@old@#1\expandafter\endcsname\relax%
    \fi
}
\endinput
%%
%% End of file `syntrace.sty'.