summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/snotez
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-05-09 22:53:52 +0000
committerKarl Berry <karl@freefriends.org>2013-05-09 22:53:52 +0000
commita65da9cf1cdce267bc729f75cb898f18116eb379 (patch)
tree74899db60ca232960ce38411cb1b24ec84dd0506 /Master/texmf-dist/tex/latex/snotez
parente69edbdb159b6a2ee337a75885583fdb805efb8c (diff)
snotez (9may13)
git-svn-id: svn://tug.org/texlive/trunk@30355 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/snotez')
-rw-r--r--Master/texmf-dist/tex/latex/snotez/snotez.sty193
1 files changed, 152 insertions, 41 deletions
diff --git a/Master/texmf-dist/tex/latex/snotez/snotez.sty b/Master/texmf-dist/tex/latex/snotez/snotez.sty
index 9104f4c06f1..62c0c2d53a6 100644
--- a/Master/texmf-dist/tex/latex/snotez/snotez.sty
+++ b/Master/texmf-dist/tex/latex/snotez/snotez.sty
@@ -28,16 +28,41 @@
% If you have any ideas, questions, suggestions or bugs to report, please
% feel free to contact me.
% --------------------------------------------------------------------------
+\def\snotez@date{2013/04/21}
+\def\snotez@version{v0.3}
+\def\snotez@description{sidenote support for LaTeX 2e (CN)}
+
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{snotez}[2013/04/03 v0.2 sidenote support for LaTeX 2e (CN)]
+\ProvidesPackage{snotez}[\snotez@date\space \snotez@version\space \snotez@description]
-\RequirePackage{etoolbox,pgfopts,marginnote,perpage}
+\RequirePackage{etoolbox,pgfopts,marginnote}
+\@ifpackageloaded{zref-abspage}
+ {\RequirePackage{perpage}}
+ {\AtEndPreamble{\RequirePackage{perpage}}}
+
+% --------------------------------------------------------------------------
+% message handling
+\def\snotez@create@message#1{%
+ \ifstrequal{#1}{Error}
+ {%
+ \lowercase{\csdef{snotez@#1}}##1##2{%
+ \csuse{Package#1}{snotez}{##1}{##2}}%
+ }{%
+ \lowercase{\csdef{snotez@#1}}##1{%
+ \csuse{Package#1}{snotez}{##1}}%
+ }}
+\snotez@create@message{Error}
+\snotez@create@message{Warning}
+\snotez@create@message{WarningNoLine}
+\snotez@create@message{Info}
% --------------------------------------------------------------------------
% package options:
\newbool{snotez@marginnote}
\newbool{snotez@perpage}
\newbool{snotez@footnote}
+\newbool{snotez@dblarg}
+\booltrue{snotez@dblarg}
\def\snotez@note@mark@sep{\space}
\def\snotez@note@mark@format#1{\@textsuperscript{\normalfont#1}}
@@ -57,7 +82,8 @@
note-mark-format/.code = \def\snotez@note@mark@format##1{#1} ,
text-mark-format/.code = \def\snotez@text@mark@format##1{#1} ,
% make all footnotes sidenotes:
- footnote/.is if = snotez@footnote
+ footnote/.is if = snotez@footnote ,
+ dblarg/.is if = snotez@dblarg
}
\ProcessPgfOptions*
@@ -66,26 +92,52 @@
% --------------------------------------------------------------------------
% the \sidenote command
-% syntax:
-% - \sidenote{text}
-% - \sidenote[mark]{text}
-% - \sidenote[offset][mark]{text}
-\newrobustcmd*\sidenote{%
- \@ifnextchar[%
- {\snotez@sidenote@aux@i}
- {\snotez@sidenote@aux@ii{}[]}}% no option
-
-\def\snotez@sidenote@aux@i[#1]{%
- \@ifnextchar[%
- {\snotez@sidenote@aux@ii{#1}}% two options
- {\snotez@sidenote@aux@ii{}[#1]}}% one option
+\ifbool{snotez@dblarg}{
+ % syntax:
+ % - \sidenote{text}
+ % - \sidenote[mark]{text}
+ % - \sidenote[offset][mark]{text}
+ \newrobustcmd*\sidenote{%
+ \@ifnextchar[%
+ {\snotez@sidenote@aux@i}
+ {\snotez@sidenote@aux@ii{}[]}% no option
+ }
+
+ \def\snotez@sidenote@aux@i[#1]{%
+ \@ifnextchar[%
+ {\snotez@sidenote@aux@ii{#1}}% two options
+ {\snotez@sidenote@aux@ii{}[{#1}]}% one option
+ }
+}{
+ % syntax:
+ % - \sidenote{text}
+ % - \sidenote[mark]{text}
+ % - \sidenote(offset){text}
+ % - \sidenote(offset)[mark]{text}
+ \newrobustcmd*\sidenote{%
+ \@ifnextchar(%
+ {\snotez@sidenote@aux@i}% offset
+ {%
+ \@ifnextchar[
+ {\snotez@sidenote@aux@ii{}}% no offset nut mark
+ {\snotez@sidenote@aux@ii{}[]}% no offset and no mark
+ }%
+ }
+
+ \def\snotez@sidenote@aux@i(#1){%
+ \@ifnextchar[%
+ {\snotez@sidenote@aux@ii{#1}}% mark
+ {\snotez@sidenote@aux@ii{#1}[]}% no mark
+ }
+}
% #1: offset
% #2: mark
% #3: text
\long\def\snotez@sidenote@aux@ii#1[#2]#3{%
\snotez@mark{#2}%
- \snotez@text{#1}{#3}}
+ \snotez@text{#1}{#3}%
+}
% this one is very much \@footnotemark from latex.ltx:
\def\snotez@write@mark#1{%
@@ -93,7 +145,8 @@
\ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi
#1%
\ifhmode\spacefactor\@x@sf\fi
- \relax}
+ \relax
+}
\def\snotez@mark#1{%
\ifblank{#1}% or \ifstrempty?
@@ -104,7 +157,8 @@
\ifcsdef{c@chapter}
{\newcounter{sidenote}[chapter]}
- {\newcounter{sidenote}}
+ {\newcounter{sidenote}%
+}
% --------------------------------------------------------------------------
% the \sidenotemark command
@@ -112,26 +166,52 @@
% --------------------------------------------------------------------------
% the \sidenotetext command
-% syntax:
-% - \sidenotetext{text}
-% - \sidenotetext[mark]{text}
-% - \sidenotetext[offset][mark]{text}
-\newrobustcmd*\sidenotetext{%
- \@ifnextchar[%
- {\snotez@sidenotetext@aux@i}
- {\snotez@sidenotetext@aux@ii{}[]}}% no option
-
-\def\snotez@sidenotetext@aux@i[#1]{%
- \@ifnextchar[%
- {\snotez@sidenotetext@aux@ii{#1}}% two options
- {\snotez@sidenotetext@aux@ii{}[#1]}}% one option
+\ifbool{snotez@dblarg}{
+ % syntax:
+ % - \sidenotetext{text}
+ % - \sidenotetext[mark]{text}
+ % - \sidenotetext[offset][mark]{text}
+ \newrobustcmd*\sidenotetext{%
+ \@ifnextchar[%
+ {\snotez@sidenotetext@aux@i}
+ {\snotez@sidenotetext@aux@ii{}[]}% no option
+ }
+
+ \def\snotez@sidenotetext@aux@i[#1]{%
+ \@ifnextchar[%
+ {\snotez@sidenotetext@aux@ii{#1}}% two options
+ {\snotez@sidenotetext@aux@ii{}[{#1}]}% one option
+ }
+}{
+ % syntax:
+ % - \sidenotetext{text}
+ % - \sidenotetext[mark]{text}
+ % - \sidenotetext(offset){text}
+ % - \sidenotetext(offset)[mark]{text}
+ \newrobustcmd*\sidenotetext{%
+ \@ifnextchar(%
+ {\snotez@sidenotetext@aux@i}% offset
+ {%
+ \@ifnextchar[
+ {\snotez@sidenotetext@aux@ii{}}% no offset nut mark
+ {\snotez@sidenotetext@aux@ii{}[]}% no offset and no mark
+ }%
+ }
+
+ \def\snotez@sidenotetext@aux@i(#1){%
+ \@ifnextchar[%
+ {\snotez@sidenotetext@aux@ii{#1}}% mark
+ {\snotez@sidenotetext@aux@ii{#1}[]}% no mark
+ }
+}
% #1: offset
% #2: mark
% #3: text
\long\def\snotez@sidenotetext@aux@ii#1[#2]#3{%
\ifblank{#2}{}{\protected@xdef\@the@snotez@mark{#2}}%
- \snotez@text{#1}{#3}}
+ \snotez@text{#1}{#3}%
+}
% #1: offset
% #2: text
@@ -147,8 +227,18 @@
\snotez@marginnote{%
\snotez@format
\snotez@write@mark{\snotez@note@mark@format{\@the@snotez@mark}}%
- \snotez@note@mark@sep#2}[#1]%
- }}
+ \snotez@note@mark@sep#2%
+ }[\snotez@if@nblskip{#1}{\@cdr#1\@nil\baselineskip}{#1}]%
+ }%
+}
+
+\def\snotez@if@nblskip#1{%
+ \expandafter\ifx\@car#1\@nil*%
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+}
\let\snotez@marginpar\marginpar
\let\snotez@marginnote\marginnote
@@ -165,14 +255,32 @@
}{}
% if option `marginnote=true' use \marginnote for all notes:
\ifbool{snotez@marginnote}
- {\let\snotez@marginpar\marginnote}
+ {%
+ \let\snotez@marginpar\marginnote
+ \snotez@info{All sidenotes are now using \string\marginnote^^J
+ instead of \string\marginpar}%
+ }%
{}
}
-\AtEndPreamble{
+
+\AtEndPreamble{%
% if option `perpage=true' count notes per page:
\ifbool{snotez@perpage}
{\MakeSortedPerPage{sidenote}}
- {\MakeSorted{sidenote}}
+ {\MakeSorted{sidenote}}%
+ \@ifpackageloaded{fnpct}
+ {%
+ \ifbool{snotez@dblarg}
+ {}
+ {%
+ \snotez@error
+ {When you're using the `fnpct' package together with^^J
+ `snotez' you need to enable the `dblarg' option!}
+ {When you're using the `fnpct' package together with^^J
+ `snotez' you need to enable the `dblarg' option!}%
+ }%
+ }
+ {}%
}
\endinput
@@ -183,6 +291,9 @@
2013/04/03 v0.2 - documentation, removed erroneous `fnpct' adaption, other
minor changes
- added update of \@currentlabel when a custom mark is used
-
-% --------------------------------------------------------------------------
-% TODO \ No newline at end of file
+2013/04/21 v0.3 - try to avoid conflict with package loading order of
+ `perpage' and `zref-abspage'
+ - allow `*' syntax for offsets that are multiples of
+ \baselineskip
+ - syntax change in optional arguments; option `dblarg'
+ provides previous syntax