blob: a6598e9bb1ff0e4d516abd3b6e92fbbf25961182 (
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}[%
2012/04/07 v0.93 rich text in the margin for LaTeX]
\RequirePackage{marginnote} % puts the stuff in the margin and provides an offset option instead of a float
\RequirePackage{caption} % handles the figure caption (in the margin)
\RequirePackage{xifthen} % provide an if command
\RequirePackage{twoopt} % two optional arguments possible
\RequirePackage[strict]{changepage} % Changepage package for symmetric twoside handling
\newcounter{sidenote} % make counter
\newcounter{@sidenotes@buffer}
\setcounter{sidenote}{1} % init counter
\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}%
\newcommandtwoopt{\sidenote}[3][][]{%
\sidenotemark[#1]%
\sidenotetext[#1][#2]{#3}%
\@sidenotes@ifnextchar\sidenote{\kern-0.07em\textsuperscript{,}}%
{\@sidenotes@ifnextchar\sidecite{\kern-0.07em\textsuperscript{,}}{}}%
}
\newcommand{\sidenotemark}[1][]{%
\nobreak\hspace{0.1pt}\nobreak%
\ifthenelse{\isempty{#1}}%
{\textsuperscript{\thesidenote}%
\refstepcounter{sidenote}}% if no argument is given use sidenote counter%
{\setcounter{@sidenotes@buffer}{\value{sidenote}}%
\setcounter{sidenote}{#1}%
\textsuperscript{\thesidenote}% print out the argument otherwise
\setcounter{sidenote}{\value{@sidenotes@buffer}}}%
\@sidenotes@ifnextchar\sidenote{\textsuperscript{,}}{}%
\ignorespaces%
}%
\newcommandtwoopt{\sidenotetext}[3][][]{%
\ifthenelse{\isempty{#1}}{% sitenotemark given?
\addtocounter{sidenote}{-1}%
\ifthenelse{\isempty{#2}}% offset given?
{\marginpar{\textsuperscript{\thesidenote}{} #3}}%
{\marginnote{\textsuperscript{\thesidenote}{} #3}[#2]}%
\addtocounter{sidenote}{1}}%
{\ifthenelse{\isempty{#2}}% offset given?
{\marginpar{\textsuperscript{#1} #3}}%
{\marginnote{\textsuperscript{#1} #3}[#2]}}%
}%
\DeclareCaptionStyle{sidecaption}{font=footnotesize}
\newcommand{\sidecaption}{\@ifstar\@sidenotes@sidecaption@starred\@sidenotes@sidecaption@unstarred}
\newcommandtwoopt{\@sidenotes@sidecaption@unstarred}[3][][]{%
\captionsetup{style=sidecaption}%
\ifthenelse{\isempty{#2}}{\marginnote{\caption[#1]{#3}}}{\marginnote{\caption[#1]{#3}}[#2]}}%
\newcommand{\@sidenotes@sidecaption@starred}[2][]{%
\captionsetup{style=sidecaption}%
\ifthenelse{\isempty{#1}}{\marginnote{\caption*{#2}}}{\marginnote{\caption*{#2}}[#1]}}%
\newsavebox{\@sidenotes@sidefigurebox}
\newboolean{@sidenotes@sidefigure@skip}
\newcommand{\@sidenotes@sidefigure@skiplength}{}
\DeclareCaptionStyle{marginfigure}{font=footnotesize}
\newenvironment{marginfigure}[1][]%
{\ifthenelse{\isempty{#1}}% offset?
{\setboolean{@sidenotes@sidefigure@skip}{false}}%
{\setboolean{@sidenotes@sidefigure@skip}{true}%
\renewcommand{\@sidenotes@sidefigure@skiplength}{#1}}%
\begin{lrbox}{\@sidenotes@sidefigurebox}%
\begin{minipage}{\marginparwidth}%
\captionsetup{type=figure,style=marginfigure}}%
{\end{minipage}%
\end{lrbox}%
\ifthenelse{\boolean{@sidenotes@sidefigure@skip}}% offset?
{\marginnote{\usebox{\@sidenotes@sidefigurebox}}[\@sidenotes@sidefigure@skiplength]}% offset
{\marginpar{\usebox{\@sidenotes@sidefigurebox}}}% no offset
}
\newsavebox{\@sidenotes@margintablebox}
\newboolean{@sidenotes@margintable@skip}
\newcommand{\@sidenotes@margintable@skiplength}{}
\DeclareCaptionStyle{margintable}{font=footnotesize}
\newenvironment{margintable}[1][]%
{\ifthenelse{\isempty{#1}}%
{\setboolean{@sidenotes@margintable@skip}{false}}%
{\setboolean{@sidenotes@margintable@skip}{true}%
\renewcommand{\@sidenotes@margintable@skiplength}{#1}}%
\begin{lrbox}{\@sidenotes@margintablebox}%
\begin{minipage}{\marginparwidth}%
\captionsetup{type=table,style=margintable}}%
{\end{minipage}%
\end{lrbox}%
\ifthenelse{\boolean{@sidenotes@margintable@skip}}%
{\marginnote{\usebox{\@sidenotes@margintablebox}}[\@sidenotes@margintable@skiplength]}%
{\marginpar{\usebox{\@sidenotes@margintablebox}}} %
}%
\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'.
|