summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/seealso
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2014-04-14 22:52:27 +0000
committerKarl Berry <karl@freefriends.org>2014-04-14 22:52:27 +0000
commite65f51f91e7c01ee998b546ed4149b5937dbe8db (patch)
tree9322bdd0c4b59db4309be71ea2e3f593efa351cc /Master/texmf-dist/tex/latex/seealso
parent069bd295ea9dc6dcb5e73bf9d1171640a4acd61e (diff)
seealso (10apr14)
git-svn-id: svn://tug.org/texlive/trunk@33449 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/seealso')
-rw-r--r--Master/texmf-dist/tex/latex/seealso/seealso.sty92
1 files changed, 73 insertions, 19 deletions
diff --git a/Master/texmf-dist/tex/latex/seealso/seealso.sty b/Master/texmf-dist/tex/latex/seealso/seealso.sty
index ae67167b76f..235beb8f4a8 100644
--- a/Master/texmf-dist/tex/latex/seealso/seealso.sty
+++ b/Master/texmf-dist/tex/latex/seealso/seealso.sty
@@ -20,30 +20,35 @@
%%
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{seealso}
- [2014/04/06 v1.0 makeidx's see and seealso with page number support.]
+ [2014/04/10 v1.1 makeidx's see and seealso with page number support.]
\RequirePackage{etoolbox}
\RequirePackage{kvoptions}
\SetupKeyvalOptions{
family=seealso@opt,
- prefix=seealso@}
+ prefix=seealso@,
+ setkeys=\kvsetkeys}
\DeclareBoolOption[true]{override}
\DeclareBoolOption[true]{activecr}
\ProcessKeyvalOptions*
\def\seealso@charlet#1{%
\begingroup\lccode`\~=`#1\lowercase{\endgroup\let~}}
\let\seealso@macrolist\empty
-\def\seealso@clearlists{%
- \def\do##1{\cslet{seealso@##1@list}\empty}%
- \dolistloop\seealso@macrolist}
-\AtBeginDocument{\seealso@clearlists}
+\def\seealso@clearlist#1{%
+ \global\cslet{seealso@#1@list}\empty}
+\AtBeginDocument{\forlistloop\seealso@clearlist\seealso@macrolist}
\newcommand\SeealsoPrintList{%
\forlistloop\seealso@printlist\seealso@macrolist
- \seealso@clearlists}
+ \forlistloop\seealso@clearlist\seealso@macrolist}
+\newif\ifseealso@gobblefirstlistsep
\newif\ifseealso@firstitem
\def\seealso@printlist#1{%
\ifcsempty{seealso@#1@list}
{}
- {\csuse{seealso@#1@listsep}%
+ {\ifseealso@gobblefirstlistsep
+ \seealso@gobblefirstlistsepfalse
+ \else
+ \csuse{seealso@#1@listsep}%
+ \fi
\csuse{seealso@#1@nameformat}{\csuse{#1name}}%
\seealso@firstitemtrue
\forlistcsloop{\seealso@listitem{#1}}{seealso@#1@list}}}
@@ -66,16 +71,16 @@
\csdef{#2name}{##1}}%
\ifcsdef{#2name}
{}
- {\setkeys{seealso@#2}{name=#3}}%
+ {\kvsetkeys{seealso@#2}{name=#3}}%
\def\do##1{%
\define@key{seealso@#2}{##1}{%
\csdef{seealso@#2@##1}{####1}}%
- \setkeys{seealso@#2}{##1=\csuse{seealso@##1}}}%
+ \kvsetkeys{seealso@#2}{##1=\csuse{seealso@##1}}}%
\docsvlist{listsep,itemsep}%
\def\do##1{%
\define@key{seealso@#2}{##1}{%
\csdef{seealso@#2@##1}########1{####1}}%
- \setkeys{seealso@#2}{##1=\csuse{seealso@##1}{####1}}}%
+ \kvsetkeys{seealso@#2}{##1=\csuse{seealso@##1}{####1}}}%
\docsvlist{nameformat,itemformat,pageformat}}
\@onlypreamble{\DeclareSeealsoMacro}
\newif\ifseealso@iscractive
@@ -88,9 +93,38 @@
\fi
\fi}
\def\seealso@cr{%
- \catcode`\^^M=5
- \seealso@iscractivefalse
- \SeealsoPrintList}
+ \futurelet\next\seealso@cr@aux}
+\def\seealso@cr@aux{%
+ \seealso@testwrap
+ \ifseealso@wrap
+ \space
+ \else
+ \catcode`\^^M=5
+ \seealso@iscractivefalse
+ \SeealsoPrintList
+ \fi}
+\newif\ifseealso@wrap
+\def\seealso@testwrap{%
+ \seealso@wraptrue
+ \forlistloop\seealso@testwrap@aux\seealso@enditemlist}
+\def\seealso@testwrap@aux#1{%
+ \ifx#1\next
+ \seealso@wrapfalse
+ \expandafter\listbreak
+ \fi}
+\let\seealso@enditemlist\empty
+\def\seealso@enditemlistadd#1{%
+ \ifinlist{#1}\seealso@enditemlist
+ {}
+ {\listadd\seealso@enditemlist{#1}}}
+\define@key{seealso}{enditem}{%
+ \let\seealso@enditemlist\empty
+ \listadd\seealso@enditemlist{\seealso@cr}%
+ \forcsvlist\seealso@enditemlistadd{#1}}
+\define@key{seealso}{enditem+}{%
+ \forcsvlist\seealso@enditemlistadd{#1}}
+\kvsetkeys{seealso}{%
+ enditem={\indexspace,\item,\subitem,\subsubitem,\end}}
\def\seealso@listsep{,\space}
\def\seealso@itemsep{,\space}
\def\seealso@nameformat#1{\emph{#1}\space}
@@ -104,14 +138,34 @@
\csdef{seealso@#1}####1{##1}}}
\forcsvlist\seealso@define@key{listsep,itemsep}
\forcsvlist\seealso@define@keyarg{nameformat,itemformat,pageformat}
-\def\SeealsoGobble#1{\@ifnextchar#1{\seealso@gobbleignorespaces}{}}
-\def\seealso@gobbleignorespaces#1{\ignorespaces}
+\AtBeginDocument{%
+ \ifundef\hyperindexformat{%
+ \let\SeealsoGobble\seealso@gobble
+ }{%
+ \def\SeealsoGobble#1{\seealso@swap{\seealso@gobble{#1}}}%
+ \def\seealso@swap#1#2#3#4{#2#3#4#1}%
+ }}
+\def\seealso@gobble#1{%
+ \@ifnextchar#1%
+ {\seealso@gobbleignorespaces}
+ {\ifseealso@activecr
+ \ifx\@let@token\seealso@cr
+ \seealso@gobblefirstlistseptrue
+ \fi
+ \else
+ \ifx\@let@token\SeealsoPrintList
+ \seealso@gobblefirstlistseptrue
+ \fi
+ \fi}}
+\def\seealso@gobbleignorespaces#1{%
+ \@ifnextchar\seealso@cr{\seealso@gobbleignorespaces}{\ignorespaces}}
\newcommand\seealsosetup[2][]{%
\ifstrempty{#1}{%
- \setkeys{seealso}{#2}%
+ \kvsetkeys{seealso}{#2}%
}{%
- \def\do##1{\setkeys{seealso@##1}{#2}}%
- \forcsvlist{\do}{#1}}}
+ \edef\do##1{%
+ \noexpand\kvsetkeys{seealso@##1}{\unexpanded{#2}}}%
+ \docsvlist{#1}}}
\let\seenopage\see
\let\seealsonopage\seealso
\DeclareSeealsoMacro\seepage{see}{see}