From b029b3d5d1cba38f18a9e2bb6a0104edb1e70d08 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 9 Apr 2013 16:55:38 +0000 Subject: snotez (8apr13) git-svn-id: svn://tug.org/texlive/trunk@29798 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/snotez/snotez.sty | 188 ++++++++++++++++++++++++++ 1 file changed, 188 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/snotez/snotez.sty (limited to 'Master/texmf-dist/tex/latex/snotez') diff --git a/Master/texmf-dist/tex/latex/snotez/snotez.sty b/Master/texmf-dist/tex/latex/snotez/snotez.sty new file mode 100644 index 00000000000..9104f4c06f1 --- /dev/null +++ b/Master/texmf-dist/tex/latex/snotez/snotez.sty @@ -0,0 +1,188 @@ +% -------------------------------------------------------------------------- +% the SNOTEZ package +% +% Sidenotes for LaTeX2e +% +% -------------------------------------------------------------------------- +% Clemens Niederberger +% Web: https://bitbucket.org/cgnieder/enotez/ +% E-Mail: contact@mychemistry.eu +% -------------------------------------------------------------------------- +% Copyright 2012--2013 Clemens Niederberger +% +% This work 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 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Clemens Niederberger. +% -------------------------------------------------------------------------- +% The snotez package consists of the files +% - snotez.sty, snotez_en.tex, snotez_en.pdf, README +% -------------------------------------------------------------------------- +% If you have any ideas, questions, suggestions or bugs to report, please +% feel free to contact me. +% -------------------------------------------------------------------------- +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{snotez}[2013/04/03 v0.2 sidenote support for LaTeX 2e (CN)] + +\RequirePackage{etoolbox,pgfopts,marginnote,perpage} + +% -------------------------------------------------------------------------- +% package options: +\newbool{snotez@marginnote} +\newbool{snotez@perpage} +\newbool{snotez@footnote} + +\def\snotez@note@mark@sep{\space} +\def\snotez@note@mark@format#1{\@textsuperscript{\normalfont#1}} +\def\snotez@format{\footnotesize} +\def\snotez@text@mark@format#1{\@textsuperscript{\normalfont#1}} + +\pgfkeys{ + snotez/.cd, + % all sidenotes use \marginnote: + marginnote/.is if = snotez@marginnote , + text-format/.code = \def\snotez@format{#1} , + text-format+/.code = + \expandafter\def\expandafter\snotez@format\expandafter{\snotez@format#1} , + % make sidenotes counted per page: + perpage/.is if = snotez@perpage , + note-mark-sep/.code = \def\snotez@note@mark@sep{#1} , + 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 +} + +\ProcessPgfOptions* + +\newrobustcmd\setsidenotes[1]{\pgfqkeys{/snotez}{#1}} + +% -------------------------------------------------------------------------- +% 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 + +% #1: offset +% #2: mark +% #3: text +\long\def\snotez@sidenote@aux@ii#1[#2]#3{% + \snotez@mark{#2}% + \snotez@text{#1}{#3}} + +% this one is very much \@footnotemark from latex.ltx: +\def\snotez@write@mark#1{% + \leavevmode + \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi + #1% + \ifhmode\spacefactor\@x@sf\fi + \relax} + +\def\snotez@mark#1{% + \ifblank{#1}% or \ifstrempty? + {\refstepcounter{sidenote}\protected@xdef\@the@snotez@mark{\thesidenote}} + {\protected@edef\@currentlabel{#1}\protected@xdef\@the@snotez@mark{#1}}% + \snotez@write@mark{\hbox{\snotez@text@mark@format{\@the@snotez@mark}}}% +} + +\ifcsdef{c@chapter} + {\newcounter{sidenote}[chapter]} + {\newcounter{sidenote}} + +% -------------------------------------------------------------------------- +% the \sidenotemark command +\newrobustcmd*\sidenotemark[1][]{\snotez@mark{#1}} + +% -------------------------------------------------------------------------- +% 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 + +% #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}} + +% #1: offset +% #2: text +\def\snotez@text#1#2{% + \ifblank{#1} + {% + \snotez@marginpar{% + \snotez@format + \snotez@write@mark{\snotez@note@mark@format{\@the@snotez@mark}}% + \snotez@note@mark@sep#2}% + } + {% + \snotez@marginnote{% + \snotez@format + \snotez@write@mark{\snotez@note@mark@format{\@the@snotez@mark}}% + \snotez@note@mark@sep#2}[#1]% + }} + +\let\snotez@marginpar\marginpar +\let\snotez@marginnote\marginnote + +% -------------------------------------------------------------------------- +% process preamble options: +\AtBeginDocument{ + % if option `footnote=true' let \footnote to \sidenote: + \ifbool{snotez@footnote} + { + \let\footnote\sidenote + \let\footnotemark\sidenotemark + \let\footnotetext\sidenotetext + }{} + % if option `marginnote=true' use \marginnote for all notes: + \ifbool{snotez@marginnote} + {\let\snotez@marginpar\marginnote} + {} +} +\AtEndPreamble{ + % if option `perpage=true' count notes per page: + \ifbool{snotez@perpage} + {\MakeSortedPerPage{sidenote}} + {\MakeSorted{sidenote}} +} + +\endinput + +% -------------------------------------------------------------------------- +% HISTORY: +2012/11/15 v0.1 - first version +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 -- cgit v1.2.3