summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/sidenotes/sidenotes.sty
blob: 47596038a856ab67911072f098778ce071d3e2a5 (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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
%%
%% This is file `sidenotes.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% sidenotes.dtx  (with options: `package')
%% 
%% IMPORTANT NOTE:
%% 
%% This is a generated file and you are not allowed to distribute it
%% without the source of the work.  See below about more informations
%% about the files the work consists of.
%% 
\ProvidesPackage{sidenotes}[%
  2014/02/14 v0.96a rich text in the margin for LaTeX]
\RequirePackage{marginnote} % provides an offset option for the marginals instead of a float
\RequirePackage{caption} % handles the captions (in the margin)
\RequirePackage{xparse} % new LaTeX3 syntax to define macros and environments
\RequirePackage[strict]{changepage} % Changepage package for symmetric twoside handling
\newcounter{sidenote} % make a counter
\setcounter{sidenote}{1} % init the counter
\ExplSyntaxOn
\DeclareExpandableDocumentCommand{\IfNoValueOrEmptyTF}{mmm}
{
 \IfNoValueTF{#1}
  {#2} % true
  {\tl_if_empty:nTF {#1} {#2} {#3}} % false
}
\ExplSyntaxOff
\def\@sidenotes@ifnextchar#1#2#3{%
\let\@sidenotes@buffere #1\def\@sidenotes@buffera{#2}%
\def\@sidenotes@bufferb{#3}\futurelet\@sidenotes@bufferc\@sidenotes@ifnextchar@real}%
\def\@sidenotes@ifnextchar@real{%
\ifx\@sidenotes@bufferc \@sidenotes@buffere \let\@sidenotes@bufferd\@sidenotes@buffera%
\else\let\@sidenotes@bufferd\@sidenotes@bufferb\fi\@sidenotes@bufferd}%
\NewDocumentCommand \sidenote { o o +m } {%
\sidenotemark[#1]%
\sidenotetext[#1][#2]{#3}%
\@sidenotes@ifnextchar\sidenote{\kern-0.07em\textsuperscript{,}}%
{\@sidenotes@ifnextchar\sidecite{\kern-0.07em\textsuperscript{,}}{}}%
}
\NewDocumentCommand \sidenotemark { o } {%
\nobreak\hspace{0.1pt}\nobreak%
\IfNoValueOrEmptyTF{#1}%
{%
\textsuperscript{\thesidenote}%
}% if no argument is given use sidenote counter%
{\textsuperscript{#1}}% print out the argument otherwise
\@sidenotes@ifnextchar\sidenote{\textsuperscript{,}}{}%
\ignorespaces%
}%
\NewDocumentCommand \sidenotetext { o o +m } {%
\IfNoValueOrEmptyTF{#1}{% sitenotemark given?
\IfNoValueOrEmptyTF{#2}% offset given?
{\marginpar{\textsuperscript{\thesidenote}{} #3}}%
{\marginnote{\textsuperscript{\thesidenote}{} #3}[#2]}%
\refstepcounter{sidenote}}%
{\IfNoValueOrEmptyTF{#2}% offset given?
{\marginpar{\textsuperscript{#1} #3}}%
{\marginnote{\textsuperscript{#1} #3}[#2]}}%
}%
\DeclareCaptionStyle{sidecaption}{font=footnotesize}
\NewDocumentCommand \sidecaption {s o o m} {%
\captionsetup{style=sidecaption}%
\IfBooleanTF{#1}%is the macro starred
{\IfNoValueOrEmptyTF{#2}%
{\marginnote{\caption*{#4}}}%
{\marginnote{\caption*{#4}}[#2]}%
}% yes, starred macro
{%
\IfNoValueOrEmptyTF{#2}%
{\def\@sidenotes@sidecaption@tof{#4}}%
{\def\@sidenotes@sidecaption@tof{#2}}%
\IfNoValueOrEmptyTF{#3}%
{\marginnote{\caption[\@sidenotes@sidecaption@tof]{#4}}}%
{\marginnote{\caption[\@sidenotes@sidecaption@tof]{#4}}[#3]}%
}% no, unstarred macro
}
\newsavebox{\@sidenotes@sidefigurebox}
\DeclareCaptionStyle{marginfigure}{font=footnotesize}
\NewDocumentEnvironment{marginfigure}{o}
{\begin{lrbox}{\@sidenotes@sidefigurebox}%
\begin{minipage}{\marginparwidth}%
\captionsetup{type=figure,style=marginfigure}}%
{\end{minipage}%
\end{lrbox}%
\IfNoValueOrEmptyTF{#1}% offset?
{\marginpar{\usebox{\@sidenotes@sidefigurebox}}}% no offset
{\marginnote{\usebox{\@sidenotes@sidefigurebox}}[#1]}% offset
}
\newsavebox{\@sidenotes@margintablebox}
\DeclareCaptionStyle{margintable}{font=footnotesize}
\NewDocumentEnvironment{margintable}{o}
{\begin{lrbox}{\@sidenotes@margintablebox}%
\begin{minipage}{\marginparwidth}%
\captionsetup{type=table,style=margintable}}%
{\end{minipage}%
\end{lrbox}%
\IfNoValueOrEmptyTF{#1}% offset?
{\marginpar{\usebox{\@sidenotes@margintablebox}}} %
{\marginnote{\usebox{\@sidenotes@margintablebox}}[#1]}%
}%
\AtBeginDocument{%
\newlength{\@sidenotes@extrawidth}
\setlength{\@sidenotes@extrawidth}{\marginparwidth}
\addtolength{\@sidenotes@extrawidth}{\marginparsep}
}
\DeclareCaptionStyle{widefigure}{margin={0pt,-\@sidenotes@extrawidth},font=footnotesize}
\newcommand{\@sidenotes@adjust}{%
    \checkoddpage%
     \ifoddpage%
     \else%
\hspace{-\@sidenotes@extrawidth}%
     \fi}
\renewenvironment{figure*}[1][htbp]{\begin{figure}[#1]%
    \@sidenotes@adjust%
    \captionsetup{style=widefigure}%
}{\end{figure}}%

\DeclareCaptionStyle{widetable}{margin={0pt,-\@sidenotes@extrawidth},font=footnotesize}
\renewenvironment{table*}[1][htbp]{\begin{table}[#1]%
    \@sidenotes@adjust%
    \captionsetup{style=widetable}%
}{\end{table}}%
\endinput
%%
%% End of file `sidenotes.sty'.