summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/sidenotes/sidenotes.dtx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2011-12-03 16:40:19 +0000
committerKarl Berry <karl@freefriends.org>2011-12-03 16:40:19 +0000
commit0a958302e42be9e7a4c0521ac5d6f93b003bd602 (patch)
treece8832afced2628859732df7466adfbaef43c9e0 /Master/texmf-dist/source/latex/sidenotes/sidenotes.dtx
parent910d7ec0ecd78259b59aa682474418b57b4954bb (diff)
sidenotes (16nov11)
git-svn-id: svn://tug.org/texlive/trunk@24736 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/sidenotes/sidenotes.dtx')
-rw-r--r--Master/texmf-dist/source/latex/sidenotes/sidenotes.dtx238
1 files changed, 89 insertions, 149 deletions
diff --git a/Master/texmf-dist/source/latex/sidenotes/sidenotes.dtx b/Master/texmf-dist/source/latex/sidenotes/sidenotes.dtx
index 68e3f6142e9..cafc5a6cbc2 100644
--- a/Master/texmf-dist/source/latex/sidenotes/sidenotes.dtx
+++ b/Master/texmf-dist/source/latex/sidenotes/sidenotes.dtx
@@ -1,4 +1,3 @@
-% \CheckSum{180}
% \iffalse meta-comment
%
% sidenotes.dtx
@@ -20,11 +19,16 @@
%</driver>
%<package>\ProvidesPackage{sidenotes}[%
%<*driver|package>
- 2011/10/06 v0.53 rich text in the margin for LaTeX]
+ 2011/11/10 v0.80 rich text in the margin for LaTeX]
%</driver|package>
%<package>\RequirePackage{marginnote} % puts the stuff in the margin and provides an offset option instead of a float
%<package>\RequirePackage{caption} % handles the figure caption (in the margin)
%<package>\RequirePackage{xifthen} % provide an if command
+%<package>\newboolean{@sidenotes@bibtex}%
+%<package>\setboolean{@sidenotes@bibtex}{false}%
+%<package>\DeclareOption{bibtex}{\setboolean{@sidenotes@bibtex}{true}}%
+%<package>\ProcessOptions
+%<package>\ifthenelse{\boolean{@sidenotes@bibtex}}{\RequirePackage{bibentry}}{}
%<*driver>
\documentclass{ltxdoc}
\CodelineIndex
@@ -67,27 +71,24 @@
% \changes{v0.51}{2011/10/05}{Extent the documentation of the macros.}
% \begin{abstract}
% This package tries to allow typesetting of rich content in the margin.
-% This includes text, but also figures, captions, tables and citations (only with biblatex).
+% This includes text, but also figures, captions, tables and citations.
% This is common in science textbooks such as Feyman's \textit{Lectures on Physics}.
% \end{abstract}
%
% \tableofcontents
%
% \changes{v0.2}{2011/08/21}{Initial version}
+% \changes{v0.7}{2011/11/09}{rewrite without optional offsets}
%
% \section{Usage}
%
% \DescribeMacro{\sidenote}
-% The macro \verb+\sidenote+ is one main feature of the package. The macro is very similar to
+% The macro is very similar to
% the footnote macro and tries to emulate its behavior. But like the name
% says, the note is put in the margin, hence the name sidenote. It has the
-% same parameters as footnote plus an additional, optional offset:
-% \verb+\sidenote[number]{text}[offset]+. If no offset is given, the sidenote moves up or down (floats)
-% to not overlap with other floats in the margin. If you use the offset
-% (e.g. \verb+\sidenote{foo}[10pt]+) the sidenote is shifted 10pt down in the margin.
-% It might overlap with other floats now. This means, omitting the offset and [0pt] do
-% not lead to the same result, but you will only notice if there are a moderate number
-% of sidenotes or other marginals. All the sidenotes are subsequently numbered. The
+% same parameters as footnote:
+% \verb+\sidenote[number]{text}+. The sidenote moves up or down (floats)
+% to not overlap with other floats in the margin. All the sidenotes are subsequently numbered. The
% first, optional parameter will manually change the numbering of the sidenote.
%
% \DescribeMacro{\sidenotemark}
@@ -98,54 +99,47 @@
% commands. \verb+\sidenotemark+ puts a mark at the current position. Then, outside of the environment
% \DescribeMacro{\sidenotetext}
% that causes the trouble, it is possible the call \verb+\sidenotetext{text}+ to actually make the sidenote.
-% Again, the
-% first, optional parameter will manually change the numbering of the sidenote, the second optional postfix
-% will adjust the position with an offset: \verb+\sidenotetext[number]{text}[offset]+
+% The
+% first, optional parameter will manually change the numbering of the sidenote.
+%
+% \changes{v0.61}{2011/10/17}{documentation of sidetext}
%
% \DescribeMacro{\sidestyle}
% You can use \verb+\renewcommand{\sidestyle}{something}+
% if you want to change the font, text size, text color or something else of the sidenotes.
-% It it initialized with \verb+\footnotesize+. It is used as a prefix of the sidenotetext.
+% It it initialized with \verb+\footnotesize+. It is used as a prefix of the sidenotetext and sidetext.
%
% \DescribeMacro{\sidecite}
-% The macro \verb+\sidecite+ puts a citation in the margin. It uses the biblatex package
-% so you have to go with biblatex instead of bibtex to use \verb+\sidecite+. Therefore, the
-% macro has the same set of parameters plus the additional offset:
-% \verb+\sidecite[prenote][postnote]{key}[offset]+.
-% The behavior is the same as in \verb+\sidenote+, no offset means auto floating. If an offset
-% value is given the position is fixed at a certain place, even if it overlaps with other text or objects.
+% The macro \verb+\sidecite+ puts a citation in the margin. It uses the biblatex package or bibtex,
+% load sidecite with the option [bibtex] for the latter.
+% The macro has the same set of parameters.
+% \verb+\sidecite[prenote][postnote]{key}+ for biblatex and \verb+\sidecite{key}+ for bibtex.
+% The behavior is the same as in \verb+\sidenote+ and auto floating.
% For post- and prenote please refer to the biblatex manual, the parameters are directly passed
% to biblatex.
%
%\DescribeMacro{\sidecaption}
% The \verb+\sidecaption+ macro can be used if the caption of a figure or table
% is supposed to be in the margin. Please note, that the formatting is done by the
-% caption package. If the object is referenced by the use of \verb+\label{somelabel}+
-% the label should go in the sidecaption macro: For example
-% \verb+\sidecaption{I am a figure\label{fig:1}}+.
+% caption package.
%
% \DescribeEnv{sidefigure}
% The sidefigure environment puts a figure and its caption in the margin. Instead of
-% \verb+\begin{figure}[htb]+ use \verb+\begin{sidefigure}[offset]+. Please note, that
+% \verb+\begin{figure}[htb]+ use \verb+\begin{sidefigure}+. Please note, that
% the use of caption before \verb+\includegraphics+ puts the caption in line with the
% top of the figure
% and the use after \verb+\includegraphics+ puts it in line with the bottom of the actual figure.
%
% \DescribeEnv{sidetable}
-% The sidetable environment works similarly, but with table environments. Use \verb+\begin{sidetable}[offset]+ instead
+% The sidetable environment works similarly, but with table environments. Use \verb+\begin{sidetable}+ instead
% of \verb+\begin{table}+.
%
% \section{Technical notes and further macros}
%
-% \DescribeMacro{\marginnote}
% \DescribeMacro{\marginpar}
% Sometimes it is useful to put text in the margin without a mark in the text. This can be achieved
-% with \verb+\marginnote{text}[offset]+ or \verb+\marginpar{text}+. This feature is not provided
-% by this package, but by the
-% marginnote package by Markus Kohm. The sidenotes package heavily uses the marginnote package.
-% Technically, every time something is evoked with an offset, \verb+\marginnote+ is called. If it is called without
-% an offset, it calls the normal \LaTeX{} macro \verb+\marginpar+. This is not true for the sidecaption, since
-% the caption has to be adjacent to the figure or table. In that case, \verb+\marginnote+ is always used.
+% with \verb+\marginpar{text}+. The \verb+\sidecaption+ macro relies on the
+% marginnote package by Markus Kohm.
%
% When writing the package, we tried to be as general as possible. Someone can e.g.\ use sidenotes mixed with
% footnotes. Also, the package tries to provide only functionality and does not know anything about formatting
@@ -158,7 +152,7 @@
% This package requires the following packages:
% \begin{description}
% \item[marginnote]
-% supports another command to create notes in the margin. The notes are no floats and can be shifted up or down.
+% supports another command to create notes in the margin. The notes are no floats and can be shifted up or down.
% \item[caption]
% is used to set figure and table captions in the margin and to allow formatting of these captions.
% \item[xifthen] is used to test for empty, optional arguments.
@@ -187,25 +181,14 @@
% \begin{macro}{\sidenote}
% Introduce the sidenote macro with an additional optional argument postfix to set the offset.
% \changes{v0.53}{2011/10/07}{bugfix, now optional number and offset possible}
+% \changes{v0.80}{2011/11/10}{unstar the newcommand.}
% \begin{macrocode}
-\newcommand*{\sidenote}[2][]{%
- \begingroup%
- \@ifnextchar [{\@sidenotes@sidenote[{#1}]{#2}}{\@sidenotes@sidenote[{#1}]{#2}[]}%
-}
-
-\newcommand{\@sidenotes@sidenote}{}
-\def\@sidenotes@sidenote[#1]#2[#3]{%
- \endgroup%
- \@sidenotes@@sidenote[{#1}]{#2}[{#3}]%
-}
-
-\newcommand{\@sidenotes@@sidenote}{}
-\def\@sidenotes@@sidenote[#1]#2[#3]{%
- \ifthenelse{\isempty{#1}}%
- {\sidenotemark%
- \sidenotetext{#2}[#3]}%
- {\sidenotemark[#1]%
- \sidenotetext[#1]{#2}[#3]}%
+\newcommand{\sidenote}[2][]{%
+\ifthenelse{\isempty{#1}}%
+{\sidenotemark%
+\sidenotetext{#2}}%
+{\sidenotemark[#1]%
+\sidenotetext[#1]{#2}}%
}
% \end{macrocode}
% \end{macro}
@@ -214,47 +197,30 @@
% Sidenotemark is supposed to work similarly to footnotemark.
% \begin{macrocode}
\newcommand{\sidenotemark}[1][]{%
- \nobreak\hspace{0.1pt}\nobreak%
- \ifthenelse{\isempty{#1}}%
- {\textsuperscript{\thesidenote}%
- \refstepcounter{sidenote}}% if no argument is given use sidenote counter%
- % else
- {\setcounter{@sidenotes@buffer}{\value{sidenote}}%
- \setcounter{sidenote}{#1}%
- \textsuperscript{\thesidenote}% print out the argument otherwise
- \setcounter{sidenote}{\value{@sidenotes@buffer}}}%
- \ignorespaces%
+\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}}}%
+\ignorespaces%
}%
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\sidenotetext}
% Sidenotetext is supposed to work similarly to footnotetext. The additional, optional argument postfix sets the offset.
+% \changes{v0.80}{2011/11/10}{unstar the newcommand.}
% \begin{macrocode}
-\newcommand*{\sidenotetext}[2][]{%
- \begingroup%
- \@ifnextchar [{\@sidenotes@sidenotetext[{#1}]{#2}}{\@sidenotes@sidenotetext[{#1}]{#2}[]}%
-}
-
-\newcommand{\@sidenotes@sidenotetext}{}
-\def\@sidenotes@sidenotetext[#1]#2[#3]{%
- \endgroup%
- \@sidenotes@@sidenotetext[{#1}]{#2}[{#3}]%
-}
-
-\newcommand{\@sidenotes@@sidenotetext}{}
-\def\@sidenotes@@sidenotetext[#1]#2[#3]{%
- \ifthenelse{\isempty{#1}}{% sitenotemark given?
- \addtocounter{sidenote}{-1}%
- \ifthenelse{\isempty{#3}}{% offset?
- \marginpar{\textsuperscript{\thesidenote}{} \sidestyle#2}}% no offset
- {\marginnote{\textsuperscript{\thesidenote}{} \sidestyle#2}[#3]} % with offest
- \addtocounter{sidenote}{1}}%
- % else
- {\ifthenelse{\isempty{#3}}% offset?
- {\marginpar{\textsuperscript{#1} \sidestyle#2}}% no offset
- {\marginnote{\textsuperscript{\thesidenote}{} \sidestyle#2}}% with offset
- }% fi
+\newcommand{\sidenotetext}[2][]{%
+\ifthenelse{\isempty{#1}}{% sitenotemark given?
+\addtocounter{sidenote}{-1}%
+\marginpar{\textsuperscript{\thesidenote}{} \sidestyle#2}%
+\addtocounter{sidenote}{1}}%
+{\marginpar{\textsuperscript{#1} \sidestyle#2}%
+}% fi
}%
% \end{macrocode}
% \end{macro}
@@ -262,97 +228,71 @@
%
% \begin{macro}{\sidecite}
% \changes{v0.5}{2011/10/05}{define the sidecite macro without the twoopt package}
+% \changes{v0.80}{2011/11/10}{allow the use of bibtex}
% Sidecite puts the citation in the margin. The additional, optional argument postfix sets the offset.
% Please note, that it only works with biblatex and uses its syntax.
% \begin{macrocode}
-\newcommand{\sidecite}[1][]{%
- \@ifnextchar[{%
- \expandafter\@sidenotes@sidecitedo\@sidenotes@getnextopt{#1}%
- }{%
- \@sidenotes@sidecitedo{#1}{}%
- }%
-}
-\newcommand{\@sidenotes@getnextopt}{}
-\long\def\@sidenotes@getnextopt#1[#2]{{#1}{#2}}
-\newcommand{\@sidenotes@sidecitedo}[3]{%
- \begingroup%
- \@ifnextchar [{\@sidenotes@sidecite[{#1}][{#2}]{#3}}{\@sidenotes@sidecite[{#1}][{#2}]{#3}[]}%
-}
-\newcommand{\@sidenotes@sidecite}{}
-\def\@sidenotes@sidecite[#1][#2]#3[#4]{%
- \endgroup%
- \@sidenotes@@sidecite[{#1}][{#2}]{#3}[{#4}]%
+\ifthenelse{\boolean{@sidenotes@bibtex}}
+{\newcommand{\sidecite}[1]{%
+\sidenote{\bibentry{#1}}%
+}}
+{\newcommand{\sidecite}[1][]{%
+ \@ifnextchar[{%
+ \expandafter\@sidenotes@sidecitedo\@sidenotes@getnextopt{#1}%
+ }{%
+ \@sidenotes@sidecitedo{#1}{}%
+ }%
}
-
-\newcommand{\@sidenotes@@sidecite}{}
-\def\@sidenotes@@sidecite[#1][#2]#3[#4]{%
- \sidenote{\fullcite[#1][#2]{#3}}[#4]%
-}%
+\newcommand{\@sidenotes@getnextopt}{}
+\long\def\@sidenotes@getnextopt#1[#2]{{#1}{#2}}
+\newcommand{\@sidenotes@sidecitedo}[3]{%
+\sidenote{\fullcite[#1][#2]{#3}}%
+}}%
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\sidecaption}
-% Sidecaption puts the caption in the margin. The additional, optional argument postfix sets the offset.
+% Sidecaption puts the caption in the margin.
% It never floats with the other text in the margin, it has to be next to the figure.
% \begin{macrocode}
\newcommand{\sidecaption}[2][]{%
- \ifthenelse{\isempty{#1}}%
- {\marginnote{\caption{#2}}}%
- % else
- {\marginnote{\caption[#1]{#2}}}%
+\ifthenelse{\isempty{#1}}%
+{\marginnote{\caption{#2}}}%
+{\marginnote{\caption[#1]{#2}}}%
}%
% \end{macrocode}
% \end{macro}
%
% \begin{environment}{sidefigure}
% \changes{v0.3}{2011/09/29}{define the sidefigure enviroment without the environ package}
-% The sidefigure is similar to the figure environment. But the figure is put in the margin and the positioning
-% is not h or b, but rather an offset, e.g.\ 10pt.\
+% The sidefigure is similar to the figure environment. But the figure is put in the margin.
% \begin{macrocode}
\newsavebox{\@sidenotes@sidefigurebox}
-\newboolean{@sidenotes@sidefigure@skip}
-\newcommand{\@sidenotes@sidefigure@skiplength}{}
-
\newenvironment{sidefigure}[1][]%
- {\ifthenelse{\isempty{#1}} % offset?
- {\setboolean{@sidenotes@sidefigure@skip}{false}} % no offset
- {\setboolean{@sidenotes@sidefigure@skip}{true}\renewcommand{\@sidenotes@sidefigure@skiplength}{#1}} % with offset
- \begin{lrbox}{\@sidenotes@sidefigurebox}%
- \begin{minipage}{\marginparwidth}%
- \captionsetup{type=figure}}%
- { \end{minipage}%
- \end{lrbox}%
- \ifthenelse{\boolean{@sidenotes@sidefigure@skip}}% offset?
- {\marginnote{\usebox{\@sidenotes@sidefigurebox}}[\@sidenotes@sidefigure@skiplength]} % with offset
- {\marginpar{\usebox{\@sidenotes@sidefigurebox}}} % no offset
- }
+{\begin{lrbox}{\@sidenotes@sidefigurebox}%
+\begin{minipage}{\marginparwidth}%
+\captionsetup{type=figure}}%
+{\end{minipage}%
+\end{lrbox}%
+\marginpar{\usebox{\@sidenotes@sidefigurebox}}
+}
% \end{macrocode}
% \end{environment}
%
% \begin{environment}{sidetable}
% \changes{v0.4}{2011/09/30}{define the sidetable enviroment without the environ package}
-% The sidetable is similar to the table environment. But the table is put in the margin and the positioning
-% is not h or b, but rather an offset, e.g.\ 10pt.\
+% The sidetable is similar to the table environment. But the table is put in the margin.
% \begin{macrocode}
\newsavebox{\@sidenotes@sidetablebox}
-\newboolean{@sidenotes@sidetable@skip}
-\newcommand{\@sidenotes@sidetable@skiplength}{}
-
\newenvironment{sidetable}[1][]%
- {\ifthenelse{\isempty{#1}} % offset?
- {\setboolean{@sidenotes@sidetable@skip}{false}} % no offset
- {\setboolean{@sidenotes@sidetable@skip}{true}\renewcommand{\@sidenotes@sidetable@skiplength}{#1}} % with offset
- \begin{lrbox}{\@sidenotes@sidetablebox}%
- \begin{minipage}{\marginparwidth}%
- \captionsetup{type=table}%
- \sidestyle}%
- { \end{minipage}%
- \end{lrbox}%
- \ifthenelse{\boolean{@sidenotes@sidetable@skip}}% offset?
- {\marginnote{\usebox{\@sidenotes@sidetablebox}}[\@sidenotes@sidetable@skiplength]} % with offset
- {\marginpar{\usebox{\@sidenotes@sidetablebox}}} % no offset
- }
-% \end{macrocode}
+{\begin{lrbox}{\@sidenotes@sidetablebox}%
+\begin{minipage}{\marginparwidth}%
+\captionsetup{type=table}%
+\sidestyle}%
+{\end{minipage}%
+\end{lrbox}%
+\marginpar{\usebox{\@sidenotes@sidetablebox}}
+}% \end{macrocode}
% \end{environment}
%
% \Finale